找回密码
 立即注册
Qt开源社区 门户 查看内容

Linux权限

2019-10-4 09:43| 发布者: admin| 查看: 427| 评论: 0

摘要: 1、身份说权限之前,首先要知道身份,一个用户对一个文件或目录只有3种身份:owner,拥有者group,拥有组other,其它人注意:root用户是个特例,root拥有无上的权限。root组,也只是一个普通组。创建一个新文件或目录 ...
1、身份

说权限之前,首先要知道身份,一个用户对一个文件或目录只有3种身份:

  • owner,拥有者

  • group,拥有组

  • other,其它人


注意:

  • root用户是个特例,root拥有无上的权限。

  • root组,也只是一个普通组。

  • 创建一个新文件或目录时,这个文件或目录的拥有者和拥有组,分别是创建这个文件的用户和这个用户的主要组。


2、权限

  • r 可读,用八进制数字4代替

  • w 可写,用八进制数字2代替

  • x 可执行,用八进制数字1代替


注:

  • 查看一个文件权限的时候,如果没有相应的权限就用一个横杆表示

  • 权限对于目录和文件,意义不同


2.1、对文件而言

  • r 可使用文件查看工具获取文件内容

  • w 可修改文件内容

  • x 运行程序


注意:

  • 对于linux而言,一个文件能不能执行,和文件名没关系,只和这个文件里有没有可执行代码和x权限有关。

  • 对一个文件只有w权限,可以echo adafadsf >> file,但是不能用vim去编辑。因为vim这个工具首先需要去查看这个文件,所以对该文件还要有r权限才行。

  • 对一个文件只有x权限,也是不能执行的,因为首先要能读到这个文件的内容,才能执行,所以还要加上r权限


2.2、对目录而言

  • r 可以使用ls命令查看目录中的文件列表

  • w 可以在目录中创建、删除文件

  • x 可以cd到目录,并且能使用ls -l命令查看目录中的文件属性


2.3、实例

/home/tt/f.txt,对于这个路径,user1对tt目录有x权限,对f.txt拥有rwx权限,登陆到user1,分别执行以下命令:

ls /home/tt

  • 没有权限


ls /home/tt/f.txt

  • 有权限


3、更改身份、权限

#更改文件owner

chown user /tmp/tt

#更改文件group

chgrp group /tmp/tt

#更改文件group

chown :group /mnt/tt

#同时更改文件owner和group

#注意,冒号(:)可用点(.)代替

#也可以加上-R,递归修改。

chown user:group /tmp/tt

#指定u,g的权限都是rw

chmod ug=rw /mnt/f1

#= 覆盖原有权限

#+ - 在原有权限基础上,加减

#如果没有权限,可以用u=---,或u=

chmod u=rwx,g+w,o-w /mnt/f1

#更改/mnt/f1文件的权限,参考/mnt/f2的权限

chmod --reference=/mnt/f2 /mnt/f1

#第一个7,表示拥有者的权限之和

#第二个7,表示拥有组的权限之和

#第三个7,表示其它人的权限之和

chmod 777 /mnt/f1

#表示递归把/tmp目录下的所有子目录和子文件权限修改成777

chmod -R 777 /tmp

注意:

  • 只有root可以更改文件的拥有者

  • root可以把拥有组改成任何组

  • 文件拥有者只能把拥有组改成自己所属的组(主组和附属组),而不能改成其它非自己所属的组

  • root或文件的拥有者都可以修改拥有组的权限


4、UMASK 反掩码

  • 对目录而言,默认权限是777,新建一个目录的时候,实际权限是:777-umask

  • 对文件而言,默认权限是666,新建一个文件的时候,实际权限是:666-umask


UID为199以内的用户(包括了root用户)

  • 默认umask是022

  • 目录实际权限:777-022=755

  • 文件实际权限:666-022=644


UID大于199的用户

  • 默认umask是002

  • 目录实际权限:777-002=775

  • 文件实际权限:666-002=664


#查看当前用户的umask值

umask

#临时更改当前用户的umask值,重启失效

#想永久有效,改配置文件/etc/profile

umask 777

5、特殊权限

5.1、SUID

当一个用户去执行一条命令时:

  • 这个用户是拿自己的身份去执行这个命令,所以当前用户首先要对该命令有rx权限,才可执行

  • 执行命令时,命令会拿当前用户的身份去处理相应文件,所以,当前用户还要对命令所处理的文件拥有相应的权限


当一个用户去执行一个带有SUID的命令:

  • 这个用户拿自己的身份去执行这个命令

  • 这个命令在执行过程中,会拿自己拥有者的身份,去对相应的文件进行相应的处理


比如:passwd命令

ll /bin/passwd

总结:

  • SUID只针对二进制文件才有效

  • 执行该二进制文件的用户,对于该二进制文件要有x权限

  • 该二进制文件的拥有者,对于该二进制文件所处理的文件,要有相应的权限


注意:

  • 如果拥有者的x位变成s,表示设置了suid,并且拥有者也设置了x权限

  • 如果变成S,表示只设置了suid,而拥有者自身并没有x权限


命令:

chmod u+s

chmod u-s

5.2、SGID

  • 针对一个二进制文件而言,和SUID一样

  • 针对一个目录而言,在一个带SGID权限的目录下创建一个子文件或子目录时,会继承该目录的拥有组


注意:

  • 如果拥有组的x位变成s,表示设置了guid,并且拥有组也设置了x权限

  • 如果变成S,表示只设置了guid,而拥有组没有设置x权限


命令:

chmod g+s

chmod g-s

5.3、STICKY

  • 只对目录有效

  • 对于一个多人可写的目录,如果设置了sticky权限,那么这个目录下的子文件或子目录,只有两个人可以删,一个是这个子目录或子文件的拥有者,一个是root


命令:

chmod o+t

chmod o-t

数字表示:

SUID:4 SGID:2 STICKY:1

#设置/mnt/test目录的权限为755,并添加一个SGID权限

chmod 4755 /mnt/test

6、目录、文件属性

chattr +a /mnt/f1

  • +,增加一个特殊参数

  • -,移除一个特殊参数

  • =,设定一个特殊参数,覆盖旧参数

  • A,文件的atime保持不变

  • S,一般修改文件,不是同步写入磁盘的,加上S参数,该文件就会同步写入磁盘

  • a,文件只能增加内容,不能删除也不能修改

  • c,自动将文件压缩存储,读的时候,先解压

  • d,文件不会被dump程序备份

  • i,文件不能删、改名、写入,也就是说文件只能读,root也一样

  • s,删除文件时,彻底被清除出磁盘了

  • u,和s相反,删除文件,数据其实还在磁盘


注意:

  • 属性设置,root用户也会受此影响,也就是说root也会被限制。


  • 以上配置只对ext格式的文件系统完全有效

  • xfs文件系统只支持A、a、d、i、S


lsattr /mnt/f1

  • -a,将隐藏文件也显示出来

  • -d,查看目录属性

  • -R,连同子目录也显示出来

----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:龚鑫,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了