一、基本权限
在 CentOS 7 中,文件和目录的权限由三组权限位来控制,分别代表了文件所有者(u)、同一组用户(g)和其他用户(o)的权限。
- u:代表文件或目录的所有者(user)
- g:代表与文件或目录属于同一组的用户(group)
- o:代表其他用户(others),即既不是所有者也不属于同一组的用户
- r(read):读取权限,对应数字 4
- w(write):写入权限,对应数字 2
- x(execute):执行权限,对应数字 1
执行权限x的效果:将sh文件内每一行放在命令行执行
例如:
d rwx r-x r-x
该目录文件的
所有者(u) 有读r、写w、执行x权限
同一组的用户(g) 有读r、执行x权限
其他用户(o) 有读r、执行x权限
chmod 777 文件名:给文件赋最大权限
(1+2+4=7)
二、高级权限
分类:
- suid ==== 4 提权 (只对二进制命令文件生效,其他不管用)
- sgid ==== 2 组继承 (只能对目录设置)
- sticky == 1 (t权限) 权限控制
一、命令提权(Set UID)
(一)作用:执行者将具有该程序拥有者(owner)的权限.
***只对二进制命令文件生效,其他不管用!!
(二)语法:chmod u+s 命令路径
***提权后的命令,可以给除owner外的其他用户使用,且使用效果和owner用户使用时一样!!
(三)使用实例:
1.root用户下使用chmod u+s 给touch命令提权
2.从root用户切换到其他用户(如alan),并使用touch命令,在/root目录下创建文件(/root目录没有给其他组任何权限),可以创建成功
3.再次切换到root用户下时,发现alan用户使用touch创建的文件,创建者是文件的拥有者root,而不是alan
二、组继承权限(GID)
(一)作用:把s放到文件的所属用户组的x位置上的话,就是SGID。SGID是获得该程序所属用户组的权限。
SGID主要用在目录上:如果用户在此目录下具有w权限的话,使用者在此目录下建立新文件,则创建的这个文件的群组与此目录的所属群组相同。
(二)语法:chmod g+s 目录路径
(三)使用实例:
1.目录/A的所属组为QF2403,使用chmod g+s /A 给/A目录添加组继承权限
2.切换至alan用户,并在/A目录下创建文件。文件所属组与/A目录的所属组一致。
3.切换到root用户,在/A下创建一个目录,目录的所属组也与/A的所属组一致。
三、Sticky Bit(T权限)
针对others用户设置,只针对目录有效。
(一)作用:当用户在该目录下进行操作时,仅自己与 root才有权力删除(防止误删除)。
(二)语法:chmod o+t 目录路径
(三)使用实例:
1.给/A目录的o用户赋予t权限
2.分别切换至alan用户和tom用户,各自在/A目录下创建一个文件
3.当使用alan用户时,无法删除tom用户创建的文件;使用tom用户时,无法删除alan用户创建的文件。
四、使用sudo给普通用户提权
允许普通用户以其他用户的身份执行命令,通常是超级用户(root)。它提供了一种安全的方法来授权普通用户执行特权操作,而无需完全切换到超级用户。
(一)用法:
1.visudo 修改配置文件,给指定用户赋权
配置解释:
第一列:root 表示要提权的用户名
第一个 ALL :指示允许从任何终端、机器访问 sudo
第二个 (ALL) :指示 sudo 命令被允许以任何用户身份执行
第三个 ALL :表示所有命令都可以作为 root 执行
NOPASSWD:表示使用sudo时不需要输入该用户的密码
2.给alan用户赋权后,切换至alan,使用sudo调用root的useradd命令,创建用户,创建成功,效果等同于使用root创建。
五、文件属性 chattr
(一)作用:隐藏权限,防止root误删除
(二)参数详解:
i:即Immutable,系统不允许对这个文件进行任何的修改
a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何覆盖或截断这个文件
A:即Atime,告诉系统不要修改对这个文件的最后访问时间
#设置权限
[root@linux-server ~]# chattr +a file1 #不允许修改,只允许追加
[root@linux-server ~]# chattr +i file2 #不允许做任何操作
[root@linux-server ~]# chattr +A file3 #不修改文件最后访问时间
[root@linux-server ~]# lsattr file1 file2 file3 #查看文件的attr权限
-----a---------- file1
----i----------- file2
-------A-------- file3
(三)使用实例:
1.使用 chattr +i 文件路径 给文件赋予 i 权限,限制root的删除权限
2.使用 chattr +a 文件路径 给文件赋予 a 权限,使文件仅可以追加和查看,不能修改(覆盖/vim)和删除
3.使用 chattr +A 文件路径 给文件赋予A权限,固定文件的最后访问时间
**在系统中有一个system用户的级别高于root!!