用户管理

编程

请叫我贪财的文字搬运工。终于下心补了一篇博客。关于用户管理的一些简单情况。只是笔记,没有教学。

用户管理

请叫我贪财的文字搬运工。终于下心补了一篇博客。最后唠叨一句,云海天的排版太难用了。参考链接:http://c.biancheng.net/view/3059.html

一、基础概念
    linux是一个多任务多用户的操作系统。所谓的Multi_tasks和Multi-Users
    
    认证(Authentication):资源是有限的,通过某种识别技术,将其于系统上某个账户关联起来的过程,就是认证过程。
    授权(Authorization):给通过认证后的账号分配权限的过程。
    审计(Audition):对账户使用权限记录的过程。
    
    
    用户名:用户的登录凭证。计算机容易识别的是数字,人容易识别的字符,所以需要一种数据库来进行数字凭证和字符凭证的转化。
            
    用户组:用户的一种容器。可以把组看成一种角色。以方便对批量用户管理、授权的一种方式。
    
    用户类别:Linux中每个用户是通过User Id (UID)来唯一标识的
        管理员:                管理员的UID为0
        普通用户:
            系统用户:            系统用户的UID为        1-499(CENTOS6)        1-999(CENTOS78)
            登录用户:            登录用户的UID为        500-60000(CENTOS6)    1000-60000(CENTOS78)

    用户组类别1:Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID) 来唯一标识的。
        管理员组:                管理员的GID为0
        普通用户组:
            系统组:            系统组的GID为        1-499(CENTOS6)        1-999(CENTOS78)
            登录组:            登录组的GID为        500-60000(CENTOS6)    1000-60000(CENTOS78)

    用户组类别2:
        基本组:
        附加组:
        
    用户组类别3:
        私有组:组名同用户名,且只包含了一个用户
        公共组:组内可以包含多个用户


    密码的复杂性原则:
        1、使用随机密码
        2、最短长度不要低于8位
        3、应该使用大写字符、小写字符、数字、标点符号四类字符中至少三类
        4、定期更换
        
    加密算法
        对称加密:加密解密都使用同一种密钥。
        非对称加密:加密解密使用的一对密钥
            公钥:    使用公钥加密只能使用与之配对的私钥进行解密。    公钥加密;私钥解密
            私钥:    使用私钥加密只能使用与之配对的公钥进行解密。    私钥加密;公钥解密
        单项加密:只能加密,不能解密,主要用于提取数据特征码。
            单向加密算法的特征:
                1、定长输出
                2、雪崩效应
            
            单向加密算法:
                md5        定长输出128位
                sha1    安全的hash算法,定长输出160位
                sha224
                sha256
                sha384
                sha512
               

二、与用户相关的配置文件
        /etc/passwd
        /etc/shadow
        /etc/group
        /etc/gshadow
        /etc/default/useradd
        /etc/login.defs
        /etc/skel/*
        


        /etc/passwd简介:
            root:x:0:0:root:/root:/bin/bash
            以冒号位分隔符,分隔成7个自然段
            
            1>    用户名
            2>    密码占位符或者密码
            3>    UID
            4>    GID
            5>    用户注释信息
            6>    用户家目录位置
            7>    用户的默认登录SHELL
        
      

   /etc/shadow简介:
            root:$6$b4tMixbfyTY1Ck2J$bpdKlcQs5YF643oeeLqIbNPrehMn.gb8hfdVhLFVw5xy06j7H.5Jkt2PyJUDPO5odjVvnZCETMU50upFTW/::0:99999:7:::
            以冒号位分隔符,分隔成9个自然段
            
            1>    用户名
            2>    加密的密码串
                    以$为分隔符
                    第一段为加密算法
                        1表示为md5
                        2表示为sha1
                        3表示为sha224
                        4表示为sha256
                        5表示为sha384
                        6表示为sha512
                    第二段为加密的杂质
                    第三段为真正的加密串
            3>    最近一次密码的修改时间
                这个时间段的计算法是从1970-01-01开始到现在多少天
                0表示用户下次登陆时必须更改密码
                空表示禁用此功能
            4>    密码最短使用期限
            5>    密码最长时使期限
            6>    密码到期前的提醒(警告)时间
            7>    密码到期后的宽限时间
            8>    此账户的失效期。这个时间段的计算法是从1970-01-01开始到现在多少天
            9>    保留字段
            


        /etc/group简介:
            root:x:0:
            以冒号位分隔符,分隔成4个自然段
            
            1>    用户组名
            2>    组密码的占位符
            3>    GID
            4>    附加组用户列表
        


        /etc/gshadow简介:
            netadmin:$6$XLxGGrM9LBWIQTg$nbfw1qWuxVJVZaM6BKNOCrD75Cnd9FkxGcBAkVR6P02LgYcbKPev.SQ3H./u8VuNofDWhaFOtK7.PhQAV2I/::gentoo
            以冒号位分隔符,分隔成4个自然段
            s
            1>    用户组名,同/etc/group文件中的组名相对应
            2>    组密码,对于大多数用户来说,通常不设组密码,一般为空或者!,表示改用户组没有设置用户组密码,也没有设置组管理员。
            3>    组管理员。设置组管理员来替root用户完成一部分组管理工作。现在一般都使用sudo类命令代替了,所以组管理员已经很少设置使用了。
            4>    附加组用户列表,同/etc/group文件最后字段保持一致。
          

     
        /etc/default/useradd简介:
            此文件定义了使用useradd创建用户使用的默认配置
            
            GROUP=100                    #定义了创建新用户属于哪个公共组ID。但现在都是使用了私有组机制,所以此项定义已不再生效。默认创建新用户的私有组与用户名同名,GID默认为当前最大GID数值加1
            HOME=/home                    #定义了创建新用户的家目录存放位置为/home目录下,与用户名同名的目录
            INACTIVE=-1                    #定义了新用户的默认密码到期的宽限天数(shadow文件第7个字段),这里默认值是 -1,代表所有新建立的用户密码永远不会失效
            EXPIRE=                        #定义了新用户的账户失效时间(shadow文件第8个字段),这里默认为空,表示新用户没有过期时间
            SHELL=/bin/bash                #定义了新用户的默认登录shell
            SKEL=/etc/skel                #定义了新用户家目录有哪些配置文件。
            CREATE_MAIL_SPOOL=yes        #定义了新用户是否启用邮箱,默认是创建.也就是说,对于所有的新建用户,系统都会新建一个邮箱,放在 /var/spool/mail/ 目录下,和用户名相同.
            


        /etc/login.defs简介
            此文件定义了创建新用户,对用户的一些基本属性做出默认设置。如:GID UID 密码最大长度等

            MAIL_DIR /var/spool/mail     #创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱,比如 lamp 用户的邮箱是 /var/spool/mail/lamp。
            PASS_MAX_DAYS 99999            #密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。
            PASS_MIN_DAYS 0                #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。
            PASS_MIN_LEN 5                #指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。
            PASS_WARN_AGE 7                #指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。
            UID_MIN 500                 #指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始(centos7是从1000开始)。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。
            UID_MAX 60000                #指定用户最大的 UID 为 60000。
            GID_MIN 500                    #指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。
            GID_MAX 60000                #用户 GID 最大为 60000。
            CREATE_HOME yes                #指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。
            UMASK 077                    #指定用户主目录的权限,这里默认设置为 077的是遮罩码,所以用户家目录的实际权限是700
            USERGROUPS_ENAB yes            #指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。
            ENCRYPT_METHOD SHA512        #指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。


        /etc/skel/*目录简介
            此目录中定义了新用户家目录下有哪些配置文件。大多数为隐藏文件
            .bash_logout                  #用户登出配置脚本文件
            .bash_profile                  #用户私有环境配置文件
            .bashrc                        #用户私有别名配置文件
    
   

三、用户管理命令:
    
    groupadd命令 [OPTIONS] GROUP_NAME            创建用户组
        选项:
            -r        创建系统系统组,系统组的GID小于500或1000
            -g ###    创建GID为指定###的用户组。系统默认为最大GID+1
    
    groupmod命令
        groupmod [option] GROUP_NAME
        选项:
            -g    ###                修改组GID,再不加-o选项时不能与其它组的GID相同
            -n    NEW_GROUP_NAME    修改组名
            -o                    常与-g一起使用,修改组的GID和别的组的GID相同
    groupdel命令
        groupdel GROUP_NAME        删除组
            -f                    强制删除
    
    gpasswd命令
        gpasswd [OPTION] GROUP
            gpasswd     GROUP        设置GROUP组密码
            -a    USERNAME        向GROUP组中添加用户USERNAME,也就是让USERNAME以GROUP为附加组
            -d    USERNAME        从GROUP组中移除用户USERNAME
            -A user1,user2,...  设置有管理权限的用户列表
    
  
    useradd命令
        useradd [OPTION] USER_NAME
        -u ###                        指定新用户的UID为###,如果不指定会默认以其中最大UID+1.同时如果没有指定GID时一般GID和指定的UID相同。
        -g ###                        指定新用户的基本组GID为###,同时指定的基本组必须存在。
        -G GROUP1,GOURP2...        指定新用户的附加组,多个附加组需要用英文逗号分开,同时指定的附加组必须存在。
        -c "String"                    指定用户的注释信息
        -d /PAHT/TO/SOMEDIR      指定新用户的家目录坐在位置。默认是/home/下与用户同名的目录。其中家目录下的文件是复制/etc/skel目录下的所有文件。
        -s    SHELL                  指定新用户的SHELL,同时,此SHELL必须是/etc/shells文件内记录的shell类型才行。部分发行版会指定为/bin/false效果等同于/sbin/nologin
        -r 或--system                创建系统用户
        -m                            强制创建家目录
        -M                            强制不创建家目录,即使指定了家目录的位置
        -f    #                        表示指定用户的宽限期,即用户密码到期后宽限的那几天.-1表示禁用此功能
        -D                            显示或设置创建新用户默认配置属性信息,读取的是/etc/default/useradd文件内的信息
                -D -s  SHELL     设定创建用户SHELL类型的默认值,此更改同时会修改/etc/default/useradd文件内的信息,所以为永久有效更改
                -D -e #              设定创建用户账户过期时间的默认值。此更改同时会修改/etc/default/useradd文件内的信息,所以为永久有效更改
                -D -f #               设定创建用户宽限期时间的默认值。此更改同时会修改/etc/default/useradd文件内的信息,所以为永久有效更改
                -D -b /PATH/    设定创建用户家目录存放位置的默认值。此更改同时会修改/etc/default/useradd文件内的信息,所以为永久有效更改
    
    usermod命令        
        usermod [OPTION] USER_NAME
        -u ###                    修改UID
        -g ###/GROUP_NAME        修改GID,修改的GID必须得存在
        -G GROUP1,GOURP2...        指定新用户的附加组,多个附加组需要用英文逗号分开,同时指定的附加组必须存在。还有,现在指定的附加组会覆盖原来的附加组信息,如果想要追加需要加上-a选项
        -a                        只能和-G选项一起使用。追加附加组
        -c "STRING"                修改注释信息
        -d /PATH/TO/SOMEDIR        修改家目录,用户原来家目录内有文件是不会被转移到新目录内。如果想要连同目录内文件一块转移需要使用-m选项
        -m                        只能和-d选项一起使用,用来移动原来家目录内的文件到新家目录内
        -l NEW_NAME                修改用户名
        -s    SHELL                修改SHELL
        -L                        锁定用户的密码。即禁止用户登录,小技巧也就是再用户密码前加上!
        -U                        解锁用户的密码,即允许用户登录,移除密码前的!
        -e YYYY-MM-DD:             修改用户账号的过期日期
        -f INACTIVE:             修改用户账户的非活动期限,即宽限期
    
    userdel命令
        username [OPTION] USER_NAME
        -r                        默认情况下删除用户账户时是不会删除用户的家目录和邮箱的,加上-r选项就会连同邮箱和家目录一并删除
        -f, --force             强制
    passwd命令
        passwd  [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
        passwd                     修改自己的密码
        passwd USERNAME            仅root使用,强制修改USERNAME的密码
        -l                        锁定用户的密码。即禁止用户登录,小技巧也就是再用户密码前加上
        -u                        解锁用户的密码,即允许用户登录,移除密码前的!
        -d                        清楚用户的密码

        -n                        指定密码的最短使用时间
        -x                        指定密码的最长使用时间
        -w                        指定密码的警告期
        -i    ###                    指定密码的宽限期
        -e    YYYY-MM-DD            指定用户账户的过期时间
        
        --stdin                    从标准输入接受用户密码,然后更改,Ubuntu没有此选项
    
    chage命令
        -d LAST_DAY             更改密码的时间
        -m MIN_DAYS                修改密码最短使用时间
        -M MAX_DAYS                修改密码最长时间时间
        -W WARN_DAYS            修改密码到期前的警告时间
        -I INACTIVE             密码过期后的宽限期
        -E EXPIRE_DATE             用户的有效期
        -l                         显示密码策略
        

    id命令
        用来显示用户的实际和有效的用户信息
        id                        什么也不跟,表示显示当前登录用户的用户信息
        id USERNAME                显示USERNAME的用户信息
        
        -u                        仅显示有效的UID
        -g                        仅显示基本组ID
        -G                        仅显示用户所属组的所有组的ID
        -n                        显示组名,而不是ID。但是需要配合-u -g -G一起使用
        -r                        显示真实ID
    

    newgrp命令
        newgrp [-] GROUP        临时切换用户的基本组。如果用户要切换的组为用户的附加组则不用输入密码,如果不属于则需要输入密码
            备注:切换用户相当于进入子shell,可以使用exit退出
                    如果加上- 相当于完全切换,可以初始化用户环境。不加相当于不完全切换。
    
    su命令
        su [options...] [-] [user [args...]]    
            -l                     登录式切换。相当于 su - UserName。会读取目标用户的配置文件,同时切换家目录,属于完全切换
            -c <COMMAND>         不会切换登录,只是利用对方身份执行一次COMMADN命令
            -s    SHELL            指定切换登录的shell类型。
        
        su USERNAME        非完全切换(非登录式切换),切换用户时不会读取对方的配置文件进行初始化,也不会切换家目录。
        su - USERNAME    完全切换(登录式切换),切换用户时会去读对方的配置文件进行初始化,也会切换家目录。
        
        完全切换和非完全切换都时以子shell的身份进行的。退出需要使用exit
        root 切换切换普通用户时是不需要知道对方的登录密码的。

    chsh命令
        仅管理员使用,更改指定用户的SHELL类型
            chsh USERNAME
            chsh -s /bin/bash gentoo
    
    whoami命令
        查询当前登录用户是谁
    
    pwch命令、grpck命令
        用来检查用户的配置文件是不是有问题。主要用于手工批量创建账户的检查
    
    groupmems命令
        可以管理附加组的成员关系
        groupmems [options] [action]
        -g, --group groupname         #更改为指定组 (只有root)
        -a, --add username             #指定用户加入组
        -d, --delete username        #从组中删除用户
        -p, --purge                 #从组中清除所有成员
        -l, --list                     #显示组成员列表

    groups命令
        可查看用户组关系
        groups [OPTION].[USERNAME]...

以上是 用户管理 的全部内容, 来源链接: utcz.com/z/515548.html

回到顶部