Linux 用户和权限之ACL、sudo权限

目录

ACL 权限

开启 ACL

ACL 基本命令

sudo权限

visudo


ACL 权限

  • ACL 概述: ACL 是用于解决用户对文件身份不足的问题的

Linux 用户和权限之ACL、sudo权限_第1张图片

开启 ACL

[root@localhost ~]# dumpe2fs -h /dev/sda3
#dumpe2fs 命令是查询指定分区详细文件系统信息的命令
  • 选项:
    • -h 仅显示超级块中信息,而不显示磁盘块组的详细信息。
...省略部分输出...
Default mount options: user_xattr acl 
...省略部分输出...

  • 如果没有开启,手工开启分区的 ACL 权限:
[root@localhost ~]# mount -o remount,acl /
#重新挂载根分区,并挂载加入 acl 权限
  • 也可以通过修改/etc/fstab 文件,永久开启 ACL 权限:
[root@localhost ~]# vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl 1 1
#加入 acl
[root@localhost ~]# mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效

Linux 用户和权限之ACL、sudo权限_第2张图片

ACL 基本命令

  • getfacl 文件名  查询文件的 ACL 权限
  • setfacl  选项       文件名 设定 ACL 权限
    • -m 设定 ACL 权限
    • -b 删除 ACL 权限
    • -x:用户 删除单个用户的 ACL 权限
  • setfacl -m u:用户名:权限 文件名
  • setfacl -m g:组名:权限 文件名
    • setfacl -m u:aa:rwx /test 给 test 目录赋予 aa 是读写执行的 ACL 权限
  • setfacl -m u:cc:rx -R soft/ 赋予递归 ACL 权限,只能赋予目录
    • -R 递归
  • setfacl -m d:u:aa:rwx -R /test ACL 默认权限。
    • 注意:默认权限只能赋予目录
    • 注意:如果给目录赋予 acl 权限,两条命令都要输入
  • 递归与默认的区别:
    • setfacl -m u:cc:rx -R soft/         只对已经存在的文件生效
    • setfacl -m d:u:aa:rwx -R /test   只对以后新建的文件生效

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

Linux 用户和权限之ACL、sudo权限_第3张图片

Linux 用户和权限之ACL、sudo权限_第4张图片

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

Linux 用户和权限之ACL、sudo权限_第5张图片

Linux 用户和权限之ACL、sudo权限_第6张图片

  • setfacl -m u:cc:rx -R soft/         只对已经存在的文件生效
  • setfacl -m d:u:aa:rwx -R /test   只对以后新建的文件生效

Linux 用户和权限之ACL、sudo权限_第7张图片

Linux 用户和权限之ACL、sudo权限_第8张图片

  • ACL权限,一旦递归之后,不可避免的出现权限溢出

sudo权限

  • 赋予的权限越详细,普通用户得到的权限越小
  • 赋予的权限越简单,普通用户得到的权限越大
     
  • sudo 授权 给普通用户赋予部分管理员权限
    • /sbin/        在此目录下命令只有超级用户才能使用
    • /usr/sbin/  在此目录下命令只有超级用户才能使用

visudo

  • visudo 赋予普通用户权限命令,命令执行后和 vi 一样使用

Linux 用户和权限之ACL、sudo权限_第9张图片

  • 用户名/组名:代表 root 给哪个用户或用户组赋予命令,注意组名前加“%”
  • 用户可以用指定的命令管理指定 IP 地址的服务器。如果写 ALL,代表可以管理任何主机,如果写固定 IP,代表用户可以管理指定的服务器。
  • 可使用身份:就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略。
  • 授权命令:代表 root 把什么命令授权给普通用户。默认是 ALL,代表任何命令,这个当然不行。
    • 如果需要给那个命令授权,写入命令名即可,不过需要注意一定要命令写成绝对路径
  • 案例1
    • 比如授权用户 user1 可以重启服务器,则由 root 用户添加如下行:

[root@localhost ~]# visudo
user1 ALL= /sbin/shutdown –r now
[user1@localhost ~]$ sudo -l
#查看可用的授权

Linux 用户和权限之ACL、sudo权限_第10张图片

Linux 用户和权限之ACL、sudo权限_第11张图片

  • 案例2:
    • 授权一个用户管理你的 Web 服务器,不用自己插手是不是很爽,以后修改设置更新
      • 首先要分析授权用户管理 Apache 至少要实现哪些基本授权:
        • 1、可以使用 Apache 管理脚本
        • 2、可以修改 Apache 配置文件
        • 3、可以更新网页内容
  • 假设 Aapche 管理脚本程序为/etc/rc.d/init.d/httpd 。
  • 为满足条件一,用 visudo 进行授权:
[root@localhost ~]# visudo
user1 192.168.0.156=/etc/rc.d/init.d/httpd reload,\
/etc/rc.d/init.d/httpd configtest
  • 授权用户 user1 可以连接 192.168.0.156 上的 Apache 服务器,通过 Apache 管理脚本重新读取配置文件让更改的设置生效(reload)和可以检测 Apache 配置文件语法错误(configtest),但不允许其执行关闭(stop)、重启(restart)等操作。(“\”的意思是一行没有完成,下面的内容和上一行是同一行。)
  • 为满足条件二,同样使用 visudo 授权:
[root@localhost ~]# visudo
user1 192.168.0.156=/binvi /etc/httpd/conf/httpd.conf
  • 授权用户 user1 可以用 root 身份使用 vi 编辑 Apache 配置文件。以上两种 sudo 的设置,要特别注意,很多朋友使用 sudo 会犯两个错误:
    • 第一授权命令没有细化到选项和参数
    • 第二,认为只能授权管理员执行的命令。
  • 条件三则比较简单,假设网页存放目录为/var/www/html ,则只需要授权 user1 对此目录具有写权限或者索性更改目录所有者为 user1 即可。如果需要,还可以设置 user1 可以通过 FTP 等文件共享服务更新网页。
  • 案例3:
    • 授权 aa 用户可以添加其他普通用户
      • aa ALL=/usr/sbin/useradd 赋予 aa 添加用户权限.命令必须写入绝对路径
      • aa ALL=/usr/bin/passwd (错误写法)赋予改密码权限,取消对 root 的密码修改
      • aa ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
      • aa 身份 :
        • sudo /usr/sbin/useradd ee 普通用户使用 sudo 命令执行超级用户命令

【注】:参考尚硅谷沈超老师教程

你可能感兴趣的:(Linux基础)