【Linux常用命令11】Linux文件与权限详解

权限

r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示

常用权限

644:代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
755:代表所有者拥有读、写和执行权限,而所属组和其他人拥有读、执行权限。
777:代表所有者、所属组和其他人都拥有读、写权限。

文件的特殊权限:SUID、SGID、SBIT

SUID

SUID:是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。

查看passwd命令属性时发现所有者的权限由rwx变成了rws,其中x改变成s就意味着该文件被赋予了SUID权限。

如果原本的权限是rw-呢?如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S。

SGID

SGID主要实现如下两种功能:
让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)。

在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。例在目录设置SGID,则用户在该目录创建文件,文件的默认的用户组将由用户自己的基本用户组变为目录的所属组,使得同组内的其他用户都能访问该文件。

SBIT

SBIT:确保用户只能删除自己的文件,而不能删除其他用户的文件。如果赋予了SBIT权限,则其他用户中的可执行权限位会从x-变为t/T

chattr:用于设置文件的隐藏权限

chattr [选项] 文件
参数  含义
-R  递归处理目录下的所有文件
-v  设置文件或目录版本
-V  显示指令执行过程
+   开启文件或目录的该项属性
--  关闭文件或目录的该项属性
=   指定文件或目录的该项属性
示例:
用chattr命令防止系统中某个关键文件被修改(加锁):
[root@linuxcool ~]# chattr +i /etc/resolv.conf
解锁:
[root@linuxcool ~]# chattr -i /home/omd/h.txt
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
[root@linuxcool ~]# chattr +a /var/log/messages

chmod:用于修改文件或目录的访问权限

该命令有两种用法:一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

chmod [选项] 权限模式 文件或目录
参数  含义
-c   若该文件权限确实已经更改,才显示其更改动作
-f   若该文件权限无法被更改也不显示错误讯息
-v   显示权限变更的详细资料
-R   对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
​
#用户身份
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
​
#赋予方式
+ :加入权限
- :减去权限
= :设置权限
示例:
将档案 file1.txt 设为所有人皆可读取:
[root@linuxcool ~]# chmod a+r file.txt
将目前目录下的所有文件与子目录皆设为任何人可读取 :
[root@linuxcool ~]# chmod -R a+r *
将 file.txt 设定为只有该文件拥有者可以执行:
[root@linuxcool ~]# chmod u+x file.txt

chown:用于修改文件和目录的用户和所属组

chown [选项] 所有者:所属组 文件或目录
参数  含义
-R   对目前目录下的所有文件与子目录进行相同的拥有者变更
-c   若该文件拥有者确实已经更改,才显示其更改动作
-f   若该文件拥有者无法被更改也不要显示错误讯息
-h   只对于连结(link)进行变更,而非该 link 真正指向的文件
-v   显示拥有者变更的详细资料
--help  显示辅助说明
--version   显示版本
示例:
将test.txt文件用户组与用户都改为bin:
[root@linuxcool ~]# chown bin:bin test.txt  
将当前目录下所有文件的拥有者都改为 linuxcool,用户组改为 linuxcoolgroup:
[root@linuxcool ~]# chown -R linuxcool:linuxcoolgroup *

chgrp:用于修改文件和目录的所属组

chgrp [选项] 所属组 文件或目录
参数  含义
-c   效果类似”-v”参数,但仅回报更改的部分
-f   不显示错误信息
-h   对符号连接的文件作修改,而不更动其他任何相关文件
-R   递归处理,将指定目录下的所有文件及子目录一并处理
-v   显示指令执行过程
--reference 把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
改变文件的群组属性:
[root@linuxcool ~]# chgrp -v linuxcool file
将/usr/linuxcool及其子目录下的所有文件的用户组改为cool:
[root@linuxcool ~]# chgrp -R cool /usr/linuxcool

你可能感兴趣的:(Linux基础知识,linux,服务器,运维)