文件权限
1、基本权限
角色:
属主(所有者) 属组 其他人
U G O
基本权限概述:读(read)、写(write)、执行(x)
r w x
4 2 1
修改所有者和属组:
两种方式:
chown username.groupname filename
chown username:groupname filename
属组不变,所有者变了:
chown username filename
所有者不变,属组变了:
chown .groupname filename
chown :groupname filename
改目录(递归修改):
chown -R username.groupname dirname #递归修改
chown -R tom.hr test/
角色权限的添加和修改:
chmod u+x a.txt # "+" 在原来基础上附加
chmod g=wx a.txt # "=" 赋予权限
chmod o=x a.txt
chmod ugo=r a.txt
chmod a=r a.txt # a可以代替ugo
chmod u+r go=x a.txt
chmod ug=rx,o=r a.txt
chmod go-x a.txt
数字赋予权限:
普通文件修改权限:
chmod 777 a.txt
递归修改目录权限:
chmod -R 777 dirname #test是目录
切换用户:
su - xiaozhang
su xiaozhang
!su #切换到上次登陆的用户
RWX对文件的影响:
RWX对目录的影响:
目录创建默认权限:读和执行:rx #至少要rx权限,w权限谨慎给。
权限掩码umask (一般不会改)
umask
0022 root用户默认
0022 普通用户默认
修改umask 0044
777-044=733
#root用户默认最高权限
目录:777 文件:666
root用户创建完成的目录和文件的默认权限:
目录:755
文件:644
2、高级权限
suid普通文件
sgid,sticky 目录
这三个权限不能给到同一个文件
对象:命令文件
给cat授权:
chmod u+s /usr/bin/cat /usr/sbin/rm
效果:普通用户可以
sticky
高级权限的类型:
suid == 4 提权 (只对二进制命令文件生效,其他不管用)
sgid == 2 继承属组权限 (只能对目录设置)
sticky == 1 (t权限) 权限控制
设置权限特殊权限:
a、字符---语法
chmod u+s file 提权
chmod g+s dir 只能对目录设置
chmod o+t dir 即使有删除权限,也不能删除
b、数字
chmod 4777 file
chmod 2770 dir
chmod 1770 dir
普通用户通过suid提权:
给于普通用户提权, "cat"、"rm"
chmod u+s /user/bin/cat #提权
chmod u+s /user/bin/rm #提权
取消提权:
chmod u-s /user/bin/rm #取消提权
chmod u-s /user/bin/cat #取消提权
Set GID案例:
[root@linux-server ~]# mkdir /opt/dir1 #创建目录
[root@linux-server ~]# groupadd hr #创建一个组
[root@linux-server ~]# chmod 775 /opt/dir1/ #设置权限
[root@linux-server ~]# ll -d /opt/dir1/
drwxrwxr-x. 2 root root 6 Nov 6 21:26 /opt/dir1/
[root@linux-server ~]# chown .hr /opt/dir1/ #设置属组
[root@linux-server ~]# chmod g+s /opt/dir1/ #设置sgid
[root@linux-server ~]# ll -d /opt/dir1/
drwxrwsr-x. 2 root hr 6 Nov 6 21:26 /opt/dir1/
[root@linux-server ~]# touch /opt/dir1/a.txt
[root@linux-server ~]# ll /opt/dir1/a.txt
-rw-r--r--. 1 root hr 0 Nov 6 21:33 /opt/dir1/a.txt
[root@linux-server ~]# chmod o+w /opt/dir1/ -R
[root@linux-server ~]# su - alice
Last login: Wed Nov 6 21:34:59 CST 2019 on pts/2
[alice@linux-server ~]$ touch /opt/dir1/b.txt
[alice@linux-server ~]$ ll /opt/dir1/b.txt
-rw-rw-r--. 1 alice hr 0 Nov 6 21:35 /opt/dir1/b.txt
Sticky Bit
这个就是针对others来设置的了,和上面两个一样,只是功能不同而已。
SBIT(Sticky Bit)目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
案例:
[root@linux-server ~]# cd /home/
[root@linux-server home]# mkdir dir2
[root@linux-server home]# chmod 757 dir2/
[root@linux-server home]# chmod o+t dir2/
[root@linux-server home]# ll -d dir2/
drwxr-xrwt. 2 root root 52 Oct 31 16:49 dir2/
[root@linux-server home]# useradd jack #创建用户
[root@linux-server home]# su - alice
Last login: Wed Nov 6 21:48:12 CST 2019 on pts/2
[alice@linux-server ~]$ touch /home/dir2/alice.txt #用户alice创建文件
[alice@linux-server ~]$ exit
logout
[root@linux-server home]# su - jack
Last login: Wed Nov 6 21:48:36 CST 2019 on pts/2
[jack@linux-server ~]$ touch /home/dir2/jack.txt #用户jack创建文件
[jack@linux-server ~]$ rm -rf /home/dir2/alice.txt
rm: cannot remove ‘/home/dir2/alice.txt’: Operation not permitted
测试jack删除alice创建的文件,无法删除
两种给普通用户提权手段:
suid: 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行。
sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。
放开所有命令使用权限:
[root@linux-server ~]# visudo #打开配置文件
90 ##
91 ## Allow root to run any commands anywhere
92 root ALL=(ALL) ALL
93 jack ALL=(ALL) NOPASSWD: ALL #添加内容
94 ## Allows members of the 'sys' group to run networking, software,
测试
[root@linux-server ~]# su - jack
Last login: Wed Nov 6 22:04:46 CST 2019 on pts/2
[jack@linux-server ~]$ sudo mkdir /test1
放开个别命令使用权限:
3、特殊权限
授权:
setfacl -m u:xiaocai:rwx a.sh # -m 指定权限 #指定xiaocai对a.sh有 rwx 权限
getfacl a.sh #查看权限
回收权限:
方法1、
使用 -m 回收权限
setfacl -m u:xiaocai:--- a.sh #不授予任何权限,覆盖原来权限
方法2、
setfacl -b a.sh #回收全部权限
getfacl a.sh #查看权限
方法3、
setfacl -x u:xiaocai a.sh
getfacl a.sh #查看权限
4、隐藏权限
查看:
lsattr
加上 i/a/A 隐藏权限:
chattr +i b.txt #不可用做任意操作(保护文件,防止root用户误删除)
chattr +a b.txt #文件内容只可以追加,不可用覆盖
chattr +A b.txt #文件访问时间不变
取消 i 隐藏权限:
chattr -i b.txt
chattr -a b.txt
chattr -A b.txt
最近访问时间:
stat b.txt
b.txt #不可用做任意操作(保护文件,防止root用户误删除)
chattr +a b.txt #文件内容只可以追加,不可用覆盖
chattr +A b.txt #文件访问时间不变
[外链图片转存中...(img-OoqQxBRq-1727144472545)]
### 取消 i 隐藏权限:
```ini
chattr -i b.txt
chattr -a b.txt
chattr -A b.txt
最近访问时间:
stat b.txt
[外链图片转存中…(img-PShOnu2y-1727144472546)]