centos 7 用户创建、用户/文件权限管理

多行重定向:
            <<终止符 开始
            >终止符 结束
            例:
                ~]# cat <                 > asfdsaf
                > asfd
                > EOF
                asfdsaf
                asfd

管道:(表示符“|” 用来连接命令)
    命令1|命令2|命令3...
        1、将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
        2、STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
        3、最后一个命令会在当前shell进程的子shell进程中执行命令
    例:
        ls | tr 'a-z' 'A-Z'

tee -a 不覆盖前面的文件:
    tee [-a] 文件名    -a:表示追加
    例:
        ls | tee -a text.txt

seq 生成序列
    seq [起始] 终止 [步长]
    起始:默认从1开始
    终止:必须有
    例:
        seq 1 10 2

安全3A:
    Authentication        认证
    Authorization        授权
    Accouting|Audition     审计

    $1     md5
    $6    sha512

    主要配置文件:
        /etc/passwd        用户及其属性信息(姓名、UID等)
        /etc/group         组及其属性信息
        /etc/shadow        用户密码及其相关属性
        /etc/gshadow    组密码及其相关属性


tr 命令:(删除和转换字符)
    tr [OPTION]... SET1 [SET2]
    选项:
        -c,-C,--complement     : 取反
        -d,--delete         : 删除所有属于第一字符集的字符
        -s,--squeeze-repeats: 把连续重复的字符以单独一个字符表示
        -t,--truncate-set1    : 将第一个字符集对应字符转化为第二字符集对应的字符

        [:alnum:] :字符和数字
        [:alpha:] :字母
        [:digit:] :数字
        [:lower:] :小写字母
        [:upper:] :大写字母
        [:punct:] :标点符号
        [:space:] :空白字符
        [:graph:] :图形字符
    例:
        tr ‘a-z’ ‘A-Z’< /etc/issue 小写转大写字母

用户与组的管理:
    passwd命令:
        选项:
            -d     删除指定用户密码
            -l     锁定指定用户
            -u     解锁指定用户
            -e     强制用户下次登录修改密码
            -f     强制操作
            -n mindays    指定最短使用期限
            --stdin     从标准输入接受用户密码
                例:echo "PASSWORD" | passwd --stdin USERNAME

    主要管理命令:
        用户:(存放于/etc/passwd)
            useradd        创建用户
            usermod        修改用户信息
            userdel        删除用户信息

        组:(存放于/etc/group)

            组库文件解析:
                grgname:x:Gid:user1...
                    (1)grgname        组名    
                    (2)x            组密码占位符
                    (3)Gid            组ID
                    (4)user1        以此组为附加组的用户列表

            groupadd    创建组
                groupadd [选项] group
                选项:
                    -g,--gid Gid:    指明组Gid(centos 6 500+ / centos 7 1000+)
                    -r,--system:    创建系统组(1-499 / 1-999)
                例如:
                    ~]# groupadd testgrp
                    ~]# tail -1 /etc/group
                    ~]# group -g 2000 mygrp
                    ~]# tail -1 /etc/group
                    ~]# group -r hive
                    ~]# group -r -g 306 mariadb

            groupmod    修改组信息
                groupmod [选项] GROUP
                选项:
                    -g,--gid:    修改组GID
                    -n,--new-name :    修改组名
                例如:
                    ~]# groupmod -g 3000 mygrp
                    ~]# tail /etc/group

            groupdel    删除组
                groupdel [选项] GROUP
                例如:
                    ~]# groupdel mariadb
                    ~]# groupdel hive
                    ~]# groupdel mariadb

            groupmems 命令:
                -g,--group groupname 更改指定组
                -a,--add username 指定用户加入组
                -d,--delete username 从组中删除用户
                -p,--purge 从组中清除所有成员
                -l,--list  显示组成员列表
                例:(从cs组中删除deng用户)
                    groupmems -d deng -g cs 

            groups命令:
                查看用户的所属组                    

        用户:(存放于/etc/passwd)
            用户库文件解析:
                name:password:Uid:Gid:GECOS:directory:shell
                    (1) name           用户名
                    (2) password     用户密码占位符
                    (3) Uid         用户ID
                    (4) Gid         用户主组ID
                    (5) GECOS         用户描述字段
                    (6) directory     用户家目录路径
                    (7) shell         用户默认登录shell程序文件路径

                ~]# whatis passwd:查看/etc/passwd格式字段说明;

            创建用户时的默认配置文件:
                /etc/login.defs
                    定义了:mail目录路径、密码相关的期限(最长、最小、警告)和密码最少长度、最小用户uid、最大用户uid、最小系统用户uid、最大系统用户uid、最小组gid、最大组gid、最小系统组gid、最大系统组gid、是否自动创建家目录等内容;

                /etc/default/useradd
                    定义默认设置了:用户的家目录路径、默认shell、目录骨架等内容;

               创建用户时家目录的环境配置文件:就是创建用户后,系统会自动创建用户家目录且会在里面自动创建几个固定文件即骨架目录(.bash_logout  .bash_profile  .bashrc  .mozilla);是从/etc/skel里复制到家目录的;
                /etc/skel:家目录骨架;

             useradd命令:添加用户
                useradd [选项] 登录名
                选项:
                    -c,--comment COMMENT:设定用户的注释信息,一般为用户的Full Name;
                    -d,--home /PATH/TO/HOME_DIR:设定用户家目录路径;目标事先不能存在,否则会有警告,不会得到skel相关文件给用户;
                    -g,--gid GROUP:设定用户的基本组组名或GID;
                    -G,--groups GROUP1[GROUP2,...[GROUPN]]:设定用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;
                    -m,--create-home:强制创建家目录;
                    -M:不创建用户家目录,即使系统在 /etc/login.defs中的设置 (CREATE_HOME) 为 yes;
                    -r, --system:创建系统用户;
                    -s,--shel SHELL:设定用户的默认shell(是shell的路径,要位于/etc/shells文件中);用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd中的SHELL变量选择默认的登录shell;
                    -u, --uid UID:设定用户的UID;用户 ID 的数字值。此值必须为唯一的,除非使用了 -o选项,此值必须非负,默认使用大于等于 UID_MIN,且大于任何其他用户ID 最小值;
                    -o,--non-unique:允许使用重复的UID创建用户账号;
                例:
                    ~]# useradd -u 3003 gentoo        按照给定ID创建用户
                    ~]# id gentoo 
                    ~]# useradd -g 4004 ubuntu        设定ubuntu用户组为4004组,但组4004要先存在;
                    ~]# useradd -u 3100 -G 4004 mint设定mint用户uidWie3100,附加组为4004;
                    ~]# useradd -s /bin/csh fedora设定默认shell为csh;
                    ~]# useradd -M hadoop            设定不创建家目录;
                    ~]# tail -1 /etc/passwd
                    ~]# useradd -r hive                系统用户没有家目录;
                    ~]# tail -1 /etc/passwd  
                    ~]# usermod -G deng cs          为cs用户添加附属组deng

            userdel命令:删除用户
                userdel [选项] 登录名
                    -r, --remove:删除用户时,同时一并删除用户家目录和用户邮箱;            

            密码文件格式:(/etc/shadow)
                密码文件/etc/shadow格式:9个字段,用冒号分隔
                登录名:加密了的密码:最近一次更改密码的日期:密码的最短使用期限:密码最长使用期限:密码过期提前警告天数:非活动期:账户禁用日期:保留字段
                     1、登录名:有效登录名;
                    2、加密的密码:密码格式为:
                        !!$加密算法$salt$加密的密码字符串
                        !!表示锁定;
                    3、最近一次更改密码的日期:表示从1970年1月1日开始的天数,0表示用户应该在下次登录系统时更改密码,空字段表示密码年龄功能被禁用;
                    4、密码最短使用期限:用户一次更改密码之后,要等多长时间才再次被允许更改密码;空或0表示随时可修改密码;
                    5、密码最长使用期限:就是有效期,相对于上次修改密码后的天数;99999天无限制,如果最大密码年龄小于最小密码年龄,用户将会不能更改密码;
                    6、最短警告期限:登录就警告;
                    7、非活动期:密码过期后账号禁用之前,就是宽限期;登录后必须先改密码;空为没限定;
                    禁用日期:  
                    用户名:加密密码:
  
                gpasswd命令:为组添加密码(存在目录/etc/gshadow)
                     /etc/gshadow文件格式:
                         组名:加密了的组密码:管理员:成员

                         1、组名:必须是系统中已经存在的有效组;
                         2、加密了的组密码:密码格式为:
                         !!$加密算法$salt$加密的密码字符串
                         为空时只有组成员可以获取组权限;以叹号开始意味着密码被锁定;
                         3、管理员:
                         4、成员:必须是一个逗号分隔的用户名列表,成员无需组密码;

                    gpasswd [选项] group
                        -a, --add USERNAME:向组中添加用户;
                        -d, --delete USERNAME:从此组中移除用户;
                    注意:root管理员切换至任何其它用户无需认证密码;普通用户切换至其他用户,都需要密码;

                newgrp命令:登录到一个新组
                    newgrp GROUPNAME
                    临时登录其他组,此时会用到组密码;就是让用户临时切换到其它组为主组;

                chage命令:change age,更改用户密码过期信息
                    chage [选项] 登录名
                        -d, --lastday LAST_DAY;更改密码上一次更改日期,格式为YYYY-MM-DD;
                        -E, --expiredate EXPIRE_DATE:更改账户的失效时间,格式为YYYY-MM-DD;
                        -I, --inactive INACTIVE:更改密码过期后多少天账户失效;
                        -m, --mindays MIN_DAYS:更改密码多长时间内不允许修改密码,0为可在任何时间改密码;
                        -M, --maxdaysMAX_DAYS:更改密码最长使用期限;
                        -l:显示具体数据;

                课外实践:
                    其它几个命令:chsh,chfn,pwck,grpck,finger

                        chsh命令:更改用户登录shell
                            chsh [-s shell] [-l] [-u] [-v] [username]
                            选项:
                                -l, --list-shells:显示/etc/shells里的shell列表;
                                -u, --help:显示帮助;
                                -v, --version:显示版本信息;

                        chfn命令:更修改/etc/    passwd用户注释中的各种信息:全名、办公地址、办公电话、住宅电话;
                            chfn  [-f full-name] [-o office] ,RB [ -p office-phone] [-h home-phone] -u] [-v] [username]
                            选项:
                                -u:显示帮助;
                                -v:显示版本;

                        pwck命令:检查密码文件的完整性
                        检查 /etc/passwd 和 /etc/shadow格式正确、数据有效;
                            pwck [选项] [passwd [ shadow ]]

                            检查的项目有:
                                正确的字段数;
                                一个唯一且有效的用户名;
                                一个有效的用户和组标识符;
                                有效的主组;
                                有效的主目录;
                                有效的登录 shell

                           当指定第二个文件参数或 /etc/shadow 在系统中存在时,启用 shadow 检查;
                           这些检查是:
                               每个密码项都有对应的影子相,反之亦然;
                               密码在影子化了的文件中指定;
                               影子项有正确的字段数;
                               影子项在影子文件中是唯一的;
                               最后一次的密码更改时间不是被设成了一个将来的时间;

                        grpck命令:检查组文件的完整性
                            grpck [选项] [group [ shadow ]]

                        finger命令:
                            显示用户描述字段
                                -l: 多行显示 (更加直观)
                                -s: 单行显示

        认证:(密码存放于/etc/{shadow、gshadow})
            passwd命令:密码管理命令;存放在/etc/shadow
                passwd  [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [--stdin] [username]
                选项:
                    -l:锁定密码;
                    -u:解锁密码;
                    -f:强制;
                    -d:清除密码;
                    -e:修改禁用日期:
                    -n:修改密码最短使用期限;
                    -x:修改密码最长使用期限;
                    -w:修改密码过期后警告期限;
                    -i:修改非活动期限;
                    --stdin:从标准输入设置密码;

                     (1)passwd:修改自己的密码;
                     (2)passwd USERNAME:修改指定用户密码;

                    密码复杂度:
                         (1)不能少于8个字符:
                         (2)不能使用与过去的密码太相似的密码;
                         (3)应该私有四类字符中的至少三类;
                例如:
                     ~]# passwd:管理员可直接修改密码无需旧密码,且不受密码复杂度的限制;

                        --stdin:从标准输入接收密码;
                            echo "PASSWD" | passwd --stdin USERNAME

                su命令:switch user
                    切换时有两种机制:
                         (1)不读取目标用户的配置文件(非登录式切换,半切换);
                         su USERNAEM
                         (2)读取并执行用户的配置文件(登录式切换,完全切换);
                             su -l USERNAME
                             su - USERNAME

                    -c command, --command=command:仅以指定用户的身份运行此处指定的命令,而不执行真正的身份切换操作;
                    su 与 su - 的区别:
                        su 切换用户却不切换工作环境 , su - 同时切换用户与工作环境
                        直接现象就是su切换当前目录不变,环境变量不变;su -则相反


        文件权限管理:
            用户分为三类:
                (1)所属用户         owner , u
                (2)所属组         group , g
                (3)其他        other , o
            权限种类:
                r: readable     可读
                w: writabel     可写
                x: excutable    可执行

                文件:
                    r: 可获取文件的数据,使用文件查看类工具获取其内容
                    w: 可修改文件的数据
                    x: 可将文件运行为程序
                目录:
                    r: 可使用ls命令显示文件列表,但是不可以-l获取详细信息,也不可使用cd到目录中
                    w: 可修改此目录的文件列表(创建或删除文件)
                    x: 可使用ls -l命令获取其下的详细信息,也可以cd到目录中去

                权限格式:
                    rwx rwx rwx 一次顺序为:
                        owner: u 
                        group: g
                        other: o
                    权限组合机制:
                        以owner为例:
                            ---:000:0
                            --x:001:1
                            -w-:010:2
                            -wx:011:3
                            r--:100:4
                            r-x:101:5
                            rw-:110:6
                            rwx:111:7
                chmod命令:
                    主要作用:修改文件模型位change file mode bits;
                       chmod [OPTION]... MODE[,MODE]... FILE...
                       chmod [OPTION]... OCTAL-MODE FILE...
                       chmod [OPTION]... --reference=RFILE FILE...
                    常用选项:
                        -R, --recursive:递归修改;慎重使用;
                    例如:
                        ~]# cp -r /etc/shel /tmp/skel/
                        ~]# ls -ld /tmp/skel/
                        ~]# ls -la /tmp/skel/
                        ~]# chmod -R 700 /tmp/skel/  

                chown命令:
                    仅管理员有权限,即能改文件的属主又能改属组,也可同时改;
                    chown [OPTION]... [OWNER][:[GROUP]] FILE...
                    chown [OPTION]... --reference=RFILE FILE...

                        --reference=RFILE:RFILE表示参考权限模型;

                      常用选项:
                          -R, --recursive:递归修改;
                    例如:     
                    ~]# chown gentoo /tmp/test/fstab:仅改文件的所属用户;
                    ~]# chown :mageedu /tmp/test/fstab:仅改文件的所属组;
                    ~]# chown gentoo:mageedu /tmp/test/fstab     同时修改所属用户和所属组
                    ~]# chown -R --reference=/home/fedora /tmp/fstab

                chgrp命令:
                    修改文件的所属组
                    chgrp [OPTION]... GROUP FILE...
                    chgrp [OPTION]... --reference=RFILE FILE...

            练习题:
                (1)当用户docker对/testdir 目录无执行权限时,意味着无法做哪些操作?
                    不可以cd进入目录、不能使用touch /testdir/f1创建文件、不可cp
                (2)当用户mongodb对/testdir 目录无读权限时,意味着无法做哪些操作?
                (3)当用户redis 对/testdir 目录无写权限时,该目录下的只读文件file1是否可修改和删除?
                (4)当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1是否可修

你可能感兴趣的:(个人)