一特殊权限 set_uid
set_uid: 作用是保证普通用户临时拥有该命令所有者的身份, 它就会临时拥有 root 用户的身份(给一个文件设置 set_uid 的前提是保证该文件是一个二进制可执行的文件)
- [root@localhost ~]# which passwd
- /usr/bin/passwd
- [root@localhost ~]# ls -l /usr/bin/passwd
- -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd //rws 权限中的 s 就是 set_uid
例 1:
- [root@localhost ~]# ls -l /usr/bin/ls // 查看 / usr/bin/ls 权限
- -rwxr-xr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls
- [root@localhost ~]# chmod u+s /usr/bin/ls // 给 / usr/bin/ls 命令添加 set_uid 权限
- [root@localhost ~]# ls -l /usr/bin/ls
- -rwsr-xr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls // 给 ls 命令添加 s 权限成功
- chmod u-s /usr/bin/ls // 给 / usr/bin/ls 命令删除 set_uid 权限
- [root@localhost ~]# chmod u-s /usr/bin/ls
- [root@localhost ~]# ls -l /usr/bin/ls
- -rwxr-xr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls
例 2:
- [root@localhost ~]# chmod u=rws /usr/bin/ls // 使用 chmod u=rws 给 ls 添加 s 权限
- [root@localhost ~]# ls -l /usr/bin/ls
- -rwSr-xr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls // 显示出来的是大写 S, 是因为少 x 权限
- [root@localhost ~]# chmod u+x /usr/bin/ls // 添加 x 权限
- [root@localhost ~]# ls -l /usr/bin/ls
- -rwsr-xr-x. 1 root root 117656 Nov 6 2016 /usr/bin/ls // 正常添加 s 权限
二特殊权限 set_gid 权限
set_gid: 作用是普通用户临时拥有所属组的身份, 不仅可以作用在文件上, 也可以作用在目录上, 当 set 在文件上, 作用和 set_uid 作用类似; 当作用在目录上的时候, 创建子目录或子文件时, 创建的子目录子文件的所属组和该目录的所属组保持一致
三特殊权限 stick_bit
stick_bit: 防删除位, 防止别人删除自己的文件, root 用户除外(在 / tmp 下可以修改其他用户创建的文件, 但是不能删除此文件)
需要删除一个目录下的其他用户创建的文件, 不是看文件本身的权限, 而是要看文件所在目录的权限
四软链接硬链接
1 软链接: 例如 bin 就是一个软链接, 做软链接可以节约磁盘空间(做软链接尽量使用绝对路径)
软链接格式: ln -s 源文件地址 目标文件地址(软链接文件)
- [user1@localhost tmp]$ ls -l /bin
- lrwxrwxrwx. 1 root root 7 Mar 25 23:53 /bin -> usr/bin
给 / tmp/yum.log 做一个软链接:
- [root@localhost ~]# ln -s /tmp/yum.log /root/123/yum.log
- [root@localhost ~]# ls -l /root/123/yum.log
- lrwxrwxrwx. 1 root root 12 Mar 30 06:44 /root/123/yum.log -> /tmp/yum.log
软链接不仅可以链接文件, 也可以链接目录:
- [root@localhost ~]# ln -s /tmp/222 /root/123/333
- [root@localhost ~]# ls -l !$
- ls -l /root/123/333
- lrwxrwxrwx. 1 root root 8 Mar 30 06:49 /root/123/333 -> /tmp/222
实例应用:
比如一个应用在 / boot 分区上跑, 它会在 / boot/hll.log 里面不停地写日志文件, 但是 / boot 分区磁盘空间马上就用完, 这时, 我们可以给 / boot/hll.log 做一个软链接, 把它软链接到一个磁盘空间比较大的磁盘, 我们可以这样操作: 首先复制一份 log 文件到跟目录下: cp /boot/hll.log /hll.log , 再删除 / boot/hll.log 文件: rm /boot/hll.log , 再把 / hll.log 软链接到 / boot/hll.log 就 OK:ln -s /hll.log /boot/hll.log
2 硬链接: 硬链接不支持给目录做硬链接, 只支持给文件做硬链接, 但前提是不能跨分区 (硬链接不会占用多余的空间, 因为做完硬链接的两个文件的 innod 号是一样的) 删除硬链接源文件对硬链接没有影响, 它仅作为一张皮, 但是软链接删除源文件就会报错
硬链接格式: ln 源文件地址 目标文件地址(硬链接地址) (注意: 硬链接不能跨分区创建)
查看文件 innod 号, 使用命令: ls -i 文件名
- [root@localhost ~]# ls -i /boot
- 72 config-3.10.0-693.el7.x86_64
- 67 efi
- 68 grub
- 393280 grub2
- 77 initramfs-0-rescue-0674aa18eaae42169c08dfc8a01b4980.img
- 76 initramfs-3.10.0-693.el7.x86_64.img
- 75 initrd-plymouth.img
- 73 symvers-3.10.0-693.el7.x86_64.gz
- 71 System.map-3.10.0-693.el7.x86_64
- 78 vmlinuz-0-rescue-0674aa18eaae42169c08dfc8a01b4980
- 74 vmlinuz-3.10.0-693.el7.x86_64
来源: http://www.bubuko.com/infodetail-2543673.html