用户和分组管理

用户组管理

Linux安全模型

  • 安全3A:
    认证:Authentication: 用户名和密码
    授权:Authorization: 用户的访问权限控制
    审计:Accouting|Audition: 用户的动作记录,监督权限的使用

  • Linux 安全上下文

运行中的程序:进程 (process)
以进程发起者的身份运行:
    root: /bin/cat
    lpx: /bin/cat

进程所能够访问资源的权限取决于进程的运行者的身份
  • 用户验证:
令牌token,identity    登录成功后才会发一个令牌,访问资源时匹配令牌,按令牌审核资格

linux用户:Username/UID        linux只认id不认用户名  
管理员:root,UID0
普通用户:UID1-65535
    系统用户:1-499(centos6),1-999(centos7)
    普通用户:500-60000(CentOS6),  1000-60000(CentOS7)
名称解析:名称转换
        Username <--> UID
        根据名称解析库进行:/etc/passwd
  • linux分组group
Linux 组:Groupname/GID
    管理员组:root, 0
    普通组:
        系统组:1-499(CentOS6), 1-999(CentOS7)
        普通组:500+, 1000+ (CENTOS7Linux 组的类别
    组类别1:
            管理员组
            普通用户组
                系统组
                登录组
        组标识:GroupID, GID
            管理员组:0
                普通用户组:1-65635
                    系统用户组:1-499(CentOS6), 1-999(CentOS7)
                    登录用户组:500-60000(CentOS6), 1000-60000(CentOS7)   

        名称解析:groupname <--> gid
            解析库:/etc/group  

    组类别2:
        用户的基本组
        用户的附加组

    组类别3:
        私有组:组名同用户名,且只包含一个用户;
        公共组:组内包含了多个用户;
  • 认证信息
通过比对事先存储的,与登录时提供的信息是否一致;
password:
    /etc/shadow
    /etc/gshadow

密码的使用策略:
    1、使用随机密码;
    2、最短长度不要低于8位;
    3、应该使用大写字母、小写字母、数字和标点符号四类字符中至少三类;
    4、定期更换;

加密算法:
    对称加密:加密和解密使用同一个密码;
    非对称加密:加密和解密使用的一对儿密钥;
        密钥对儿:
            公钥:public key
            私钥: private key
    单向加密:只能加密,不能解密;提取数据特征码;
        定长输出
        雪崩效应

        算法: 
            md5: message digest, 128bits
            sha:secure hash algorithm, 160bits
            sha224
            sha256
            sha384
            sha512

        在计算之时加salt,添加的随机数;
  • Linux 用户和组的主要配置文件:
/etc/passwd:用户的信息库
    name:password:UID:GID:GECOS:directory:shell
        name: 用户名
        password:可以是加密的密码,也可是占位符x;
        UID:
        GID:用户所属的主组的ID号;
        GECOS:注释信息
        directory:用户的家目录;
        shell:用户的默认shell,登录时默认shell程序;

/etc/shadow:用户密码
    用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段
        用户名:     登录用名
        加密的密码:  用户密码, 一般用sha512 加密
        最近一次修改密码的时间:  从197011 日起到密码最近一次被更改的时间
        最短使用期限:  密码再过几天可以被变更(0 表示随时可被变更)
        最长使用期限:   密码再过几天必须被变更(99999 表示永不过期)
        警告期段:     密码过期前几天系统提醒用户(默认为一周)
        过期期限:     密码过期几天后帐号会被锁定
        保留字段:    从197011日算起,多少天后账号失效

/etc/group:组的信息库
    group_name:password:GID:user_list
            group_name: 就是组名称
            password: 通常不需要设定,密码是被记录在
            GID: 组的ID名
            user_list:以当前组为附加组的用户列表(以分隔符为逗号)

linux管理用户组命令

  • useradd:创建用户
语法:useradd 选项 参数
选项: 
        -c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
        -d<登入目录>:指定用户登入时的启始目录;
        -D:变更预设值;
        -e<有效期限>:指定帐号的有效期限;
        -f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
        -g<群组>:指定用户所属的群组;
        -G<群组>:指定用户所属的附加群组;
        -m:自动建立用户的登入目录;
        -M:不要自动建立用户的登入目录;
        -n:取消建立以用户名称为名的群组;
        -r:建立系统帐号;
        -s<shell>:指定用户登入后所使用的shell;
        -u<uid>:指定用户id。
参数:用户名:要创建的用户名
实例:
        # useradd lpx                            #添加用户
        # useradd -r lpx                         #添加系统用户
        # useradd -d /home/lpx  lpx              #添加用户,并且指定,home目录
        # useradd -g mytest -d /home/lpx root      #添加用户,指定组,并且设定home目录
        # useradd -e 04/05/13 lpx                #添加用户,并给用户设置有效期
  • userdel:删除用户
语法:userdel 选项 参数
选项:     
        -f:强制删除用户,即使用户当前已登录;
        -r:删除用户的同时,删除与用户相关的所有文件。

参数:用户名:要删除的用户名。

实例:
        # userdel lpx       //删除用户lpx,但不删除其家目录及文件;
        # userdel -r lpx    //删除用户lpx,其家目录及文件一并删除;      
  • usermod:修改用户信息
语法:usermod 选项 参数
选项: 
        -c<备注>:修改用户帐号的备注文字;
        -d<登入目录>:修改用户登入时的目录;
        -e<有效期限>:修改帐号的有效期限;
        -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
        -g<群组>:修改用户所属的群组;
        -G<群组>;修改用户所属的附加群组;
        -l<帐号名称>:修改用户帐号名称;
        -L:锁定用户密码,使密码无效;
        -s<shell>:修改用户登入后所使用的shell;
        -u<uid>:修改用户ID        -U:解除密码锁定。

参数:登录名:指定要修改信息的用户登录名

实例:
        # usermod -G root lpx      # 将lpx用户添加到root组中
        # usermod -l lpx  lpx1     #修改lpx用户名为lpx1:
        # usermod -L lpx           #锁定账号lpx:
        # usermod -U lpx           #解除对lpx的锁定:


  • passwd 修改用户的认证信息,包括用户密码、密码过期时间等
语法:passwd 选项 参数
选项: 
        -d:删除密码,仅有系统管理者才能使用;
        -f:强制执行;
        -k:设置只有在密码过期失效后,方能更新;
        -l:锁住密码;
        -s:列出密码的相关信息,仅有系统管理者才能使用;
        -u:解开已上锁的帐号。

参数:用户名:需要设置密码的用户名。

实例:
        [root@localhost ~]# passwd lpx   //更改或创建lpx用户的密码;
        Changing password for user lpx.
        New UNIX password:          //请输入新密码;
        Retype new UNIX password:   //再输入一次;
        passwd: all authentication tokens updated successfully. //成功;

        [root@localhost ~]# passwd -l lpx    //锁定用户lpx不能更改密码;
        Locking password for user lpx.
        passwd: Success           //锁定成功;

        [lpx@localhost ~]# su lpx   //通过su切换到linuxde用户;
        [lpx@localhost ~]$ passwd      //linuxde来更改密码;
        Changing password for user lpx.
        Changing password for lpx
        (current) UNIX password:          //输入lpx的当前密码;
        passwd: Authentication token manipulation error     //失败,不能更改密码;

        [root@localhost ~]# passwd -d lpx//清除lpx用户密码;
        Removing password for user lpx.
        passwd: Success                         //清除成功;

        [root@localhost ~]# passwd -S lpx    //查询lpx用户密码状态;
        Empty password.                         //空密码,也就是没有密码;
  • groupadd:创建一个新的工作组
语法:groupadd 选项 参数
选项: 
        -g:指定新建工作组的id;
        -r:创建系统工作组,系统工作组的组ID小于500        -K:覆盖配置文件“/ect/login.defs”;
        -o:允许添加组ID号不唯一的工作组。
参数:组名:指定新建工作组的组名。
实例:
         # groupadd -g 344 lpx   建立一个新组,并设置组ID加入系统
         此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。  
  • groupdel:删除指定工作组
语法:groupdel  选项 参数
选项: 无
参数:组:要删除的工作组名。
实例:
        groupadd lv  //创建lv工作组
        groupdel lv  //lv这个工作组
  • groupmod:修改工作组信息
语法:groupmod 选项 参数
选项: 
        -g<群组识别码>:设置欲使用的群组识别码;
        -o:重复使用群组识别码;
        -n<新群组名称>:设置欲使用的群组名称。
参数:组名:指定要修改的工作的组名。

实例:
        # groupmod test -n test2         #将test组名换成test2
        # groupmod -g 1111 test2         #将test2的gid换成1111
  • gpasswd:管理工作组
语法:gpasswd 选项 参数
选项: 
        -a:添加用户到组;
        -d:从组删除用户;
        -A:指定管理员;
        -M:指定组成员和-A的用途差不多;
        -r:删除密码;
        -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。

参数: 指定要管理的工作组。

实例:
        #  gpasswd -A peter test2  #将peter设为test2组管理员
        #  gpasswd -a peter test2  #将用户peter加入到test2组
        #  gpasswd -d peter test2  #将用户peter从test2组中移出
  • chage:修改用户和密码的有效期限
语法:chage 选项 参数
选项: 
        -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
        -M:密码保持有效的最大天数。
        -w:用户密码到期前,提前收到警告信息的天数。
        -E:帐号到期的日期。过了这天,此帐号将不可用。
        -d:上一次更改的日期。
        -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
        -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

参数:指定修改的用户
实例:
        可以编辑/etc/login.defs来设定几个参数,以后设置口令默认就按照参数设定为准:
            PASS_MAX_DAYS   99999
            PASS_MIN_DAYS   0
            PASS_MIN_LEN    5
            PASS_WARN_AGE   7

        当然在/etc/default/useradd可以找到如下2个参数进行设置:
            # useradd defaults file
            GROUP=100
            HOME=/home
            INACTIVE=-1
            EXPIRE=
            SHELL=/bin/bash
            SKEL=/etc/skel
            CREATE_MAIL_SPOOL=yes
            通过修改配置文件,能对之后新建用户起作用,而目前系统已经存在的用户,则直接用chage来配置。

        我的服务器root帐户密码策略信息如下:
            [root@centos7 ~]# chage -l root
            最近一次密码修改时间                    : 3月 12, 2013
            密码过期时间                            :从不
            密码失效时间                           :从不
            帐户过期时间                           :从不
            两次改变密码之间相距的最小天数          :0
            两次改变密码之间相距的最大天数          :99999
            在密码过期之前警告的天数                :7

        我可以通过如下命令修改我的密码过期时间:
            [root@centos7 ~]# chage -M 60 root
            [root@centos7 ~]# chage -l root
                    最近一次密码修改时间                : 3月 12, 2013
                    密码过期时间                       : 5月 11, 2013
                    密码失效时间                       :从不
                    帐户过期时间                       :从不
                    两次改变密码之间相距的最小天数       :0
                    两次改变密码之间相距的最大天数       :60
                    在密码过期之前警告的天数            :9
                    然后通过如下命令设置密码失效时间:

            [root@centos7 ~]# chage -I 5 root
            [root@centos7 ~]# chage -l root
                    最近一次密码修改时间              : 3月 12, 2017
                    密码过期时间                     : 5月 11, 2019
                    密码失效时间                     : 5月 16, 2019
                    帐户过期时间                     :从不
                    两次改变密码之间相距的最小天数     :0
                    两次改变密码之间相距的最大天数     :60
                    在密码过期之前警告的天数          :9
  • chsh:更换登录系统是使用的shell
语法:chsh 选项 参数
选项: 
        -s, --shell         # 指定 用户的 登录 shell. 
        -l, --list-shells   # 显示 /etc/shells 中的 shell 列表, 然后退出. 

参数:用户名:要改变默认shell的用户。
实例:
         # chsh -l                #查看系统安装shell
         # echo #SHELL            #查看当前使用shell
         # chsh -s  /bin/zsh      #把当前shell改为zsh
  • id:显示指定用户的用户和组信息
语法:id 选项 参数
选项: 
        -g或--group   显示用户所属群组的ID        -G或--groups   显示用户所属附加群组的ID        -n或--name    显示用户,所属群组或附加群组的名称。
        -r或--real    显示实际ID        -u或--user    显示用户ID
参数:指定用户名

实例:
        id            #显示当前用户的信息
        id lpx        #显示lpx的信息
  • su:切换当前用户,需输入账号密码
语法:su 选项 参数
选项:
         -c<指令:执行完指定的指令后,即恢复原来的身份;
        -f:适用于csh与tsch,使shell不用去读取启动文件;
        -l:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
        -m,-p:变更身份时,不要变更环境变量;
        -s<shell>:指定要执行的shell;

参数:用户:需要切换身份的目标用户

实例:
        # su lpx       #切换用户,原用户环境变量
        # su -  lpx  #切换用户,新用户环境变量
         su -c ls root       #切换用户执行命令,执行后返回原用户

猜你喜欢

转载自blog.csdn.net/lv8549510/article/details/80258410