• ACL权限

1、  权限概述

2、  开启ACL

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

如果没有开启,手工开启分区的ACL权限:

[root@localhost ~]# mount -o remount,acl /
#重新挂载根分区,并挂载加入acl权限
也可以修改/etc/fstab文件,永久开启ACL权限:
[root@localhost ~]# vi /etc/fstab
UUID=03502b44-af6b-494a-9c8d-7f3b96ae9dfa /  ext4 defaults  1 1  #加入acl
[root@localhost ~]# mount -o remount /
#重新挂载文件系统或重启系统,使修改生效

3、  ACL基本命令

getfacl 文件名              查询文件的acl权限
setfacl 选项  文件名        设定acl权限
选项:  -m                  设定权限
        -b                  删除权限
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  -b d:u:aa:rwx -R /test    acl默认权限。
注意:默认权限只能赋予目录,如果给目录赋予acl权限,两条命令都要输入
-R 递归  
-m    u:用户名:权限       只对已经存在的文件生效
-m    d:u:用户名:权限     只对未来要新建的文件生效

         4、最大有效权限mask

[root@localhost~]# setfacl -m m:rx project/
#设定mask权限为r-x。使用“m:权限”格式
[root@localhost~]# getfacl project/
# file: project/
# owner: root
# group: root
user::rwx
group::r-x                            #effective:r-x
mask::r-x                             #mask权限变为了r-x
other::r-x

5、  删除ACL权限

[root@localhost ~]# setfacl -x u:aaproject/
#删除指定用户和用户组的ACL权限
[root@localhost ~]# setfacl -bproject/
#会删除文件的所有的ACL权限

   二、audo授权       给普通用户赋予部分管理员权限

/sbin/            此目录下命令只有超级用户才可以使用
/usr/sbin/

1、  root身份:

visudo     赋予普通用户权限命令,命令执行后和vi一样使用
98 root ALL=(ALL)  ALL
#用户名    被管理主机的地址=(可使用的身份)  授权的命令(绝对路径)
105 # %wheel  ALL=(ALL)  ALL
#%组名      被管理的主机的地址=(可使用的身份)  授权的命令(绝对路径)
  用户名/组名:代表root给哪个用户或用户组赋予命令,注意组名前加“%”

      用户可以用指定的命令管理指定IP地址的服务器。如果写ALL,代表可以管理任何主机,如果写固定IP,代表用户可以管理指定的服务器。(可以通过“man 5 sudoers”帮助可以查看到这里的IP指定的是用户可以管理哪个IP地址的服务器。如果是一台独立的服务器,这里写ALL和你服务器的IP地址,作用是一样的。而写入网段,只有对NIS服务器这样用户和密码集中管理的服务器才有意义)。这里写的IP地址,不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何IP地址来管理当前服务器。

可使用身份:就是把来源用户切换成什么身份使用,(ALL)代表可以切换成任意身份。这个字段可以省略

授权命令:代表root把什么命令授权给普通用户。默认是ALL,代表任何命令,这个当然不行。如果需要给命令授权,写入命令就可以了,不过要注意一定要写命令绝对路径

2、  举例

1)  举个例子,比如授权用户wulaoer可以重启服务器,则由root用户添加如下行:

[root@localhost ~]# visudo
99 wulaoer ALL=/sbin/shutdown -r now
[wulaoer@localhost ~]$ sudo –l                          
#在普通用户上查看需要输入root的密码
用户 wulaoer 可以在该主机上运行以下命令:
(root) /sbin/shutdown -r now              #授权的命令

2)  举例授权用户管理web服务,不要自己插手以后修改设置更新网页什么都可以不要管理了。

首先要分析授权用户管理Apache至少要要实现那些基本授权:

1、  可以使用Apache管理脚本

2、  可以修改Apache配置文件

3、  可以更新网页内容

假设Apache管理脚本程序为/etc/rc.d/init.d/httpd

为满足条件一,用visudo进行授权:
[root@localhost~]# visudo
wulaoer  192.168.216.159=/etc/rc.d/init.d/httpd,/etc/rc.d/init.d/httpd configtest
授权用户wulaoer可以连接192.168.216.159上的Apache服务器,通过Apache管理脚本重新读取配置文件让更
改的设置生效(reload)和可以检测Apache配置文件语法错误(configtest),但不允许其执行关闭(stop)、
重启(restart)等操作。
为满足条件二,同样使用visudo授权:
[root@localhost~]# visudo
wulaoer  192.168.216.159=/binvi  /etc/httpd/cong/httpd.conf
授权用户wulaoer可以使用root身份使用vi编辑Apache配置文件。
以上两种sudo的设置,要特别注意,很多朋友使用sudo会犯两个错误:第一,授权命令没有细化到选项和参数;
第二,认为只能授权管理员执行的命令。
条件三则比较简单,见识网页存放目录为/var/www/html,则只需要授权wulaoer对此目录具有写权限或者索性更
目录所有者为wulaoer即可。如果需要,还可以设置wulaoer可以通过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命令执行超级用户命令