一般情况下我们看到的文件权限例如 755
示例:
[root@node01 demo]# mkdir user1
[root@node01 demo]# touch aaa
[root@node01 demo]# ll
总用量 0
-rw-r--r-- 1 root root 0 8月 7 13:09 aaa
drwxr-xr-x 2 root root 6 8月 7 13:08 user1
rwx 当前用户权限
r-x 当前组的权限
r-x 其他用户权限
一般情况下新建文件夹默认为 755 ,因为使用 umask 命令可以看到默认对应减少的权限 022 ,即 777 - 022
新建文件默认权限为 644 ,即 666 - 022 (新建文件默认是没有执行权限的)
特殊权限 则是在当前文件权限之前还有一个权限,例如7777
第一个 7(4+2+1) 即表示特殊权限
suid 4 ,表示当一个二进制文件拥有 SUID 权限之后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行
当我们想要执行
shutdown
关机命令时,则需要使用root
用户,因为当前shutdown
命令是属于root
用户的
[root@node01 ~]# which shutdown
/usr/sbin/shutdown
[root@node01 ~]# ll /usr/sbin/shutdown
lrwxrwxrwx. 1 root root 16 5月 27 20:36 /usr/sbin/shutdown -> ../bin/systemctl
[root@node01 ~]# ll /bin/systemctl
-rwxr-xr-x. 1 root root 641808 8月 5 2017 /bin/systemctl
当我们使用一个普通用户去执行
shutdown
命令时会提示我们root
用户正在登陆,并且让我们使用systemctl poweroff -i
尝试
[root@node01 ~]# su - user1
上一次登录:二 8月 2 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 8月 5 2017 /bin/systemctl
[root@node01 ~]# chmod 4755 /bin/systemctl
[root@node01 ~]# ll /bin/systemctl
-rwsr-xr-x. 1 root root 641808 8月 5 2017 /bin/systemctl
[root@node01 ~]# su - user1
上一次登录:日 8月 7 13:22:25 CST 2022pts/0 上
[user1@node01 ~]$ shutdown -r +10 # 十分钟之后关机
Shutdown scheduled for 日 2022-08-07 13:50:14 CST, use 'shutdown -c' to cancel.
[user1@node01 ~]$ shutdown -c
使用普通用户去查看一个没有权限的文件,则会提示权限不够
[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 8月 7 13:43 passwd
[root@node01 demo]# chmod 200 passwd
[root@node01 demo]# ll
总用量 60
--w------- 1 root root 1009 8月 7 13:43 passwd
[root@node01 demo]# su - user1
上一次登录:日 8月 7 13:39:25 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/demo/
[user1@node01 demo]$ ll
总用量 60
--w------- 1 root root 1009 8月 7 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 11月 6 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 11月 6 2016 /usr/bin/cat
修改完成,再次使用
cat
命令查看
[root@node01 demo]# su - user1
上一次登录:日 8月 7 13:47:51 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/demo/
[user1@node01 demo]$ ll
总用量 60
--w------- 1 root root 1009 8月 7 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
表示要求文件夹下的新建子文件夹或者子文件继承父文件夹的属组
示例:
查看当前目录所属用户和组
[root@node01 opt]# ll
总用量 8
drwxr-xr-x 2 user1 nginx 20 8月 7 13:50 demo
当前文件权限 755
所属用户 user1
所属组 nginx
修改当前文件权限
[root@node01 opt]# chmod 2755 demo/
[root@node01 opt]# ll
总用量 8
drwxr-sr-x 2 user1 nginx 20 8月 7 13:50 demo
创建文件测试,新建文件默认所属组和它的父目录相同
[root@node01 opt]# cd demo/
[root@node01 demo]# ll
总用量 4
--w------- 1 root root 1009 8月 7 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 8月 7 14:02 123
-rw-r--r-- 1 root nginx 0 8月 7 14:02 aaa
--w------- 1 root root 1009 8月 7 13:43 passwd
表示粘连位,如果给文件夹赋予粘连位,则表示该文件夹下的文件或者文件夹只能由所有者及 root 去删除,其他人无法删除,常用于公共文件,防止除自己以外的用户删除自己的文件
示例:
新建一个公共目录文件夹,使用普通用户在公共目录下新建文件
[root@node01 ~]# mkdir /opt/pub
[root@node01 ~]# chmod 777 /opt/pub/
[root@node01 ~]# ll -d /opt/pub/
drwxrwxrwx 2 root root 6 8月 7 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 8月 7 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 8月 7 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 8月 7 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 8月 7 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 8月 7 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 8月 7 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 8月 7 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 8月 7 14:08 user2_demo2
这里就有一个问题,文件分属于不用用户,但是不同用户之间可以互相删除对方的文件或者目录,这就会有问题
[user2@node01 pub]$ whoami
user2
[user2@node01 pub]$ ll
总用量 0
-rw-rw-r-- 1 user1 user1 0 8月 7 14:08 user1_demo1
drwxrwxr-x 2 user1 user1 6 8月 7 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 8月 7 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 8月 7 14:08 user2_demo2
[user2@node01 pub]$ rm -rf user1_demo1
[user2@node01 pub]$ ll
总用量 0
drwxrwxr-x 2 user1 user1 6 8月 7 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 8月 7 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 8月 7 14:08 user2_demo2
设置
粘连位
,设置之后,用户只能删除属于自己的文件或目录
[root@node01 opt]# chmod 1777 pub/
[root@node01 opt]# ll
drwxrwxrwt 4 root root 63 8月 7 14:11 pub
[root@node01 opt]# su - user1
上一次登录:日 8月 7 14:07:39 CST 2022pts/0 上
[user1@node01 ~]$ cd /opt/pub/
[user1@node01 pub]$ ll
总用量 0
drwxrwxr-x 2 user1 user1 6 8月 7 14:08 user1_demo2
-rw-rw-r-- 1 user2 user2 0 8月 7 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 8月 7 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 8月 7 14:08 user2_demo1
drwxrwxr-x 2 user2 user2 6 8月 7 14:08 user2_demo2