特殊权限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)    收藏  举报

导航