Linux 特殊文件权限

Linux 特殊文件权限

1. 简介

一般情况下我们看到的文件权限例如 755

示例:

[root@node01 demo]# mkdir user1
[root@node01 demo]# touch aaa
[root@node01 demo]# ll
总用量 0
-rw-r--r-- 1 root root 0 87 13:09 aaa
drwxr-xr-x 2 root root 6 87 13:08 user1

rwx		当前用户权限
r-x		当前组的权限
r-x		其他用户权限

个人理解:
一般情况下新建文件夹默认为 755 ,因为使用 umask 命令可以看到默认对应减少的权限 022 ,即 777 - 022
新建文件默认权限为 644 ,即 666 - 022 (新建文件默认是没有执行权限的)

在这里插入图片描述

特殊权限 则是在当前文件权限之前还有一个权限,例如7777

第一个 7(4+2+1) 即表示特殊权限

  • suid 4 ,表示当一个二进制文件拥有 SUID 权限之后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行(这个权限要慎用
  • sgid 2 ,表示要求文件夹下的新建子文件夹或者子文件继承父文件夹的属组
  • stick bit 1 ,表示粘连位,如果给文件夹赋予粘连位,则表示该文件夹下的文件或者文件夹只能由所有者及 root 去删除,其他人无法删除,常用于公共文件,防止除自己以外的用户删除自己的文件

2. SUID

suid 4 ,表示当一个二进制文件拥有 SUID 权限之后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行

2.1 示例:1

当我们想要执行 shutdown 关机命令时,则需要使用 root 用户,因为当前 shutdown 命令是属于 root 用户的

[root@node01 ~]# which shutdown
/usr/sbin/shutdown
[root@node01 ~]# ll /usr/sbin/shutdown
lrwxrwxrwx. 1 root root 16 527 20:36 /usr/sbin/shutdown -> ../bin/systemctl
[root@node01 ~]# ll /bin/systemctl
-rwxr-xr-x. 1 root root 641808 85 2017 /bin/systemctl

当我们使用一个普通用户去执行 shutdown 命令时会提示我们 root 用户正在登陆,并且让我们使用 systemctl poweroff -i 尝试

[root@node01 ~]# su - user1
上一次登录:二 82 16:28:01 CST 2022pts/0 上
[user1@node01 ~]$ shutdown now
User root is logged in on sshd.
User root is logged in on sshd.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl poweroff -i'.

[user1@node01 ~]$ systemctl poweroff -i
==== AUTHENTICATING FOR org.freedesktop.login1.power-off-multiple-sessions ===
Authentication is required for powering off the system while other users are logged in.
Authenticating as: root
Password: 

修改 /bin/systemctl 文件权限之后只用普通用户也可以使用 shutdown 命令了

[root@node01 ~]# ll /bin/systemctl 
-rwxr-xr-x. 1 root root 641808 85 2017 /bin/systemctl
[root@node01 ~]# chmod 4755 /bin/systemctl 
[root@node01 ~]# ll /bin/systemctl 
-rwsr-xr-x. 1 root root 641808 85 2017 /bin/systemctl
[root@node01 ~]# su - user1
上一次登录:日 87 13:22:25 CST 2022pts/0 上
[user1@node01 ~]$ shutdown -r +10		# 十分钟之后关机
Shutdown scheduled for2022-08-07 13:50:14 CST, use 'shutdown -c' to cancel.
[user1@node01 ~]$ shutdown -c

在这里插入图片描述

2.2 示例:2

使用普通用户去查看一个没有权限的文件,则会提示权限不够

[root@node01 ~]# which cat
/usr/bin/cat
[root@node01 ~]# cp /etc/passwd /opt/demo/
[root@node01 ~]# cd /opt/demo/
[root@node01 demo]# ll
总用量 60
-rw-r--r-- 1 root root  1009 87 13:43 passwd
[root@node01 demo]# chmod 200 passwd 
[root@node01 demo]# ll
总用量 60
--w------- 1 root root  1009 87 13:43 passwd

[root@node01 demo]# su - user1
上一次登录:日 87 13:39:25 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/demo/
[user1@node01 demo]$ ll
总用量 60
--w------- 1 root root  1009 87 13:43 passwd
[user1@node01 demo]$ cat passwd 
cat: passwd: 权限不够

修改 cat 命令权限

[root@node01 demo]# ll /usr/bin/cat
-rwxr-xr-x. 1 root root 54080 116 2016 /usr/bin/cat
[root@node01 demo]# chmod 4755 /usr/bin/cat 
[root@node01 demo]# ll /usr/bin/cat
-rwsr-xr-x. 1 root root 54080 116 2016 /usr/bin/cat

在这里插入图片描述

修改完成,再次使用 cat 命令查看

[root@node01 demo]# su - user1
上一次登录:日 87 13:47:51 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/demo/
[user1@node01 demo]$ ll
总用量 60
--w------- 1 root root  1009 87 13:43 passwd
[user1@node01 demo]$ cat passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
nginx:x:1000:100::/home/nginx:/bin/bash
user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
user3:x:1003:1003::/home/user3:/bin/bash

3. SGID

表示要求文件夹下的新建子文件夹或者子文件继承父文件夹的属组

示例:

查看当前目录所属用户和组

[root@node01 opt]# ll
总用量 8
drwxr-xr-x  2 user1 nginx   20 87 13:50 demo

当前文件权限 755
所属用户	user1
所属组 	nginx

修改当前文件权限

[root@node01 opt]# chmod 2755 demo/
[root@node01 opt]# ll
总用量 8
drwxr-sr-x  2 user1 nginx   20 87 13:50 demo

在这里插入图片描述

创建文件测试,新建文件默认所属组和它的父目录相同

[root@node01 opt]# cd demo/
[root@node01 demo]# ll
总用量 4
--w------- 1 root root 1009 87 13:43 passwd
[root@node01 demo]# mkdir 123
[root@node01 demo]# touch aaa
[root@node01 demo]# ll
总用量 4
drwxr-sr-x 2 root nginx    6 87 14:02 123
-rw-r--r-- 1 root nginx    0 87 14:02 aaa
--w------- 1 root root  1009 87 13:43 passwd

4. Stick Bit

表示粘连位,如果给文件夹赋予粘连位,则表示该文件夹下的文件或者文件夹只能由所有者及 root 去删除,其他人无法删除,常用于公共文件,防止除自己以外的用户删除自己的文件

示例:

新建一个公共目录文件夹,使用普通用户在公共目录下新建文件

[root@node01 ~]# mkdir /opt/pub
[root@node01 ~]# chmod 777 /opt/pub/
[root@node01 ~]# ll -d /opt/pub/
drwxrwxrwx 2 root root 6 87 14:06 /opt/pub/

# user1 新建目录
[root@node01 ~]# su - user1
[user1@node01 ~]$ cd /opt/pub/
[user1@node01 pub]$ ll
总用量 0
[user1@node01 pub]$ touch user1_demo1
[user1@node01 pub]$ mkdir user1_demo2
[user1@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user1 user1 0 87 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
[user1@node01 pub]$ exit
登出

# user2 新建目录
[root@node01 ~]# su - user2
[user2@node01 ~]$ cd /opt/pub/
[user2@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user1 user1 0 87 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
[user2@node01 pub]$ touch user2_demo1
[user2@node01 pub]$ mkdir user2_demo2
[user2@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user1 user1 0 87 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 87 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 87 14:08 user2_demo2

这里就有一个问题,文件分属于不用用户,但是不同用户之间可以互相删除对方的文件或者目录,这就会有问题

[user2@node01 pub]$ whoami
user2
[user2@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user1 user1 0 87 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 87 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 87 14:08 user2_demo2
[user2@node01 pub]$ rm -rf user1_demo1
[user2@node01 pub]$ ll
总用量 0
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 87 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 87 14:08 user2_demo2

设置 粘连位 ,设置之后,用户只能删除属于自己的文件或目录

在这里插入图片描述

[root@node01 opt]# chmod 1777 pub/
[root@node01 opt]# ll
drwxrwxrwt  4 root  root    63 87 14:11 pub

[root@node01 opt]# su - user1
上一次登录:日 87 14:07:39 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/pub/
[user1@node01 pub]$ ll
总用量 0
drwxrwxr-x 2 user1 user1 6 87 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 87 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 87 14:08 user2_demo2
[user1@node01 pub]$ rm -rf user2_demo1
rm: 无法删除"user2_demo1": 不允许的操作
[user1@node01 pub]$ rm -rf user1_demo2/
[user1@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user2 user2 0 87 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 87 14:08 user2_demo2

 
 
 
 
 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值