Linux权限管理 chattr命令、lsattr命令、sudo命令
chattr命令
chattr命令用来修改文件系统的权限属性
选项:
选项 | 选项说明 |
+ |
増加权限 |
- |
删除权限 |
= |
等于某权限 |
i |
如果对文件设置属性,那么不允许对文件进行删除、改名,也不能添加和修改数据; 如果对目录设置 i 属性,那么只能修改目录下文件中的数据,但不允许建立和删除文件 |
a |
如果对文件设置 a 属性,那么只能在文件中増加数据,但是不能删除和修改数据; 如果对目录设置 a 属性,那么只允许在目录中建立和修改文件,但是不允许删除文件 |
Linux 中的绝大多数文件都默认拥有 e 属性,表示该文件是使用 ext 文件系统进行存储的, 而且不能使用"chattr -e"命令取消 e 属性 |
例如:
1. 给文件赋予属性
#建立测试文件 [root@localhost ~]# touch ftest #增加属性 [root@localhost ~]# chattr +i ftest #删除属性 #被赋予i属性后,root不能删除 [root@localhost ~]# rm -rf flest rm:无法删除"ftesr":不允许的操作 #也不能修改文件中的数据 [root@localhost ~]# echo 111>>ftest -bash:ftest:权限不够
2. 给目录赋予i属性
#建立测试目录 [root@localhost ~]# mkdir dtest #再建立一个测试文件abc [root@localhost dtest]# touch dtest/abc #给目录赋予i属性 [root@localhost ~]# chattr +i dtest/ #dtest目录不能新建文件 [root@localhost ~]# cd dtest/ [root@localhost dtest]# touch bed touch:无法创建"bcd":权限不够 #但是可以修改文件内容 [root@localhost dtest]# echo 11>>abc [root@localhost dtest]# cat abc 11 #不能删除 [root@localhost dtest]# rm -rf abc rm:无法删除"abc":权限不够
[root@localhost ~]# chattr -i ftest
[root@localhost ~]# chattr -i dtest/
#建立备份目录 [root@localhost ~]# mkdir -p /back/log #赋予a属性 [root@localhost ~]# chattr +a /back/log/ #可以复制文件和新建文件到指定目录中 [root@localhost ~]# cp /var/log/messages /back/log/ #但是不允许删除 [root@localhost ~]# rm -rf /back/log/messages rm:无法删除"/back/log/messages":不允许的操作
lsattr 命令
命令格式:
[root@localhost ~]# lsattr 选项 文件名 选项:
选项:
选项 | 选项说明 |
-a |
显示所有文件和目录 |
-d |
如果目标是目录,则仅列出目录本身的属性,而不会列出文件的属性 |
例如:查看/back/log/目录,其拥有a和e属性
sudo命令
[root@localhost ~]# visudo …省略部分输出… root ALL=(ALL) ALL # %wheel ALL=(ALL) ALL
这两行是系统为我们提供的模板,我们参照它写自己的就可以了
格式说明:
root ALL=(ALL) ALL
#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
#%wheel ALL=(ALL) ALL
#%组名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)
用户名/组名:代表 root 给哪个用户或用户组赋予命令,注意组名加"%"。
用户可以用指定的命令管理指定 IP 地址的服务器。如果写 ALL,则代表用户可以管理任何主机;如果写固定 IP,则代表用户可以管理指定的服务器。如果我们在这里写本机的 IP 地址,则不代表只允许本机的用户使用指定命令,而代表指定的用户可以从任何 IP 地址来管理当前服务器。
可使用的身份:就是把来源用户切换成什么身份使用,(ALL) 代表可以切换成任意身份。这个字段可以省略。
授权命令:代表 root 把什么命令授权给普通用户。默认是 ALL,代表任何命令,这当然不行,如果需要给哪个命令授权,则只需写入命令名即可。不过需要注意,一定要写绝对路径。
授权用户 zhangsan 可以重启服务器
由 root 用户添加,如下行:[root@localhost ~】# visudo
zhangsan ALL=/sbin/shutdown -r now
#切换成zhangsan用户 [root@localhost ~]# su - zhangsan #查看授权的命令列表 [zhangsan@localhost ~]$ sudo -l #需要输入zhangsan用户的密码 [sudo] password for zhangsan: User zhangsan may run the following commands on this host: (root) /sbin/shutdown -r now
可以看到zhangsan 用户拥有了 shutdown -r now的权限
提示输入密码为 zhangsan 普用户的密码,是为了验证操作服务器的用户是不是 zhangsan 用户本人。zhangsan 用户需要执行时,只需使用如下命令:[zhangsan@localhost ~]$ sudo /sbin/shutdown -r now
zhangsan 用户即可以重启服务器。注意,命令写绝对路径,或者把 /sbin 路径导入普通用户 PATH 路径中,否则无法执行。