特殊权限set_uid、set_gid 、stick_bit,软链接和硬链接
2017-12-22 09:53
405 查看
一、特殊权限set_uid
1. 可以看到passwd这个命令的文件名为红色,且所有者权限位为rws,这个就是set_uid
passwd这个命令具有Set_uid,那么普通用户执行这个命令的时候临时拥有root的身份
![](https://img-blog.csdn.net/20171222095026566)
设置Set_UID权限仅对二进制文件有效,且是一个可执行的文件
执行者需要对于该文件具有x的可执行权限
本权限仅在执行该命令的过程中有效
普通用户执行该命令时,临时拥有该命令所有者的身份
2.
chmod u+s
给文件加上s权限,
下面进行一个演示,给ls这个命令加上s权限,让它临时拥有root的身份:
1.[root@localhost ~]# su - lx01 #切换到普通用户lx01
2.[lx01@localhost ~]$ ls /root/ #用lx01查看root目录
ls: 无法打开目录/root/: 权限不够 #提示权限不够
3.[lx01@localhost ~]$ exit #回到root用户下
登出
4.[root@localhost ~]# chmod u+s /usr/bin/ls #给ls这个命令加上set_uid权限
5.[root@localhost ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #可以看到ls已经拥有s权限
6.[root@localhost ~]# su - lx01 #再次切换到lx01这个普通用户下
7.[lx01@localhost ~]$ ls /root/ #这时执行ls命令时,ls就临时拥有/root/的身份
anaconda-ks.cfg qw
3.
chmod u-s
将文件的s权限去掉
1.[root@localhost ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #ls这个文件有s权限
2.[root@localhost ~]# chmod -s /usr/bin/ls #执行chmod -s
3.[root@localhost ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #可以看到文件的s权限已经没有
4. chmod u=rws
也可以加上s权限,但这时加的是大S,因为没有加上x的权限,
但实际上使用的时候并没有影响,因为相对来说普通用户使用的是other权限,有x权限
![](https://img-blog.csdn.net/20171222095031710)
二、特殊权限set_gid
1.
chmod g+s
set_uid作用在文件时:普通用户执行文件时临时拥有所属组的权限,文件名背景变成黄色
set_gid作用在文件时和set_uid类似,只不过set_gid是在文件所属组,set_uid是文件所有者
![](https://img-blog.csdn.net/20171222095037751)
2. set_uid作用在目录时:在该目录下创建子文件或者目录的时候,创建的子文件或者目录与该目录的所属组保持一致
1. [root@localhost ~]# ls -ld qw #可以看到qw的所属组为lx01
drwxr-xr-x. 4 root lx01 54 12月 21 17:40 qw
2. [root@localhost ~]# touch qw/11.txt #在/qw/目录下创建一个文件11.txt
3. [root@localhost ~]# mkdir qw/zx #在/qw/目录下创建一个子目录zx
4. [root@localhost ~]# ls -l qw
-rw-r--r--. 1 root root 0 12月 21 17:37 11.txt #可以看到11.txt和zx的所属组都是当前用户所属组
drwxr-xr-x. 2 root root 6 12月 21 17:37 zx
5. [root@localhost ~]# chmod g+s qw #给qw加上sit_gid权限
6. [root@localhost ~]# mkdir qw/as
#/qw/目录下创建一个子目录as
7. [root@localhost ~]# touch qw/22.txt #/qw/目录下创建一个文件22.txt
8. [root@localhost ~]# ls -l qw
-rw-r--r--. 1 root root 0 12月 21 17:37 11.txt
-rw-r--r--. 1 root lx01 0 12月 21 17:40 22.txt #可以看到22.txt和as的所属组和父级目录qw保持一致
drwxr-sr-x. 2 root lx01 6 12月 21 17:39 as
drwxr-xr-x. 2 root root 6 12月 21 17:37 zx
三、 特殊权限stick_bit
1.chmod o+t
防删除位,给一个目录或者文件加上,那么这个文件或目录就不能被其它的普通用户删除。
![](https://img-blog.csdn.net/20171222095048340)
/tmp/这个目录的权限是:drwxrwxrwt ,在这样的权限下任何用户都可以在/tmp/内添加,修改文件。但是仅有该文件或目录所有者以及root才能删除自己的文件或目录
四、软链接文件
1. 软链接以路径的形式存在。类似于Windows操作系统中的快捷方式
软链接生成一个文件的镜像,不会占用磁盘空间,节省了磁盘空间
软链接是可以跨分区的
bin这个文件就是一个软链接文件,实际指向的地址为/usr/bin,链接文件的大小是和路径有关系的,路径越长,文件越大
![](https://img-blog.csdn.net/20171222095048340)
2.ln -s [源文件] [软链接文件] 创建软链接文件
![](https://img-blog.csdn.net/20171222095100182)
3. 软链接的路径分为相对路径和绝对路径,在当前目录下做的软链接就是相对路径,
做软链接尽量使用绝对路径,因为一旦原文件的位置出现变更,那么软链接就会失效
![](https://img-blog.csdn.net/20171222095109403)
4. 一个小例子
加入在boot分区下有一个服务在不停的写日志到/boot/fy.log,但是boot分区只有200M,很快就写满了
但是日志不能更改位置,只能写到/boot/fy.log里面,那么这时可以做一个软链接,指想/目录下的fy.log
cp /boot/fy.log /fy.log 将boot下的fy.log拷贝到/下
rm /boot/fy.log 将/boot/下的fy.log删除
ln -s /fy.log /boot/fy.log 做一个软链接将/boot/fy.log指向到/fy.log,这样实际就写到/下的fy.log,解决磁盘空间不足的问题
五、硬链接文件
1. 创建了一个文件,这个文件和另外一个文件使用了相同的inode号,这两个文件相互为硬链接
硬链接是可以删除的,因为删除其中任何一个文件,但是inode还是存在的,
这两个文件只占一个文件的空间,因为inode是一样的
1. [root@localhost ~]# ln 11.txt 11_hard.txt #给11.txt做了一个硬链接>>11_hard.txt
2. [root@localhost ~]# ls -li 11*
16813925 -rw-r--r--. 2 root root 924 12月 22 09:27 11_hard.txt
16813925 -rw-r--r--. 2 root root 924 12月 22 09:27 11.txt #这两个文件使用了相同的inode号,
2.硬链接不支持目录,只支持文件
[root@localhost ~]# ln qw er #给目录qw做一个硬链接,名字为er
ln: "qw": 不允许将硬链接指向目录 #出现报错,硬链接不支持目录
3. 硬链接不支持跨分区,因为inode号是在分区是就预先分配好,两个分区会存在相同的inode号
[root@localhost ~]# ln /boot/vmlinuz-3.10.0-693.el7.x86_64 /tmp/11.log
ln: 无法创建硬链接"/tmp/11.log" => "/boot/vmlinuz-3.10.0-693.el7.x86_64": 无效的跨设备连接
1. 可以看到passwd这个命令的文件名为红色,且所有者权限位为rws,这个就是set_uid
passwd这个命令具有Set_uid,那么普通用户执行这个命令的时候临时拥有root的身份
设置Set_UID权限仅对二进制文件有效,且是一个可执行的文件
执行者需要对于该文件具有x的可执行权限
本权限仅在执行该命令的过程中有效
普通用户执行该命令时,临时拥有该命令所有者的身份
2.
chmod u+s
给文件加上s权限,
下面进行一个演示,给ls这个命令加上s权限,让它临时拥有root的身份:
1.[root@localhost ~]# su - lx01 #切换到普通用户lx01
2.[lx01@localhost ~]$ ls /root/ #用lx01查看root目录
ls: 无法打开目录/root/: 权限不够 #提示权限不够
3.[lx01@localhost ~]$ exit #回到root用户下
登出
4.[root@localhost ~]# chmod u+s /usr/bin/ls #给ls这个命令加上set_uid权限
5.[root@localhost ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #可以看到ls已经拥有s权限
6.[root@localhost ~]# su - lx01 #再次切换到lx01这个普通用户下
7.[lx01@localhost ~]$ ls /root/ #这时执行ls命令时,ls就临时拥有/root/的身份
anaconda-ks.cfg qw
3.
chmod u-s
将文件的s权限去掉
1.[root@localhost ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #ls这个文件有s权限
2.[root@localhost ~]# chmod -s /usr/bin/ls #执行chmod -s
3.[root@localhost ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls #可以看到文件的s权限已经没有
4. chmod u=rws
也可以加上s权限,但这时加的是大S,因为没有加上x的权限,
但实际上使用的时候并没有影响,因为相对来说普通用户使用的是other权限,有x权限
二、特殊权限set_gid
1.
chmod g+s
set_uid作用在文件时:普通用户执行文件时临时拥有所属组的权限,文件名背景变成黄色
set_gid作用在文件时和set_uid类似,只不过set_gid是在文件所属组,set_uid是文件所有者
2. set_uid作用在目录时:在该目录下创建子文件或者目录的时候,创建的子文件或者目录与该目录的所属组保持一致
1. [root@localhost ~]# ls -ld qw #可以看到qw的所属组为lx01
drwxr-xr-x. 4 root lx01 54 12月 21 17:40 qw
2. [root@localhost ~]# touch qw/11.txt #在/qw/目录下创建一个文件11.txt
3. [root@localhost ~]# mkdir qw/zx #在/qw/目录下创建一个子目录zx
4. [root@localhost ~]# ls -l qw
-rw-r--r--. 1 root root 0 12月 21 17:37 11.txt #可以看到11.txt和zx的所属组都是当前用户所属组
drwxr-xr-x. 2 root root 6 12月 21 17:37 zx
5. [root@localhost ~]# chmod g+s qw #给qw加上sit_gid权限
6. [root@localhost ~]# mkdir qw/as
#/qw/目录下创建一个子目录as
7. [root@localhost ~]# touch qw/22.txt #/qw/目录下创建一个文件22.txt
8. [root@localhost ~]# ls -l qw
-rw-r--r--. 1 root root 0 12月 21 17:37 11.txt
-rw-r--r--. 1 root lx01 0 12月 21 17:40 22.txt #可以看到22.txt和as的所属组和父级目录qw保持一致
drwxr-sr-x. 2 root lx01 6 12月 21 17:39 as
drwxr-xr-x. 2 root root 6 12月 21 17:37 zx
三、 特殊权限stick_bit
1.chmod o+t
防删除位,给一个目录或者文件加上,那么这个文件或目录就不能被其它的普通用户删除。
/tmp/这个目录的权限是:drwxrwxrwt ,在这样的权限下任何用户都可以在/tmp/内添加,修改文件。但是仅有该文件或目录所有者以及root才能删除自己的文件或目录
四、软链接文件
1. 软链接以路径的形式存在。类似于Windows操作系统中的快捷方式
软链接生成一个文件的镜像,不会占用磁盘空间,节省了磁盘空间
软链接是可以跨分区的
bin这个文件就是一个软链接文件,实际指向的地址为/usr/bin,链接文件的大小是和路径有关系的,路径越长,文件越大
2.ln -s [源文件] [软链接文件] 创建软链接文件
3. 软链接的路径分为相对路径和绝对路径,在当前目录下做的软链接就是相对路径,
做软链接尽量使用绝对路径,因为一旦原文件的位置出现变更,那么软链接就会失效
4. 一个小例子
加入在boot分区下有一个服务在不停的写日志到/boot/fy.log,但是boot分区只有200M,很快就写满了
但是日志不能更改位置,只能写到/boot/fy.log里面,那么这时可以做一个软链接,指想/目录下的fy.log
cp /boot/fy.log /fy.log 将boot下的fy.log拷贝到/下
rm /boot/fy.log 将/boot/下的fy.log删除
ln -s /fy.log /boot/fy.log 做一个软链接将/boot/fy.log指向到/fy.log,这样实际就写到/下的fy.log,解决磁盘空间不足的问题
五、硬链接文件
1. 创建了一个文件,这个文件和另外一个文件使用了相同的inode号,这两个文件相互为硬链接
硬链接是可以删除的,因为删除其中任何一个文件,但是inode还是存在的,
这两个文件只占一个文件的空间,因为inode是一样的
1. [root@localhost ~]# ln 11.txt 11_hard.txt #给11.txt做了一个硬链接>>11_hard.txt
2. [root@localhost ~]# ls -li 11*
16813925 -rw-r--r--. 2 root root 924 12月 22 09:27 11_hard.txt
16813925 -rw-r--r--. 2 root root 924 12月 22 09:27 11.txt #这两个文件使用了相同的inode号,
2.硬链接不支持目录,只支持文件
[root@localhost ~]# ln qw er #给目录qw做一个硬链接,名字为er
ln: "qw": 不允许将硬链接指向目录 #出现报错,硬链接不支持目录
3. 硬链接不支持跨分区,因为inode号是在分区是就预先分配好,两个分区会存在相同的inode号
[root@localhost ~]# ln /boot/vmlinuz-3.10.0-693.el7.x86_64 /tmp/11.log
ln: 无法创建硬链接"/tmp/11.log" => "/boot/vmlinuz-3.10.0-693.el7.x86_64": 无效的跨设备连接
相关文章推荐
- 特殊权限set_uid、set_gid、stick_bit、软链接文件与硬连接文件
- 2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件
- 特殊权限set_uid 特殊权限set_gid 特殊权限stick_bit 软链接文件
- 二周特殊权限set_uid 特殊权限set_gid 特殊权限stick_bit 软链接文件硬连接文件
- 特殊权限set_uid、set_gid、stick_bit 软链接、硬链接
- 2.18-2.20特殊权限set_uid/set_gid/stick_bit;20.21/2软硬链接
- 特殊权限set_uid、set_gid、stick_bit、软链接文件、硬连接文件
- 2.18 特殊权限set_uid 2.19 特殊权限set_gid 2.20 特殊权限stick_bit 2.21 软链接文件 2.22 硬连接文件
- 特殊权限set_uid、set_gid、stick_bit.软连接、硬链接
- 特殊权限set_uid、set_gid、stick_bit、软链接文件、硬链接文件
- 特殊权限set_uid、set_gid、stick_bit 及 软链接文件、硬链接文件2.18-2.22
- 10.26 特殊权限set_uid,set_gid,stick_bit,软链接文件,硬连接文件
- 特殊权限set_uid、特殊权限set_gid、特殊权限stick_bit、软链接文件、硬连接文件
- 特殊权限Set_uid,set_gid,stick_bit,软硬链接
- 特殊权限set_uid、set_gid、stick_bit、软/硬链接文件
- 特殊权限set_uid,set_gid,stick_bit,软硬链接
- 2周第4次课 特殊权限set_uid、set_gid、stick_bit 软链接 硬链接
- Linux特殊权限set_uid、set_gid、stick_bit命令和软链接文件、硬连接文件
- linux学习第九篇:特殊权限set_uid,set_gid,stick_bit以及软连接文件,硬链接文件