博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day09-linux特殊权限及软连接
阅读量:5954 次
发布时间:2019-06-19

本文共 4248 字,大约阅读时间需要 14 分钟。

上次整理了关于linux系统的文件及目录权限,其实为了系统的安全性:

 linux还有一些特殊权限: set_uid:(主)  set_gid:(组)    stick_bit:(其他)

1、set_uid: 授权普通用户临时拥有文件/目录所有者的权限:该权限只能授于二进制可执行文件:

如:当普通用户要给自己修改密码:则需要临时拥有root用户对passwd的属主权限才可以:如下:

1
2
3
4
[root@localhost ~]
# which passwd        #查看passwd的路径
/usr/bin/passwd
[root@localhost ~]
# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 
/usr/bin/passwd   
#其所属主为rws.拥有uid权限.

 1.1;那么如何设置让普通用户拥有对文件的临时权限呢:

格式: chmod    u+s    filename     #u表示文件所属主的加上s权限则表示拥有uid权限:

1
2
3
4
5
6
[root@localhost ~]
# chmod u+s /usr/bin/ls      #给用户添加get_uid权限:
[root@localhost ~]
# ls -ld /usr/bin/ls         #查看get_uid权限:        
 
-rwsr-xr-x. 1 root root 117656 11月  6 2016 
/usr/bin/ls
[root@localhost ~]
# su - yuanhh        #切换到普通用户:
[yuanhh@localhost ~]$ 
ls 
/root/
anaconda-ks.cfg                        
#可以查看此目录:

即一般普通用户是不能查看/root/的目录的文件:只有加入了set_uid才可以。

1.2:如何取消普通用户对文件的临时权限:

格式:chmod   u-s   filename    #表示取消文件的所属主的s权限则表示取消uid:

1
2
3
4
5
[root@localhost ~]
# chmod u-s /usr/bin/ls         #取消二进制文件的uid权限:
[root@localhost ~]
# su - yuanhh
上一次登录:四 10月 26 21:26:41 CST 2017pts
/0 
[yuanhh@localhost ~]$ 
ls 
/root/
ls
: 无法打开目录
/root/
: 权限不够                 
#发现会无法查看root的目录:

另外:如果二进制文件的所属主有执行权限,则会显示小s,如果没有执行权限,只会显示大S权限:

2、set_gid:针对用户组来操作,有以下两种用法:

2.1:可以用于文件,可以让普通用户临时拥有所属组的身份及权限,同set_uid的用法相同:

2.2:可以用于目录,但对此目录修改了set_gid权限后,再在此目录下再创建文件/目录,其所属组与其父目录是一致的。

2.3:那么如何给目录增加set_gid权限:

格式:chmod   g+s     filename/dir           #给某个目录/文件增加set_gid权限:

[root@localhost ~]# ls -ld yuan/

drwxr-sr-x 4 root yuanhh 42 10月 27 00:18 yuan/

1
2
3
4
5
6
7
8
 
[root@localhost ~]
# chmod g+s yuan          #给yuan这个目录增加gid权限:
[root@localhost ~]
# ls -ld yuan
drwxr-sr-x 2 root yuanhh 6 10月 27 00:14 yuan
[root@localhost ~]
# cd yuan/
[root@localhost yuan]
# touch 1 & mkdir 2      创建文件1和目录2.
[root@localhost yuan]
# ls -al
-rw-r--r--  1 root yuanhh   0 10月 27 00:15 1      
#两个文件的所属组都变化。
drwxr-sr-x  2 root yuanhh   6 10月 27 00:15 2      
#两个文件的所属组都变化。

2.4:那么如何取消给目录增加的set_gid权限呢:

格式:chmod   g-s   filename/dir         #给某个目录/文件减去set_gid权限:

1
2
3
4
5
6
7
[root@localhost ~]
# chmod g-s yuan           #给文件减去gid权限:
[root@localhost yuan]
# touch 3 & mkdir 4     #并创建文件3和目录4:
[root@localhost ~]
# ls -la yuan/
-rw-r--r--  1 root yuanhh   0 10月 27 00:15 1
drwxr-sr-x  2 root yuanhh   6 10月 27 00:15 2
-rw-r--r--  1 root root     0 10月 27 00:18 3      
#取消gid后,重新创建的文件:
drwxr-xr-x  2 root root     6 10月 27 00:18 4      
#取消gid后,重新创建的文件:

3、sticky_bit: 防删除位(在此目录下各个用户创建的文件和目录只有他自己可以删除,其他用户不能删除)

在linux下tmp就是一个sticky_bit的文件:

3.1:那么如何给某个目录添加sticky_bit的权限:

格式:  chmod   o+t       dir             #给某个目录增加t权限:

[root@localhost ~]# ls -ld /tmp/

drwxrwxrwt. 13 root root 4096 10月 26 21:49 /tmp/

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]
# su - yuanhh    #首先我们全切换都普通用户yuanhh:
[yuanhh@localhost tmp]$ 
touch 
1 & 
mkdir 
2   
#并创建文件1和目录2.
[root@localhost ~]
# su - user1     #然后切换到普通用户user1.
[user1@localhost tmp]$ 
mkdir 
3 & 
touch 
4    
#并创建文件4和目录3.
[user1@localhost tmp]$ 
ls 
-la
-rw-rw-r--   1 yuanhh yuanhh    0 10月 27 00:27 1       
#用户yuanhh创建的文件
drwxrwxr-x   2 yuanhh yuanhh    6 10月 27 00:27 2       
#用户yunhh创建的文件
drwxrwxr-x   2 user1  user1     6 10月 27 00:28 3       
#用户user1创建的文件 
-rw-rw-r--   1 user1  user1     0 10月 27 00:28 4       
#用户user1创建的文件
[user1@localhost tmp]$ 
rm 
-fr 1           
#然后在user1用户下,无法1文件。
rm
: 无法删除
"1"
: 不允许的操作
[user1@localhost tmp]$ 
rm 
-fr 2           
#然后在user1用户下,无法2目录。
rm
: 无法删除
"2"
: 不允许的操作

 3.2:那么如何取消sticky_bit的权限:

格式:chmod   o-t       dir       #取消目录的stick_bit的权限:

1
[root@localhost ~]
# chmod o-t /tmp/

二、硬链接和软连接:

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。只删除一个连接并不影响节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

硬链接等于复制了一份属性信息:相当于多个文件有了同一个inode的多张皮,等于多个文件使用同一个inode信息,它们之间相互的为硬链接文件:

可以删除源文件后,硬链接不受影响:

注意:不会占双份的空间,因为只有一个inode.

目录不支持硬链接:

不支持跨分区链接: 因为不同的分区有自己inode体系,inode不能重复:

 硬链接可由命令 ln 创建,如:

ln ln   /root/1  /tmp/2

 

 2、软链接又称之为符号连接(Symbolic Link)。软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

软连接文件删除源文件会影响文件本身:

如下图:相当于在这个文件里存了另外一个文件的路径:常用在/lib64/下居多,以粉绿色显示:

[root@localhost ~]# ls -l  /bin

lrwxrwxrwx. 1 root root 7 10月 16 22:16 /bin -> usr/bin

链接文件大小与后面的路径有关系,

那么如何做软连接了:如下:

 ln      -s       源连接文件         目标文件(不存在)

ln   -s      old.dir          soft.link.dir

如下实验:我们把yum.log链接到/root/下的111目录:

[root@localhost tmp]# ln -s /tmp/yum.log /root/111/yum1.log

 [root@localhost tmp]# ls -l /root/111/

lrwxrwxrwx 1 root root 12 12月 21 14:38 yum1.log -> /tmp/yum.log

建议使用写成绝对路径的方式,不然容易出现问题:

软连接:可用于工作中解决磁盘占用 空间的问题:

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接.

注意:硬链接不能链接目录,不能跨分区连接:

本文转自 芬野 51CTO博客,原文链接:http://blog.51cto.com/yuanhaohao/2052943,如需转载请自行联系原作者
你可能感兴趣的文章
struts2自定义拦截器
查看>>
Eclipse安装adt插件后之后看不到andorid manger
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
Zookeeper 集群安装配置,超详细,速度收藏!
查看>>
js中var self=this的解释
查看>>
js--字符串reverse
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
android ant Compile failed; see the compiler error
查看>>
项目经理笔记一
查看>>
[原]Jenkins(三)---Jenkins初始配置和插件配置
查看>>
Cache Plugin 实现过程
查看>>
TCP服务器端口转发: netsh
查看>>
nginx实现rtmp,flv,mp4流媒体服务器
查看>>
46.tornado绑定域名或者子域名泛域名的处理
查看>>
文本过滤--sed 1
查看>>
PHP CURL并发,多线程
查看>>
ES 概念及动态索引结构和索引更新机制
查看>>
iOS 开发百问(2)
查看>>
MySQL for Mac 安装和基本操作(包含后期的环境变量设置)
查看>>