特殊权限set_uid,set_gid,stick_bit,软链接,硬链接
特殊权限set_uid
- 首先找一个带set_uid权限的文件。
[root@aminglinux-01 ~]# which passwd
/usr/bin/passwd
[root@aminglinux-01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
[root@aminglinux-01 ~]#
- 这个权限是rws,这个s的权限就是:set_uid
在linux系统下,如果用户要修改密码,其实就是修改一个关于密码文件。看下保存的密码的文件和权限是什么。
[root@aminglinux-01 ~]# ls /etc/shadow
/etc/shadow
[root@aminglinux-01 ~]# ls -l /etc/shadow
----------. 1 root root 662 8月 9 21:38 /etc/shadow
[root@aminglinux-01 ~]#
-
可以看到这个保存密码的文件是非常严谨的,但是普通用户依然有修改密码的权限。
当然root是有至高无上的权利的,所谓的set_uid就是在执行命令时临时赋予root权限给没权限的用户。 -
给一个文件设置set_uid前提是这个文件是一个可执行的2进制文件。
-
怎样添加set_uid的权限:
[root@aminglinux-01 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@aminglinux-01 ~]# chmod u+s /usr/bin/ls
[root@aminglinux-01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
当权限是大写的S时候,说明文件没有x权限。
- 目录也是可以设置set_uid权限的,但是没有意义。
特殊权限set_gid
- 这个权限跟set_uid,是差不多的,只不过set_gid作用在所属组上。是普通用户临时拥有root组的权限。
[root@aminglinux-01 ~]# chmod g+s /usr/bin/ls
[root@aminglinux-01 ~]# ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
- 目录也是可以加上set_gid 权限的。并且在加上权限后,更改目录的所属组时候,在此目录新建的子文件或者子目录,所属组都是跟父目录保持一致的。取消set_gid后,在创建就不会跟父目录保持一致。
[root@aminglinux-01 ~]# chown linyu aaa/
[root@aminglinux-01 ~]# chmod g+s aaa/
[root@aminglinux-01 ~]# ls -ld aaa/
drwxr-sr-x. 2 linyu root 6 8月 9 22:08 aaa/
[root@aminglinux-01 ~]# mkdir aaa/aming11.txt
[root@aminglinux-01 ~]# mkdir aaa/aming12/
[root@aminglinux-01 ~]# ls -l aaa/
总用量 0
drwxr-sr-x. 2 root linyu 6 8月 10 19:47 aming11.txt
drwxr-sr-x. 2 root linyu 6 8月 10 19:47 aming12
特殊权限 stick_bit
- 这个用到的相对比较多,/tmp/目录就是有stick_bit权限的。
[root@aminglinux-01 ~]# ls -ld /tmp/
drwxrwxrwt. 13 root root 4096 8月 10 19:37 /tmp/
/tmp/最后一位权限是“t”,这个t就是防删除位。
-
/tmp/默认是777权限,这样每一个用户都可以更改删除文件,这样如果一个用户把另一个用户的文件删除了,这样就乱套了。
-
所以有了stick_bit权限,其他用户看是可以得,删,是不可以的。
-
父目录的权限决定子目录/文件是否能被改动。
-
如果文件或目录设置了stick_bit权限,在文件或目录权限777的情况下。其他用户也只能修改,不能删除。
软链接
-
软连接就像windows里的快捷方式。
-
/bin就是usr/bin的软链接。
[root@aminglinux-01 ~]# ls -l /bin
lrwxrwxrwx. 1 root root 7 7月 31 22:54 /bin -> usr/bin
-
软链接的优点:可以非常的节省空间。而且快捷方便。
-
用法:ln -s 文件 软连接文件
-
比如:给yum.log 做一个软链接
[root@aminglinux-01 ~]# ln -s /tmp/yum.log /root/aaa/yum.log
[root@aminglinux-01 ~]# ls -l /root/aaa/
总用量 0
drwxr-sr-x. 2 root root 6 8月 10 19:44 aming
drwxr-sr-x. 2 root root 6 8月 10 19:46 aming1
drwxr-sr-x. 2 root linyu 6 8月 10 19:47 aming11.txt
drwxr-sr-x. 2 root linyu 6 8月 10 19:47 aming12
-rw-r--r--. 1 root root 0 8月 10 19:44 aming1.txt
lrwxrwxrwx. 1 root root 12 8月 10 23:04 yum.log -> /tmp/yum.log
[root@aminglinux-01 ~]#
- 软链接不仅可以链接文件,还可以链接目录
[root@aminglinux-01 ~]# ln -s /tmp/111 /root/aming
[root@aminglinux-01 ~]# ls -l /root/aming
lrwxrwxrwx. 1 root root 8 8月 10 23:12 /root/aming -> /tmp/111
[root@aminglinux-01 ~]#
- 软链接有绝对路径页游相对路径,相对路径仅限于当前目录。相对路径有一些弊端。尽量使用绝对路径。
- 软链接的用途例子:如果一个分区空间满了,而服务只读那个分区。这样就可以把当前分区的文件cp到更大的分区里面。然后做一个软链接到当前分区。这样服务依然可以读取到文件。还有效的利用了磁盘空间。
硬链接
-
之前有一个概念:inode
-
硬链接支持对文件做硬链接。不支持目录。
-
用法: ln 源文件 硬链接
[root@aminglinux-01 ~]# ln 456.txt 456_heard.txt
[root@aminglinux-01 ~]# ln -s 456.txt 456_sorft.txt
[root@aminglinux-01 ~]# ls -li
总用量 8
33575031 -rw-r--r--. 1 root root 0 8月 9 22:08 123.txt
16777792 -rwx------. 1 root root 1008 8月 9 08:55 2.txt
33575032 -rw-rw-r--. 2 root root 0 8月 9 22:14 456_heard.txt
33575036 lrwxrwxrwx. 1 root root 7 8月 10 23:30 456_sorft.txt -> 456.txt
33575032 -rw-rw-r--. 2 root root 0 8月 9 22:14 456.txt
33574999 lrwxrwxrwx. 1 root root 8 8月 10 23:12 aming -> /tmp/111
33574987 -rw-------. 1 root root 1422 7月 31 23:06 anaconda-ks.cfg.1
16972849 drwxrwxr-x. 2 root root 6 8月 9 22:14 bbb
[root@aminglinux-01 ~]#
可以看到硬链接的源文件456.txt和硬链接后的文件heard_456.txt,两者inode号,时间,大小都是一样的。
- 所以硬链接实际上是两个文件是同一个文件。不分源文件和链接文件。两者是互相硬链接。删除其中一个并不影响文件本身。
- 一个文件可以创建多个硬链接。
- 文件名只是文件本身的一个外皮。真正的文件本身是inode号记住的文件。删除其中一个外皮对文件本身并没有影响。但是外皮需要最后留一个。否则这个文件就真的被删除啦。
- 硬链接是不会占用双份空间的,因为使用相同的inode。
- 硬链接无法跨分区建立,因为每一个分区都有一套自己的inode,在格式化分区时都是预先设置好的。
- 无法硬链接目录。
posted on 2018-03-29 22:36 xxxyyzz点xyz 阅读(277) 评论(0) 收藏 举报