特殊权限set_uid 、set_gid、 sdick_bit与软、硬连接

set uid 权限

  • 该文件限针对二进制可执行文件,使文件在执行阶段拥有文件所有者的权限
  • 如:passwd命令就有该权限。当普通用户执行passwd 命令时,可以临时获得root权限,从而可以更改密码
  • 例:给一个命令增加去除set uid权限
[root@centos001 ~]# ls -l /usr/bin/ls              //首先找到一个没有set uid权限的文件
-rwxr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls 
[root@centos001 ~]# su awei          //切换到普通用户awei 用命令su 切换
[awei@centos001 root]$ ls -l /root    //使用ls -l 命令时 发现权限不够
ls: 无法打开目录/root: 权限不够        
[awei@centos001 root]$ su root           //再切换到root
密码:
[root@centos001 ~]# chmod u+s /usr/bin/ls       //用chmod 命令给用户所有者增加s权限
[root@centos001 ~]# ls -l /usr/bin/ls            //在用ls命令查看 
-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls      //已经加上set uid 权限了
[root@centos001 ~]# su awei            //再次切换到普通用户
[awei@centos001 root]$ ls -l /root          //发现已经可以使用 ls命令
总用量 4
drwxrwx---. 2 root root    6 9月  26 09:55 123
-rwxrwx---. 1 root root    0 9月  26 09:55 22.txt
[awei@centos001 root]$ su root 
密码:
##去除set uid 权限
[root@centos001 ~]# chmod u-s /usr/bin/ls    //去除权限
[root@centos001 ~]# chmod u=rws /usr/bin/ls   // 增加权限命令的另一种写法
[root@centos001 ~]# ls -l !$ 
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls  //这里我们发现rwS里有个大S 是因为没有可执行权限x
[root@centos001 ~]# chmod u+x !$  //加上x权限
chmod u+x /usr/bin/ls
[root@centos001 ~]# ls -l !$
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls

set gid权限

  • 该权限可以作用在文件上(二进制可执行文件),也可以作用在目录上。
  • 当作用在文件上时,其功能同set uid 它会使文件在执行阶段具有文件所属组的权限。
  • 目录被设置这个权限后,任何在此目录的文件都具有和该目录所属组相同的 组。
  • 例:增加set gid权限
[root@centos001 ~]# chmod u=rwx !$  //先把刚才设置的set uid 权限取消
chmod u=rwx /usr/bin/ls  
[root@centos001 ~]# chmod g+s !$          //增加所属组的set gid 权限
chmod g+s /usr/bin/ls
[root@centos001 ~]# ls -l !$
ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月  6 2016 /usr/bin/ls
[root@centos001 ~]# ls -ld 234
drwxrwsr-x. 2 root root 6 9月  26 09:58 234    // 这里我们能看到234文件是root root 
[root@centos001 ~]# chown :user1 234   //更改文件所属组
[root@centos001 ~]# ls -ld 234
drwxrwsr-x. 2 root user1 6 9月  26 09:58 234
[root@centos001 ~]# touch 234/awei    //在234 文件下再创建一个文件awei
[root@centos001 ~]# ls -l 234/   
总用量 0
drwxr-sr-x. 2 root user1 6 10月 26 11:52 am
-rw-r--r--. 1 root user1 0 10月 26 11:53 awei         
[root@centos001 ~]# chmod g-s 234 //这里我们去掉 set gid 权限
[root@centos001 ~]# ls -l 234
总用量 0
drwxr-sr-x. 2 root user1 6 10月 26 11:52 am
-rw-r--r--. 1 root user1 0 10月 26 11:53 awei
[root@centos001 ~]# touch 234/awei111          //创建一个新的文件awei111
[root@centos001 ~]# ls -l 234
总用量 0
drwxr-sr-x. 2 root user1 6 10月 26 11:52 am
-rw-r--r--. 1 root user1 0 10月 26 11:53 awei
-rw-r--r--. 1 root root  0 10月 26 11:56 awei111   //取消set gid权限后所属组又变回了root
[root@centos001 ~]# mkdir 234/am1       //创建目录am1
[root@centos001 ~]# ls -l 234
总用量 0
drwxr-sr-x. 2 root user1 6 10月 26 11:52 am
drwxr-xr-x. 2 root root  6 10月 26 11:57 am1      //因为取消了set gid,创建目录后所属组也变回了root
-rw-r--r--. 1 root user1 0 10月 26 11:53 awei
-rw-r--r--. 1 root root  0 10月 26 11:56 awei111
[root@centos001 ~]# ls -ld 234
drwxrwxr-x. 4 root user1 54 10月 26 11:57 234

sticky bit权限

  • 防止删除位
  • 文件是否可以被某用户删除,主要取决于该文件所在的目录是否对该用户具有写权限。
  • 如果没有写权限,则这个目录下的所以文件都不能删除,同时也不能添加新的文件
  • 如果希望用户能够添加文件但不能删除该目录下的文件,则可以对父级目录增加该权限
  • 设置该权限后,就算用户对目录具有写权限,也不能删除其他用户的文件
[root@centos001 ~]# ls -ld /tmp/                    //tmp目录就有stick bit权限
drwxrwxrwt. 10 root root 4096 10月 26 10:10 /tmp/  //最后的rwt就是防删除位
[root@centos001 user1]# su - aming     //切换到普通用户aming
[aming@centos001 user1]$ cd /tmp/  
[aming@centos001 tmp]$ touch aming    //在aming目录下创建aming文件
[aming@centos001 tmp]$ ls -l
总用量 120
-rw-r--r--. 1 root  root    1008 10月 25 02:25 1.txt
-rw-rw-r--. 1 aming aming      0 10月 26 13:10 aming    //能看到变化
[aming@centos001 tmp]$ vi aming           //这时可以写入 但是用另一个普通用户不能删除

软链接

  • 用法 ln -s 源文件 目标文件
  • 软连接,类似Windows上的快捷方式,软连接是一个独立文件。
  • 在创建软文件的软连接时,来源文件可以是不存在的文件,而目标文件---快捷方式必须是新文件。
  • 仅适用于目录,若快捷方式-->目标目录不存在,会创建相应的目录;若已存在,会在目标目录里面创建一个以来源文件命名的子目录。
  • 可跨分区当来源文件是普通文件时,目标文件名称不可以是已经存在的文件
  • 当来源文件是目录时,目标文件名称可以软连接,删除来源文件,目标文件失效
  • 所有软连接的权限都是777,但并非所有用户都对该链接可读可写可执行,是否有这个权限,要看软连接的源文件的权限

硬链接

  • 用法 ln 源文件 目标文件
  • 每个文件都有一个属于自己的inode
  • 当使用硬链接时,硬链接文件直接链接到文件放置的块区域。也就是说,进行硬链接的时候实际上文件内容没有任何变化,只是制定了相同的inode。
  • 硬链接文件直接链接到文件放置的块区域。也就是说,进行硬链接的时候实际上文件内容没有任何变化,只是制定了相同的inode。

猜你喜欢

转载自my.oschina.net/u/3707523/blog/1826250