11 03 2021

五、Linux用户管理和服务管理

一、用户管理命令

        摘要:

                用户信息文件: /etc/passwd

                        user1:x:500:500::/home/user1:/bin/bash

                        图片.png

                        第一列:用户名

                        第二例:密码位(x代表设置了密码)

                        第三列:UID                用户ID

                                0:                       超级用户

                                1-499:                系统用户(伪用户,不允许登录linux,绝对不允许删除,是用来启动linux服务或者命令或者程序的)

                                >500:                 普通用户        (默认500-60000)

                        第四列:GID                 初始组ID

                        第五列:用户说明

                        第六列:家目录

                        第七列:用户登录之后的权限

                                    /bin/bash

                        

                        影子文件:        /etc/shadow        (用户密码保存文件,权限000,root也要wq!才能保存)

                        组信息文件:    /etc/group

                            sc : x : 500 :

                            组名:组密码位:组ID:组中附加用户

                        图片.png

                        windows创建的用户都在user组

                        图片.png

                    

                    图片.png

                       


        1、添加用户

            useradd    用户名    添加用户

            useradd    选项    用户名

            选项:

                    -g    组名    指定初始组                不要手工指定

                    -G    组名    指定附加组,把用户加入组,使用附加组

                    -c     说明     添加说明

                    -d     目录    手工指定家目录,目录不需要事先建立

                    -s     /bin/bash    手工指定用户登录之后的权限

                    -u    uid:        指定UID

                    

                    图片.png

                

                    useradd    -g    aa    bb        添加bb用户,同时指定初始组为aa

                    useradd     -G    user1    aa         添加用户aa,指定附加组为user1

                   

                    gpasswd    -a    用户名    组名    

                    useradd     -g    组名    用户名

                    

                    user1:

                    初始组:每个用户初始组只能有一个,一般都是和用户名相同的组作为初始组

                    附加组:每个用户可以属于多个附加组,要把用户加入组都是加入附加组

        2、设定密码

                    passwd    用户名

                    passwd                    改变当前用户密码

                    passwd    user1        改变user1用户密码

        3、删除用户

                    userdel    -r    用户名            -r连带家目录一起删除

        4、添加组

                    groupadd    组名

        5、删除组

                    groupdel    组名        注意:组中没有初始用户

        6、把已经存在的用户加入组

                     gpasswd    -a    用户名    组名            把用户加入组

                     图片.png

                     gpasswd    -d    用户名    组名            把用户从组中删除 

二、用户相关命令

        1、id    用户名            显示用户的UID,初始组合附加组

                     图片.png                                              

        2、su    -    用户名        切换用户身份            - 连带环境变量一起切换  

             env    查看Linux操作环境        

三、ACL权限    用来解决用户对文件身份不足的问题       

        举例:/work          项目提交目录

                所有者、所属组有提交更改创建权限,其他人无任何权限

                leigong --> 所有者

                lggroup --> 所属组

                /work/      权限 770

        操作:

                mkdir    /work

                chmod    770    /work/

                useradd     leigong

                groupadd    lggroup

                gpasswd    -a     leigong    lggroup   (所有者加入组)

                将所有者leigong加入到lggroup组中

                gpasswd    -a    user1    lggroup      (用户user1加入组)

                将用户user1加入到lggroup组中

                chown    leigong:lggroup    /work

                ll    -d    /work/

                图片.png  

        1、getfacl    文件名    查询文件的acl权限

        2、setfacl    选项    文件名    设定acl权限

                            -m                   设定权限

                            -b                    删除权限

               图片.png   

              班主任以5权限进到了work目录

               图片.png

             删除facl权限

             图片.png  

             

               setfacl    -m    u:用户名:权限    文件名

               setfacl    -m    g:组名:权限        文件名

                

                setfacl    -m    u:aa:rwx    /test            给test目录赋予aa是读写执行的facl权限

                setfacl    -m    u:cc:rx    -R    soft/        递归赋予acl权限,只能赋予目录

                -R    递归

                setfacl    -b    /test                                删除acl权限

                setfacl    -x    u:用户名    文件名             删除指定用户的ACL权限      

        3、setfacl    -m d:u:bzr:5    -R    /work/        acl设置默认权限   d(default) 

                图片.png          

                

                图片.png

                注意:默认权限只能设置目录

                注意:如果给目录赋予acl权限,两条命令都要输入

                setfacl    -m    u:用户名:rx    -R  文件名            只对已经存在的文件生效       

                setfacl    -m    d:u:bzr:rx    -R    文件名            只对未来要新建的文件有效 

四、输出重定向和多命令顺序执行

        1、输出重定向        (把应该输出到屏幕的输出,重定向到文件)

                >    覆盖的方式写进文件

                >>    追加的方式写进文件

                ls    >    aa    覆盖到aa

                ls    >>    aa    追加到aa

                ls    fdhfjsolk    2>>aa    错误信息记录到aa文件        2    错误信息        注意:错误输出,不能有空格

                图片.png    

               掌握:

                       ls    >>    aa    2>&1                        错误和正确都可以输入到aa,可以追加,  2&1把标准错误重定向到标准正确输出

                       ls    >>    aa    2>>/tmp/bb          正确信息输入aa,错误信息输入bb

五、服务和进程管理

        进程管理三个主要任务:

                判断服务器健康状态        正常、非法            top

                查看所有正在运行的进程            ps    pstree

                强制终止进程            kill    pkill

                服务器合理资源范围            70/90:内存占用不超过70%,CPU占用不超过90% 

                      

        一、进程查看      

            1、ps    aux        查看当前系统所有运行的进程     

                    -a    显示前台所有进程

                    -u    显示用户名

                    -x    显示后台进程

            服务器遵循70/90原则,即内存占用率不超过70%,CPU占有率不超过90% !!!


图片.png

                    user:        用户名

                    PID:         进程ID                PID=1的进程永远是/sbin/init    系统启动的第一个进程

                    %CPU:        CPU占用百分比

                    %MEM:       内存占用百分比  

                    VSZ:            虚拟内存占用量        KB

                    RSS:          固定内存占用量

                    TTY:           登录终端     tty1-7本地终端        1-6字符,7图形;pts/0 - 255    远程终端

                    STAT:        进程状态    S:睡眠    D:不可唤醒    R:运行    T:停止    Z:僵死    W:进入内存交换    X:死掉的进程    <:高优先级    N:低优先级    L:被锁进内存    s:含子进程    +:位于后台    l:多线程      

                    START:       进程触发时间

                    TIME:         占用CPU时间

                    COMMAND:    进程本身

         2、pstree    查看进程树

                pstree    -p    查看进程树(包括inode号)

                图片.png

         3、top

                图片.png

            

             第一行:系统当前时间    系统持续时间    登录用户数量    1,5,15分钟之前的平均负载

             第二行:进程总数         进程总数125个,1个运行,124个休眠

             第三行:CPU占用率            %id空闲辈分比

             第四行:内存使用    总共        使用        空闲        缓存

             第五行:swap使用 

             可通过1,5,15分钟之前的平均负载、CPU空闲率、内存空闲率判断服务器的基本压力

             操作命令:

                    M:内存排序

                    P: CPU排序

                    q: 退出

        4、进程管理    终止进程     (没事别老杀进程,apache、mysql等进程都有启动终止命令)

                kill    信号    PID        结束单个进程

                        -9    强制

                killall    -9    进程名        结束一类进程

                pkill     -9    进程名         结束一类进程   


                w     判断登录用户            

                图片.png

                pkill    -9    -t    终端号        把某个终端登录的用户踢出去(只有超级用户才能提其他用户)

                pkill    -9    -t    pts/0            把user1用户踢下去,踢完之后user1用户连接状态变成了红色

                图片.png     

六、Linux服务管理

        默认情况下,所有的服务管理命令(如:service、ntsysv、chkconfig)都不能识别源码包安装的服务        

        一、分类

            RPM包安装的服务

            1、独立的服务  (独立服务放在内存,直接响应速度快;缺点占内存)

                    启动:

                        A:service    服务名    start|stop|restart

                        B:/etc/rc.d/init.d/服务名    start      标准启动

                    自启动:

                        A:chkconfig    --level    2345(开机级别)    httpd    on|off

                        B:vi    /etc/rc.local  

                                    /etc/rc.d/init.d/httpd start   (建议用第二个)

            2、基于xinnetd的服务   (xinetd服务自己占内存,它管理的服务部占内存,缺点慢;;用得越来越少)

                图片.png

              

                ntsysv

                源码包安装的的服务

                    启动

                        /usr/local/apache2/bin/apachectl    start

                    自启动

                        vi    /etc/rc.local

                              /usr/local/apache2/bin/apachectl    start              

        二、系统默认安装的服务

                1、确定服务分类

                     chkconfig    --list        查看RPM包安装的服务的自启动状态

                        运行级别:0-6

                        0        关机

                        1        单用户模式

                        2        不完全多用户,不包含NFS服务

                        3        完全多用户,字符界面

                        4        未分配

                        5        图形界面

                        6        重启                           

                        

                        init    0        关机

                        init    6        重启