特殊权限set_uid 特殊权限set_gid 特殊权限stick_bit 软链接文件 硬连接文件

set_uid:该权限针对二进制可执行文件,使文件执行阶段具有文件所有者的权限。

[root@lizhipeng01 ~]# ls -l /usr/bin/passwd                                      s是set_uid的权限,当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd   

[root@lizhipeng01 home]# su - lzp                                                    切换到其他用户下
[lzp@lizhipeng01 ~]$ whoami
lzp
[lzp@lizhipeng01 ~]$ ls /root/                                                             普通用户lzp用ls查看/root/目录下,无法查看,因为dr-xr-x---,因此我们尝试给ls添加set_uid,让它在执行的时候临时拥有/root/主,root的权限
ls: 无法打开目录/root/: 权限不够
[lzp@lizhipeng01 ~]$ ls -ld /root/
dr-xr-x---. 8 root root 4096 12月 19 06:29 /root/

[root@lizhipeng01 ~]# chmod u+s /usr/bin/ls
[root@lizhipeng01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls

[lzp@lizhipeng01 ~]$ ls /root/                                                             可以查看了,
1.txt anaconda-ks.cfg bb dir3 split_dir test5 testc.txt
2.txt a.txt dir2 dir4 test4 testb.txt 学习计划安排.txt

[lzp@lizhipeng01 ~]$ ls -ld /root/                                                         但是other的权限并没有改变
dr-xr-x---. 8 root root 4096 12月 19 06:29 /root/                                  

[root@lizhipeng01 ~]# chmod u-s /usr/bin/ls
[root@lizhipeng01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls
[root@lizhipeng01 ~]# chmod u=rws /usr/bin/ls                               
[root@lizhipeng01 ~]# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls                        S是因为没有x权限,加上x,就会变成小s
[root@lizhipeng01 ~]# chmod u+x /usr/bin/ls
[root@lizhipeng01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls

set_gid:该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上。当作用在文件上时,其功能和set_uid一样,它会使文件在执行阶段具有文件所属组的权限。目录被设置这个权限后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。

[root@lizhipeng01 ~]# chmod u=rwx /usr/bin/ls
[root@lizhipeng01 ~]# chmod g+s /usr/bin/ls
[root@lizhipeng01 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls

[root@lizhipeng01 ~]# mkdir 234
[root@lizhipeng01 ~]# ls -ld 234
drwxr-xr-x. 2 root root 6 12月 20 06:14 234
[root@lizhipeng01 ~]# chmod g+s 234                   组加上set_gid
[root@lizhipeng01 ~]# ls -ld 234
drwxr-sr-x. 2 root root 6 12月 20 06:14 234
[root@lizhipeng01 ~]# chown :user1 234                改变所属组为user1
[root@lizhipeng01 ~]# ls -ld 234
drwxr-sr-x. 2 root user1 6 12月 20 06:15 234
[root@lizhipeng01 ~]# touch 234/lizhipenglinux    234/目录下创建文件lizhipenglinux
[root@lizhipeng01 ~]# ls -l 234                              lizhipenglinux所属组与上级目录一样,都是user1
总用量 0
-rw-r--r--. 1 root user1 0 12月 20 06:16 lizhipenglinux
[root@lizhipeng01 ~]# mkdir 234/lzpdir                 234/目录下创建子目录lzpdir
[root@lizhipeng01 ~]# ls -ld 234/lzpdir                   lzpdir所属组与上级目录一样,都是user1
drwxr-sr-x. 2 root user1 6 12月 20 06:17 234/lzpdir
[root@lizhipeng01 ~]# chmod g-s 234                   去除set_gid
[root@lizhipeng01 ~]# touch 234/lizhipenglinux02    创建文件lizhipenglinux02
[root@lizhipeng01 ~]# ls -l 234
总用量 0
-rw-r--r--. 1 root user1 0 12月 20 06:16 lizhipenglinux
-rw-r--r--. 1 root root 0 12月 20 06:18 lizhipenglinux02      所属组变成root
drwxr-sr-x. 2 root user1 6 12月 20 06:17 lzpdir
[root@lizhipeng01 ~]# mkdir 234/lzpdir2
[root@lizhipeng01 ~]# ls -ld 234/lzpdir2                             所属组变成root
drwxr-xr-x. 2 root root 6 12月 20 06:18 234/lzpdir2

sticky bit:可以理解为防删除位:文件是否可以被用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能删除,同时也不能添加新的文件。如果希望用户能够添加文件但不能删除该目录下其他用户的文件,则可以对父目录增加该权限。设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件。

[root@lizhipeng01 ~]# ls -ld /tmp/
drwxrwxrwt. 12 root root 4096 12月 20 05:26 /tmp/

[lzp@lizhipeng01 ~]$ cd /tmp/                               开启另一个终端
[lzp@lizhipeng01 tmp]$ touch lizp                         创建文件
[lzp@lizhipeng01 tmp]$ ls -l lizp
-rw-rw-r--. 1 lzp lzp 0 12月 20 06:42 lizp

[lzp@lizhipeng01 tmp]$ vi lizp                               编辑文件
[lzp@lizhipeng01 tmp]$ chmod 777 lizp                改变权限
[lzp@lizhipeng01 tmp]$ ls -l lizp
-rwxrwxrwx. 1 lzp lzp 21 12月 20 06:43 lizp

[root@lizhipeng01 tmp]# su - user1                      第一个终端切到user1用户

[user1@lizhipeng01 ~]$ cd /tmp/
[user1@lizhipeng01 tmp]$ vi lizp                           可以对他进行编辑
[user1@lizhipeng01 tmp]$ rm -f lizp                      但是无法删除;防删除
rm: 无法删除"lizp": 不允许的操作

软链接(类似于windows的快捷方式)、硬链接

[user1@lizhipeng01 tmp]$ ls -l /bin
lrwxrwxrwx. 1 root root 7 11月 26 21:00 /bin -> usr/bin
[user1@lizhipeng01 tmp]$ /bin/ls
bb lizhipenglinux lizp ls2 lzp split_dir test
[user1@lizhipeng01 tmp]$ /usr/bin/ls
bb lizhipenglinux lizp ls2 lzp split_dir test

[root@lizhipeng01 tmp]# touch yum.log       创建yum.log文件
[root@lizhipeng01 tmp]# ls
bb lizhipenglinux lizp ls2 lzp split_dir test yum.log
[root@lizhipeng01 tmp]# ln -s /tmp/yum.log /root/
[root@lizhipeng01 tmp]# ls
bb lizhipenglinux lizp ls2 lzp split_dir test yum.log
[root@lizhipeng01 tmp]# ln -s /tmp/yum.log /root/111/yum.log
ln: 无法创建符号链接"/root/111/yum.log": 没有那个文件或目录
[root@lizhipeng01 tmp]# mkdir /root/111/
[root@lizhipeng01 tmp]# ln -s /tmp/yum.log /root/111/yum.log                /root/111/yum.log指向/tmp/yum.log
[root@lizhipeng01 tmp]# ls -l /root/111/
总用量 0
lrwxrwxrwx. 1 root root 12 12月 21 04:09 yum.log -> /tmp/yum.log

[root@lizhipeng01 tmp]# ln -s /tmp/lizhipenglinux /root/111/lizhipeng3          软链接目录
[root@lizhipeng01 tmp]# ls -l !$                                                                      上一条命令的最后一个参数
ls -l /root/111/lizhipeng3
lrwxrwxrwx. 1 root root 19 12月 21 04:19 /root/111/lizhipeng3 -> /tmp/lizhipenglinux       注意是绝对路径

[root@lizhipeng01 tmp]# ln -s yum.log lizhipeng.log                                                         不是绝对路径,相对路径
[root@lizhipeng01 tmp]# ls -l
总用量 4
drwxr-xr-x. 2 root root 6 12月 10 05:18 bb
drwxr-xr-x. 2 root root 6 12月 18 05:20 lizhipenglinux
lrwxrwxrwx. 1 root root 7 12月 21 04:21 lizhipeng.log -> yum.log            不是绝对路径
-rwxrwxrwx. 1 lzp lzp 35 12月 20 06:46 lizp
-rw-r--r--. 1 root root 0 12月 18 05:54 ls2
drwxr-xr-x. 3 root root 33 12月 18 06:08 lzp
drwxr-xr-x. 2 root root 6 12月 10 05:18 split_dir
drwxr-xr-x. 2 root root 6 12月 17 04:56 test
-rw-r--r--. 1 root root 0 12月 21 04:07 yum.log

[root@lizhipeng01 tmp]# mv lizhipeng.log /root/111/           yum.log正好存在,这个例子不能说明相对路径的问题。
[root@lizhipeng01 tmp]# cd /root/111/
[root@lizhipeng01 111]# ls
lizhipeng3 lizhipeng.log yum.log
[root@lizhipeng01 111]# ls -l
总用量 0
lrwxrwxrwx. 1 root root 19 12月 21 04:19 lizhipeng3 -> /tmp/lizhipenglinux
lrwxrwxrwx. 1 root root 7 12月 21 04:21 lizhipeng.log -> yum.log
lrwxrwxrwx. 1 root root 12 12月 21 04:09 yum.log -> /tmp/yum.log

[root@lizhipeng01 ~]# mv 111/lizhipeng.log 123/
[root@lizhipeng01 ~]# cd 123/
[root@lizhipeng01 123]# ls-l
-bash: ls-l: 未找到命令
[root@lizhipeng01 123]# ls -l
总用量 0
lrwxrwxrwx. 1 root root 7 12月 21 04:21 lizhipeng.log -> yum.log             这个yum.log一直再闪,因为当前目录下没有这个文件

[root@lizhipeng01 123]# touch yum.log
[root@lizhipeng01 123]# ls -l
总用量 0
lrwxrwxrwx. 1 root root 7 12月 21 04:21 lizhipeng.log -> yum.log
-rw-r--r--. 1 root root 0 12月 21 04:37 yum.log

[root@lizhipeng01 123]# ls
lizhipeng.log yum.log
[root@lizhipeng01 123]# rm -f yum.log                 删除yum.log

[root@lizhipeng01 123]# mv ../111/yum.log .        将../111/yum.log移到当前目录
[root@lizhipeng01 123]# ls -l                                 软链接依然存在
总用量 0
lrwxrwxrwx. 1 root root 7 12月 21 04:21 lizhipeng.log -> yum.log
lrwxrwxrwx. 1 root root 12 12月 21 04:09 yum.log -> /tmp/yum.log                 软链接依然存在

硬链接:不支持对目录做硬链接,只支持对文件做。硬链接和所链接的文件使用相同的inode,相互为硬链接文件。不能跨文件系统,因为不同的文件系统有不同的inode table

[root@lizhipeng01 ~]# ln 111 lizhipeng111
ln: "111": 不允许将硬链接指向目录

[root@lizhipeng01 ~]# ln /boot/config-3.10.0-229.el7.x86_64 /tmp/config.1
ln: 无法创建硬链接"/tmp/config.1" => "/boot/config-3.10.0-229.el7.x86_64": 无效的跨设备连接

原文地址:https://www.cnblogs.com/sisul/p/8075910.html