特殊权限set_uid、set_gid、stick_bit 及 软链接文件、硬链接文件2.18-2.22

来源:互联网 发布:全球进出口数据统计 编辑:程序博客网 时间:2024/04/29 10:59
207-12-21  第二周第四次课
2.18 特殊权限set_uid
2.19 特殊权限set_gid
2.20 特殊权限stick_bit
2.21 软链接文件
2.22 硬连接文件


2.18 set_uid


1、特殊权限set_uid 
首先我们查看下passwd文件的权限
ls -l  /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd#所有者权限是rws,且/usr/bin/passwd是红色显示,rws中的s是set_uid的意思,它的作用是保证普通用户临时拥有该命令所有者的身份,即普通用户执行passwd命令时,可以临时获得root用户的身份,从而可以更改密码


给一个文件set_uid权限,首先要保证这个文件是一个二进制文件,且是一个可执行的文件。在系统中“/usr/bin/passwd”、“/usr/bin/ls”是这样的文件,如何给这些二进制文件设置'set_uid'的权限呢?
命令如下 
chmod u+s /usr/bin/ls#给/usr/bin/lsls加'set_uid'的权限
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 04:46 /usr/bin/ls#/usr/bin/ls会显示红色,这样ls就临时的获得了root的权限 


如果要去掉这个权限,命令为:
chmod u-s /usr/bin/ls


给这些二进制文件设置'set_uid'的权限还有一个方法:
chmod u=rws /usr/bin/ls
ls-l /usr/bin/ls #你会发现文件所有者权限已经变成rwS,显示“S”是因为少了“x”权限
chmod u+x /usr/bin/ls#将所有者权限rwS变成rws




2.19 特殊权限set_gid 
这个set_gid是让普通用户临时拥有所属组的权限,如果目录被设置这个权限后,任何用户在此目录下创建的文件或目录都具有和该目录父级目录相同的所属组 
例:
chmod g+s /usr/bin/ls
ls -l /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 04:46 /usr/bin/ls
chmod g+s 234#给234文件夹设置set_gid的权限
ls -ld 234
drwxrwsr-x. 2 root root 6 5月 7 12:56 234
chown :user1 234#234的所属组权限是rws
touch 234/aminglinux
ls -l 234/
-rw-rw-r--. 1 root user1 0 5月 7 14:08 aminglinux
#我们可以发现234目录下的子文件aminglinux的所属组也变成了user1








2.20 特殊权限stick_bit 
stick_bit 可以理解为:防删除位,如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件 ,则可以对父目录增加该权限。设置它后,就算用户对目录具有写权限,也不能删除其他用户的文件。(root用户除外,它是超级管理员)比如/tmp/目录就设置过这个权限。 
如:
ls -ld /tmp/
drwxrwxrwt. 11 root root 4096 5月 7 10:38 /tmp/#rwt中的t 就是特殊权限stick_bit 




例子:再增加一个用户,来测试这个权限的作用。 
touch aming#建一个文件aming
su - user1#切换到user1用户
vi aming #用user1用户编辑aming文件,发现可以编辑
rm -f aming#试着用user1用户删除aming这个文件
rm:无法删除“aming”:不允许的操作#系统提示不能删除


PS:一个文件能否被删除,取决于该文件父目录的权限,/tmp/目录是777权限,任何人都可以写,所以理论上任何人都可以删除这个目录的所有文件,但是前面的测试表明,user2是不可以删除user1的文件 ,这就是因为/tmp/目录有一个stick_bit




2.21软链接文件
软链接相当于是windows里的快捷方式,它可以是文件也可以是目录,软链接尽量使用绝对路径
命令: ln 
语法 : ln [-s] [来源文件/存在的文件] [目的文件/快捷地址]
例:我想给源文件/root/123/1.txt做一个软链接,链接放在/tmp/123/12/1.txt,可以这么做
ln -s /root/123/1.txt /tmp/123/12/1.txt#做软链接
ls -l  /tmp/123/12/#查目的文件
1.txt->/root/123/1.txt /#发现目的文件指向源文件


使用场景举例:当我们发现一个日志文件所在的位置A已经快占满某一个分区了,我们可以把这个文件复制到一个比较空的分区B,并把原分区日志删掉,在原分区A处做一个软链接到B处; 那么原分区所在的位置A就只存放一个占位置非常小的软链接而已。


2.22 硬链接
ln 常用的选项就一个 ‘-s’, 如果不加就是建立硬链接,加上就建立软链接 
如:ln 1.txt 1_heard.txt
ls -l
-rw-rw-r-- . 2 root  root 148 5月 7 13:26 1_heard.txt
-rw-rw-r-- . 2 root  root 148 5月 7 13:26 1.txt
ls -i
33583395 1__heard.txt
33583395 1.txt


上例中,1.txt做了硬链接1_heard.txt后,两个文件相互为硬链接,文件大小\inode\权限\时间一样,虽然两个文件大小都为'148', 但是目录的大小并没有变化,删除源文件1.txt, 空间依旧不变。这说明硬链接只是复制了一份inode信息。 


软硬链接的区别:

如果删除源文件,则软链接文件不能读取了,硬链接则不会;
不能对目录做硬链接,可以做软链接
文件做硬链接不能跨分区


阅读全文
0 0
原创粉丝点击