Linux权限管理 chattr命令、lsattr命令、sudo命令

chattr命令

chattr命令用来修改文件系统的权限属性linux

chatrr 只有 root 用户可使用,用来修改文件系统的权限属性,创建凌驾于 rwx 基础权限之上的受权。
chatrr 命令格式以下:
[root@localhost ~]# chattr [+-=] [选项] 文件或目录名

选项:bash

 选项 选项说明

+服务器

増加权限工具

-测试

删除权限this

=spa

等于某权限.net

i日志

若是对文件设置属性,那么不容许对文件进行删除、更名,也不能添加和修改数据;code

若是对目录设置 i 属性,那么只能修改目录下文件中的数据,但不容许创建和删除文件

a

若是对文件设置 a 属性,那么只能在文件中増加数据,可是不能删除和修改数据;

若是对目录设置 a 属性,那么只容许在目录中创建和修改文件,可是不容许删除文件

e

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":权限不够
此时,flest 文件和 dtest 目录都变得很是强悍,即使你是 root 用户,也没法删除和修改它。若要更改或删除文件,也必须先去掉 i 属性才能够。命令以下:
[root@localhost ~]# chattr -i ftest
[root@localhost ~]# chattr -i dtest/
 在某个项目中,咱们能够天天自动实现把服务器的日志备份到指定目录,备份目录可设置 a 属性,变为只可建立文件而不可删除。命令以下:
#创建备份目录
[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":不容许的操做
说明:chattr 命令不宜对目录 /、/dev/、/tmp/、/var/ 等进行设置,严重者甚至容易致使系统没法启动。

lsattr 命令

命令格式:

[root@localhost ~]# lsattr 选项 文件名 选项:

选项:

选项 选项说明

-a

显示全部文件和目录

-d

若是目标是目录,则仅列出目录自己的属性,而不会列出文件的属性

例如:查看/back/log/目录,其拥有a和e属性

[root@localhost ~]#lsattr -d /back/log/
-----a------e- /back/log/

sudo命令

管理员做为特权用户,可受权普通用户协助完成平常管理。
如今较为流行的工具是 sudo,几乎全部 Linux 都已默认安装。还要注意一点,咱们在前面介绍的全部权限,好比普通权限、默认权限、ACL权限、特殊权限、文件系统属性权限等操做的对象都是文件和目录,可是 sudo 的操做对象是系统命令,也就是 root 把原本只能由超级用户执行的命令赋予普通用户执行。
sudo 使用简单,管理员 root 使用 vi sudo 命令便可编辑其配置文件 /etc/sudoers 进行受权。命令以下:
[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
指定组名用百分号标记,如 %admgroup,多个受权命令之间用逗号分隔。用户 zhangsan 可使用 sudo -l 查看受权的命令列表。
#切换成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 路径中,不然没法执行。

相关文章
相关标签/搜索