• 随堂练习 用户和组的权限管理


    用户信息文件

    [root@localhost ~]# cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin

    从左往右,分七个字段,均用冒号分隔开

    列    说明

    root    用户名,即用户登录的名称

    x     基于安全考虑,密码转移到了/etc/shadow中,此处 x 的表示此用户的密码从 /etc/shadow 获得

    0     此处的0 表示这个用户的编号,即UID;每个用户都有一个唯一的UID,默认root 的UID 为0 ,新创建的第一个用户默认UID 为1000,后面的新建的用户UID 按1001,1002,...依次分配

    0     此处的 0 表示这个用户所属的主组id 号码,即GID

    root    表示该用户的说明信息

    /root    此处表示用户的家目录,或者初始化工作目录,ROOT 用户的家目录默认在/root。普通用户的家目录,默认在/home/username

    /bin/bash  最后的字段代表用户默认使用shell 类型,root 和普通用户默认使用的是 /bin/bash

    其中 UID 和 GID 的编号由系统自动分配的范围是 0 - 65535

    注意:

    1)root 用户是作为超级用户或超级管理,对整个Linux系统具有最高权限;当然在Linux判断是否是超级用户,不是看用户名是否为root,而是看其UID 是否为 0,换句话说用户的UID是 0, 则其就是超级用户

    2)CentOS6中默认是将 1 - 499作为系统用户的 UID ;而 CentOS7 以上的版本是将 1 - 999 作为系统用的 UID,剩下的 UID 则分配给普通用户使用

    /etc/shadow 格式(分为9 段,以冒号隔开)

    [root@localhost ~]# cat /etc/shadow
    root:$6$beCVCBuPw1E/DM4U$WhNxLB4GIFOPntAsVrf2Hyuyksq6N5lamkhR7Vvn4NBgJLWZTSFee70Joeyzq8R.KEP6oq1SQrTKxE87pPZlK0::0:99999:7:::
    bin:*:17834:0:99999:7:::
    daemon:*:17834:0:99999:7:::

    列              说明

    root            此处的用户名代表这行密码是属于 /etc/passwd 文件中对应的同名用户的密码信息

    $6$beCVCBuPw1E/DM...    这行内容同时使用三个 $ 符号分隔成三字段。第一段代表加密使用的单向加密算法,使用数字表示,1 表示 MD5算法,6 表示 SHA512 算法。第二个代表加密算法使用的随机因子,我们一般称为盐(salt),对加密加密时,使用 salt,可以避免相同的密码,加密后值一样。salt 和加密算法一起构成了密码最终的加密方式。第三个内容代表加密后最终结果,称为密文,由于是单向加密,根据加密算法和盐后是很难反向推导出密码的明文的,所以比较安全的,如果以感叹号“!” 开头的密码字段表示密码已被锁定

    17834           此处的数字,表示修改密码的日期时间,具体的数值代表1970 年 1 月 1日 到修改密码的那天的天数  (我这里是 空,表示没有)

    0              再次修改密码需要经过的天数,如果为 0 代表随时可以修改密码

    99999            本次修改密码后,再经过对手天后密码将过期

    7               密码过期前发出提示消息的时间, 7 代表,在密码过期前 7 天开始,给用户发生提示信息,要求用户更改密码

                  密码过期后还可以继续使用的天数,超过此时间,用户将不可登录,此项为空,表示密码过期后仍可登录

                  从 1970 年 1 月 1 日到用户帐号被禁用的天数。在这个时间以后用户将不能登录,此项为空,表示此用户帐号永久有效

                   保留内容,为以后新增功能预留的位置

    用户组信息文件

    /etc/group 格式

    [root@localhost ~]# cat /etc/group
    root:x:0:
    bin:x:1:
    daemon:x:2:

    列         说明

    root      代表组名称

    x        代表组管理密码,x 为占位符,具体密码的密文在 /etc/gshadow 文件中保存

    0        代表组编号,即 GID

           代表用户,属于此附加组的用户列表,多个用户之间使用逗号进行分隔

    /etc/gshadow 格式

    [root@localhost ~]# cat /etc/gshadow
    root:::
    bin:::
    daemon:::

    列         说明

    root      组名称

             组管理密码,以感叹号 ! 开头的密码字段表示密码已被锁定

             该管理组的管理员用户帐号,多个用户之间用“,”分隔

           属于此附加组的用户帐号列表,多个用户之间用“,”分隔

    创建用户和用户组

    useradd 语法格式

    useradd [OPTIONS] LOGIN

    选项          说明

    -u UID         指定创建用户的 UID

    -o           配合 -u 选项, 不会检查 UID 的唯一性

    -g GID         指明用户所属主要组,可为组的名称,也可以是 GID

    -c COMMENT        用户的注释信息

    -d HOME_DIR        以指定的路径为家目录

    -s SHELL        指明用户的默认 shell 程序,可用列表在 /etc/shells 文件中

    -G GROUP1[,GROUP2]    为用户指明附加组,组须事先存在

    -N            不创建和用户同名的私用组做主组

    -r             创建系统用户 CentOS6:ID< 500,CentOS7:ID< 1000

    -m           创建家目录,一般用于系统用户

    -M            不创建家目录,一般用于非系统用户

    /etc/default/useradd  文件内容说明

    [root@localhost ~]# cat /etc/default/useradd
    # useradd defaults file
    GROUP=100          # 在useradd 使用 -N 或 /etc/login.defs 中USERGROUPS——ENAB=no 时,表示创建用户时不创建同用户名的主组,而使用此处指定的组作为主组

    HOME=/home      # 把用户的家目录建在 /home 中

    INACTIVE=-1    # 是否启用帐号过期设置, -1 表示不启用
    EXPIRE=      # 帐号过期时间,不设置表示不启用
    SHELL=/bin/bash  # 新建用户默认的 shell 类型

    SKEL=/etc/skel    # 指定模板目录,新建用户时会自动复制此目录作为新建用户的家目录内容
    CREATE_MAIL_SPOOL=yes   #是否创建用户 Mail 文件

    创建组

    groupadd 语法格式

    groupadd [options] GROUP

    选项              说明

    -f ,--force          当组已经存在时,返回成功,使用此选项将忽略 -g 选项

    -g,--gid GID         指定创建组的 GID

    -h,--help            显示帮助

    -K,--key KEY=VALUE       使用指定值,覆盖 /etc/login.defs 的默认值

    -o,--non-unique         允许使用已存在的 GID 创建新的组

    -p,--password PASSWORD   使用加密的密码

    -r,--system          创建系统组

    修改用户信息

    usermod 语法格式

    usermod [options] LOGIN

    选项              说明

    -c,--comment COMMENT    修改用户的描述信息,即修改 /etc/passwd 文件中的第 5 个字段

    -d, --home HOME_DIR      修改用户家目录

    -e,--expiredate EXPIRE_DATE  设置帐号的有效期,即修改 /etc/shadow 文件第 8 个字段,EXPIRE_DATE 要格式为 YYYY-MM-DD

    -f,--inactive INACTIVE      指定天数,即修改 /etc/shadow 文件中的第 7 个字段

    -g,--gid GROUP          修改为指定主组

    -G,--groups GROUPS       修改附属组

    -a,--append          配合 -G 选项, 增加附属组

    -h, --help            查看帮助

    -l, --login NEW_LOGIN      修改用户名

    -L,--lock            锁定用户

    -m, --move-home        配合 -d 选项,移动家目录数据到新的家目录

    -o,--non-unique         允许使用重复的 UID

    -p,--password PASSWORD    使用加密的密码

    -s,--shell SHELL         修改使用新的 shell 类型

    -u,--uid UID           修改 UID

    -U,--unlock            解锁用户

    passwd 格式

    passwd [option...] <accountName>

    选项            说明

    --stdin  使用管道时传入密码的方式,常用于 shell 脚本

    -l     同 usermod 命令的 -L 命令效果一样,在shadow 的密码前加上叹号

    -u    同 usermod 命令的 -U 命令效果一样,取消 -l 命令添加的叹号

    -e    修改 shadow 第三个内容为 0 ,用户登录时要求重置密码

    -n    修改密码后多少天内不能修改,shadow 文件的第 4 个 内容

    -x    修改密码的最长游戏的天数,shadow 文件的第 5 个内容

    -w    修改密码过期前警告的天数,shadow 文件的第 6 个内容

    -i      修改密码失效后还可以使用的宽限时间,shadow 文件第 7 个内容

    -S    显示出用户的密码的相关信息

    修改用户信息

    chage 命令格式

    chage [options] LOGIN

    选项      说明

    -d    修改 shadow 文件的第三个内容,格式为 YYYY-MM-DD

    -m      修改 shadow 文件的第四个内容,最早修改密码的天数

    -M      修改 shadow 文件的第五个内容,最晚修改密码的天数

    -W     修改 shadow 文件的第六个内容,密码失效前的提示天数

    -I(大写字母 i )     修改 shadow 文件的第七个内容,密码失效后宽限的时间

    -E    修改 shadow 文件的第八个内容,格式为 YYYY-MM-DD

    修改组信息

    groupmod 命令格式

    groupmod [options] GROUP

    选项            说明

    -g,--gid GID      修改组的 GID

    -h,--help         查看帮助

    -n,--new-name NEW_GROUP  修改组名

    -o,--non-unique     允许组的 GID 不唯一

    -p,--password PASSWORD    设置组的加密密码

    组管理命令

    groupmems 语法格式

    groupmems [options] [action]

    选项            说明

    -g,--group groupname    指定要操作修改那个组

    -a, --add username      指定添加一个组的成员

    -l,list            列出所有的组成员

    -d, --delete username      指定删除一个组的成员

    -p,--purge          清空所有的用户

    -h, --help          帮助

    gpasswd 命令格式

    gpasswd [option] GROUP

    选项              说明

    -a,--add USER        添加一个用户到该组中

    -d,--delete USER       将一个用户从该组中删除

    -r,--delete-password       取消组的密码

    -A,--administrator ADMIN...    设置组的管理员

    -M,--members USER...      设置组的成员

    -h,--help           查看帮助

    删除用户和用户组

    userdel 用户名

    groupdel 组

    使用 su 命令进行身份切换

    su 命令格式

    su [options] [-] [USER [arg]...]

    选项                说明

    -m,-p,--preserve-environment    保留环境变量,不重设 HOME,SHELL,USER 和 LOGNAME 变量

    -g,--group <group>          指定主要组

    -G,--supp-group <group>        指定附属组

    -,-l,--login               开启 login shell ,如果后面没有指定用户,默认为root 执行命令

    -c,--command <command>        执行命令

    -s,--shell <shell>            运行指定的 shell

    -h,help               帮助

    -v, --version               查看版本

    文件权限管理

    [root@localhost ~]# ls -l
    total 8
    -rw-------. 1  root root 1457 Jun 29 17:12 anaconda-ks.cfg
    -rwxr-xr-x. 1 root root 813 Jun 29 17:22 netifname_eth0.sh
    drwxr-xr-x 2 root root 6 Jul 1 16:12 test
    -rw-r--r-- 1    root root 0 Jul 1 11:39 test-2020-06-30.log

    每个文件的左边一共有 10 个字符,第一个代表文件类型,比如 - 代表普通文件,d 代表目录文件,从第二个到第十个字符开始就是文件权限的描述信息。

    以 test 文件为例,文件属性信息中有root root 两项,从左往右分别代表文件的所有者为root,和文件所属组为 root,其他用户共三类用户

    r  (4) 对文件表示可否可读取内容,对目录表示可以使用 ls 命令查看目录中的文件列表

    w (2)   对文件表示可否修改文件内容,对目录表示可以在目录中创建文件,删除文件

    x (1)   对文件表示可否执行,对目录表示是否可以切换至目录中,访问目录内的文件

    文件的属主和属组

    chown 命令格式

    chown [option]... [owner] [:[group]] file...

    选项          说明

    -h          后面的文件如果是链接文件,只针对链接文件设置,而非默认对链接文件指向的文件

    -R          对目录中的所有文件进行递归设置

    --reference=RFILE    参考 RFILE 的文件权限设置权限

    文件的默认权限

    umask 语法格式

    umask [option] [mode]

    选项     说明

    -S    以模式形式,而非默认的数字

    -p    打印 umask 命令和值,可作为输入

    mode    可以是模式形式,如:u=rwx,g=rx,o=rx,也可以是数字形式,如 :0022

    文件的特殊权限

    SUID 特殊权限

    [root@localhost ~]# ls -al /etc/shadow
    ----------. 1 root root 563 Jun 29 17:12 /etc/shadow

    [root@localhost ~]# ls -l /bin/passwd
    -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd

    其中passwd 文件的属主执行权限位是 s,代表 passwd 属主可以执行,同时具有 SUID 权限

    当一个程序没有可执行权限,但是设置了 SUID 权限,属主的可执行权限位显示为大写字母 S

    范例

    设置 SUID 权限

    1)去除 SUID 权限

    [root@localhost ~]# chmod u-s /bin/passwd

    2)添加 SUID 权限

    [root@localhost ~]# chmod u+s /bin/passwd

    SGID特殊权限

    1)此权限是设置在文件所属组上的执行权限位上。SGID 可以设置在 二进制文件和目录上

    2)当 SGID 设置在二进制文件中时,功能和 SUID 类似,运行这个二进制程序时,运行程序时,最终得到的权限将继承这个程序的所属组的权限,而非默认的执行程序的用户本身的权限

    3)当 SGID 设置在目录时,用户在这个目录中创建的新文件的属组将自动继承此目录的属组

    范例

    设置 SGID 权限

    添加 SGID 权限

    [root@localhost ~]# chmod g+s  test

    设置 Sticky 特殊权限

    当一个目录其他用户位有可执行权限,并设置了 Sticky 权限时,使用 t 表示,当其他权限位没有可执行权限时还设置了 Sticky 权限,则是以 T 表示

    范例

    1)添加 Sticky 权限

    [root@localhost ~]# chmod o+t  test

    2)去除 Sticky 权限

    [root@localhost ~]# chmod o-t  test

    3)数字法设置特殊权限

    [root@localhost ~]# chmod 1755  test    # 1 表示 Sticky 权限

    drwxr-xr-t 2 root root 6 Jul 1 16:12 test

    4)数字法添加特殊权限

    [root@localhost ~]# chmod 6755  test  # 由 SUID 的 4 和 SGID 的 2 两个特殊权限相加得到 6 的权限

    文件的特殊属性

    chattr 命令格式

    chattr [-RVf] [-+=ia] files...

    选项   说明    

    -R   递归处理,将指定目录下的所有文件及子目录一并处理

    -V   显示版本信息和设置的权限

    -f    隐藏大部分的错误信息

    -    表示去掉属性

    +    表示添加属性

    =    表示重设属性

    i    表示不能删除,修改,重命名和创建硬链接

    a    表示不能删除,重命名,和创建硬连接,但可以追加内容

    lsattr 命令格式

    lsattr [-RVadv] [files...]

    选项  说明

    -a   显示所有文件和目录,包括以“.”为名称开头字符的文件 

    -d   显示目录名称,而非其内容

    -R   递归处理,将指定目录下的所有文件及子目录一并处理

    -v   显示文件或目录版本

    -V   显示版本信息

    文件的 FACL

    setfacl 命令格式

    setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

    选项            说明

    -m,--modify-acl    更改文件的访问控制列表

    -M,--modify-file=file  从文件读取访问控制列表来设置

    -x,--remove-file=acl  根据文件中访问控制列表移除条目

    -X,--remove-file=file  从文件读取访问控制列表条目并删除

    -b,--remove-all    清除 FACL

    -k,--remove-default  移除默认访问控制列表

    --set=acl        设定替换当前的文件访问控制列表

    --set-file=file      从文件中读取访问控制列表条目设定

    --mask        重新计算有效权限掩码

    -n,--no-mask     不重新计算有效权限掩码

    -d,--default      应用到默认访问控制列表的操作

    -R,--recursive     递归操作子目录

    -L,--logical      依照系统逻辑,跟随符号链接

    -P,--physical     依照自然逻辑,不跟随符号链接

    --restore=file      恢复访问控制列表,和 “getfacl -R” 作用相反

    --test          测试模式,并不真正修改访问控制列表属性

    -v,--version      显示版本并退出

    -h,help        显示本帮助信息

    ACL 生效和判断的顺序如下:

    1)先判断访问者是否为文件所有者,如果是所有者权限生效,不再往下继续

    2)判断是否是ACL 中自定义用户,如果是,对应的 ACL 生效,不再往下继续

    3)判断是否是属于 ACL 自定义组,如果是,对应的 ACL 生效,不再往下继续

    4)其他人

    面试题

    1)解释 drwx rwx rwx 中每个字符表示什么?

    答:

    第一段:drwx:目录文件,属主有读,写,执行权限

    第二段:rwx:属组有读,写,执行权限

    第三段:rwx:其他人有读,写,执行权限

    2)目录权限为711,对其他人而言权限是(B

    A,可执行  B,可进入  C,可读,可执行  D,可写入

    3)/etc/fstab 复制到 /data/,至少需要什么权限?

    答:

    1)cp 命令

    2)有执行权限

    3)/etc/fstab    有读权限

    4)/data/  写权限和执行权限   

  • 相关阅读:
    二叉树的创建与遍历浅析
    sscanf用法简析
    DB、ETL、DW、OLAP、DM、BI关系 ZT
    惊闻企业Web应用生成平台 活字格 V4.0 免费了,不单可视化设计器免费,服务器也免费!
    商业智能BI-基础理论知识总结 ZT
    【BI学习笔记】适合集成到项目里的BI:Wyn Enterprise
    活字格 QQ 群和客户
    快速开发平台在中国的发展前景
    活字格Web应用平台学习笔记 8
    活字格Web应用平台学习笔记 7
  • 原文地址:https://www.cnblogs.com/xuanlv-0413/p/13220734.html
Copyright © 2020-2023  润新知