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

2.18 特殊权限set_uid

主要用在命令文件上,赋予普通用户执行此命令时临时拥有此命令全部者的权限,系统中passwd命令默认拥有此命令。linux

Linux系统中每一个普通用户均可以更改本身的密码,这是合理的设置。windows

问题是:用户的信息保存在文件/etc/passwd中,用户的密码保存在文件/etc/shadow中,也就是说用户更改本身密码时是修改了/etc/shadow文件中的加密密码,可是,ui

-rw-r--r-- 1 root root 1787 Oct 27  2009 /etc/passwd加密

-r-------- 1 root root 1187 Oct 27  2009 /etc/shadowspa

/etc/passwd文件每一个用户都有读权限可是只有root有写权限,/etc/shadow文件只有超级用户root有读写权限,也就是说普通用户对这两个文件都没有写权限没法写入新密码,为何普通用户能够更改密码呢?操作系统

PS:在linux中设置或更改用户密码,是先写入到/etc/passwd文件而后经过pwconv命令转换到/etc/shadow文件,执行pwunconv命令可观察到转换前效果,会观察到/etc/shadow文件神奇的消失掉了,而/etc/passwd文件中原来打x的地方变成了真正的加密密码。.net

其实,用户能更改密码真正的秘密不在于文件的权限,而在于更改密码的命令passwd 。继承

-rwsr-xr-x 1 root root 22960 Jul 17  2006 /usr/bin/passwdget

passwd命令有一个特殊的权限标记s ,存在于文件全部者的权限位上。这是一类特殊的权限SetUID ,能够这样来理解它:当一个具备执行权限的文件设置SetUID权限后,用户执行这个文件时将以文件全部者的身份执行。passwd命令具备SetUID权限,全部者为root(Linux中的命令默认全部者都是root),也就是说当普通用户使用passwd更改本身密码的时候,那一瞬间忽然灵魂附体了,实际在以passwd命令全部者root的身份在执行,root固然能够将密码写入/etc/shadow文件(不要忘记root这个家伙是superuser什么事均可以干),命令执行完成后该身份也随之消失。it

chmod u+s 给文件添加set_uid权限

chmod u-s 给文件取消set_uid权限

chmod 4755 /usr/bin/ls 在ls 3位权限的基础上加4表示添加全部者的s权限

chmod 755 /usr/bin/ls 取消全部者的s权限

不能使用chmod u=rws /usr/bin/ls 来添加全部者的s权限,由于这样设置全部者没有x权限,全部者的权限会显示rwS,须要chmod u+x /usr/bin/ls加上x权限才变成rws。

2.19 特殊权限set_gid

做用于命令文件:临时拥有此命令属组的权限

做用于目录:任何用户在此目录下建立的文件以及子目录的属组都为此目录的属组,此目录子目录下建立的文

件以及目录属组也和此目录相同。

添加此权限后会在属组的权限位上x变为s

chmod g+s 添加set_gid权限

chmod g-s 取消set_gid权限

chmod 2755 /usr/bin/ls 添加set_gid权限

chmod 755 /usr/bin/ls 取消set_uid权限

应用实例:

1.给ls命令加上setgid权限

[root@localhost ~] chmod 2755 /usr/bin/ls

[root@localhost ~] ll  /usr/bin/ls

-rwxr-sr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls

2.给/tmp/SMB目录加上setgid权限

[root@localhost tmp] chmod g+s SMB

[root@localhost tmp] ll -d SMB/

drwxr-sr-x. 2 root root 6 6月 27 21:36 SMB/

若是SMB目录加上其余用户写的权限的话,切换到其余用户登陆,在SMB建立的文件及目录属组就会是root

2.20 特殊权限stick_bit

防删除位做用:

普通文件的sticky位会被linux内核忽略(不对文件生效)

目录的sticky位表示这个目录里的文件只能被owner和root删除

若是用户对目录有写权限,则能够删除其中的文件和子目录,即便该用户不是这些文件的全部者也没有文件读或写许可。粘着位出现执行许可的位置上,用t表示,设置了该位后,其它用户就不能够删除不属于他的文件和目录。可是该目录下的目录不继承该权限,要再设置才可以使用。

注:可否删除一个文件不取决于文件自己的权限,而在因而否有上级目录写的权限。

chmod o+t 添加防删除位权限

chmod o-t 取消防删除位权限

chmod 1777 添加防删除位权限

chmod 777 取消防删除位权限

chmod +t 添加防删除位权限

chmod -t 取消防删除位权限

系统中/tmp目录默认带有防删除位权限:

[root@localhost tmp] ll -d /tmp

drwxrwxrwt. 11 root root 4096 6月 27 21:45 /tmp

当一个目录被设置为"粘着位"(用chmod a+t),则该目录下的文件只能由:

1、超级管理员删除

2、该目录的全部者删除

3、该文件的全部者删除

也就是说,即使该目录是任何人均可以写,但也只有文件的属主才能够删除文件。

有时你设置了s或t 权限,你会发现它变成了S或T,这是由于在那个位置上你没有给它x(可执行)的权限,这样的话这样的设置是不会有效的,你能够先给它赋上x的权限,而后再给s或t 的权限。

2.21 软连接文件

软连接至关于windows中的快捷方式,它其实是一个特殊的文件。在符号链接中,文件其实是一个文本文件,其中包含的有另外一文件的位置信息。

1.软连接,以路径的形式存在。相似于Windows操做系统中的快捷方式

2.软连接能够 跨文件系统 ,硬连接不能够

3.软连接能够对一个不存在的文件名进行连接

4.软连接能够对目录进行连接

语法:

ln -s 源文件 目标文件

ln -s /tmp/gavin/ /root/

linux系统中默认带有不少软连接,好比/bin /sbin /lib64 /lib等,/usr/lib64目录中存在不少软连接,作软连接时最好都使用绝对路径,以避免挪动位置后找不到源文件。

软连接只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,软连接文件自己的大小和绝对路径以及文件名的长短有关。

2.22 硬链接文件

硬连接只能用在文件,不能用在目录

1.硬连接,以文件副本的形式存在。但不占用实际空间。

2.不容许给目录建立硬连接

3.硬连接只有在同一个文件系统中才能建立

语法:

ln 源文件 目标文件

ln /etc/passwd /root/

相关文章
相关标签/搜索