Linux 文件权限讲解(一般权限、特殊权限、隐藏权限、访问控制列表、Umask)

目录

文件的一般权限

一般权限有哪些

使用ls -l查看文件/目录权限

配置一般权限和文件所属信息

chmod 修改文件权限

chown 修改文件所属信息(所有者和所属组)

chgrp 修改文件所属组

文件特殊权限

SUID 针对所有者的特殊权限

SGID

SBID

配置特殊权限

umask 修改文件的权限掩码

umask介绍

如何通过umask得到文件/目录的默认权

修改umask值

文件的隐藏权限

chattr 配置/删除文件的隐藏权限

lsattr 查看文件的隐藏权限

文件访问控制列表权限

setfacl 管理文件的facl

getfacl 查看文件的facl


文件的一般权限

文件的执行者   执行文件的用户

文件的所有者   默认为创建文件的用户

文件的所有组   默认为创建文件的用户所属的用户组

一般权限有哪些

相同权限对于文件与目录所代表的含义会有不同

read 读取权限

对于一般文件  有此权限用户就可以读取文件内容(例如 cat命令)

对于目录       有此权限的用户就可以显示目录下的文件列表(例如 ls命令)

write 写入权限

对于一般文件  有此权限用户就可以编辑文件的内容(例如 vim命令)

对于目录        有此权限用户就可以在目录下新建、剪切、删除文件(例如touch、mv、rm等命令)

execute 执行权限

对于一般文件   有此权限用户就可以执行这个脚本文件(例如 . /脚本名 运行脚本)

对于目录        有此权限用户就能够进入到目录(例如cd命令 进入目录)

注意事项

W权限可以单独设置,只对文件进行写入操作 (通过重定向实现)

使用ls -l查看文件/目录权限

内容字段分析

- --- --- ---七个字段(文件类型与文件权限)  root文件所有者   root文件所属用户组

-   代表文件类型(linux不通过后缀来区分文件类型)

--- 代表文件所有者的权限

--- 代表文件所有组的权限,归哪个组所有,那么在这个组里面的用户都有此权限(不论这个组是用户的基本组还是扩展组都可以)

--- 代表其它用户,不是文件的所有者,也不属于文件所有组的用户,则就为其它用户

例如:通过 drwxr-xr-x 可以得到以下信息

     d    此文件为目录文件

     rwx  所有者对此文件的权限为rwx

     r-x  所属用户组对此文件的权限为r-x

     r-x  其它用户对此文件的权限为r-x

.代表是是否有ACL扩展权限(.代表没有ACL扩展权限、+代表有ACL扩展权限)

1代表的是文件的链接数为1

第一个root代表的是文件的所属用户

第二个root代表的是文件的所属组(主组)

1383代表的是文件的大小

时间代表的是文件最后的修改时间

最后一位代表的是文件名

文件类型(属于文件属性)

-  一般文件(配置文件)

d  目录文件(文件夹)

l   链接文件(快捷方式)

p  管道文件(现在一般看不到)

b  块设备文件(硬盘、内存、光盘等)

c  字符设备文件(在/dev目录见的比较多)

权限与数字的对应关系

r = 4、w = 2、x = 1

rwxr-xr-x  所代表的数字为7(rwx)5(r-x)5(r-x)

使用数字的方式在进行权限配置时比较方便

配置一般权限和文件所属信息

chmod 修改文件权限

chmod 【参数】权限(数字形式) 文件名————对此文件修改权限

  -R  对目录下的所有文件与子目录进行相同的权限变更

  -c  如果文件权限已经更改了,才显示文件权限的变更信息

  -v  显示文件权限的变更信息(无论文件权限是否变更)

  -f  即使文件权限无法被更改也不显示错误信息

chmod 631 123  修改123文件的一般权限为rw--wx-x

chmod -v 777 123 将123文件的一般权限更改为777,并 显示详细信息

chown 修改文件所属信息(所有者和所属组)

chown 【参数】 文件所有者:文件所属组 文件名———修改文件的所有者和文件所属组

  老版(5)的chown命令:chown 文件所有者.文件所有组 文件名(使用.做间隔)

  -R  对目录下的所有文件与子目录进行相同的所属信息变更

  -c  如果文件所属信息已经更改了,才显示文件所属信息的变更信息

  -v  显示文件所属信息的变更信息(无论文件所属信息是否变更)

  -f  即使文件所属信息无法被更改也不显示错误信息

  -h  只对链接文件进行变更(而非真正指向的文件)

  --version  显示此命令的版本信息

chgrp 修改文件所属组

chgrp 【参数】组名/组ID 文件名————修改文件所属组

  -R  递归处理(将目录下的所有文件都修改)

  -v   显示命令的执行过程

chgrp 100 admin1        将admin1对应的所属组设置为组ID为100的组

chgrp admin2 admin1   将admin1对应的所属组设置为admin2组


文件特殊权限

文件特殊权限是对一般权限的补充(由于管理员不受一般权限的控制,可以通过特殊权限来控制)-特殊权限会对管理员生效

SUID 针对所有者的特殊权限

设置此特殊权限后,所有者的执行权限字符用s或S表示(不用x或-表示)

s和S的区别如下

在配置特殊权限时,如果文件所有者没有执行权限,则配置SUID特殊权限后,文件所有者对此文件的执行权限为S(即如果所有者的权限为r--,配置suid特殊权限后,权限为r-S)

在配置特殊权限时,如果文件所有者有执行权限,则配置SUID特殊权限后,文件所有者对此文件的执行权限为s(即如果所有者的权限为r-x,配置suid特殊权限后,权限为r-s)

针对文件设置SUID权限

会让此文件的执行者临时获取到文件所有者的权限来完成某些工作

SUID必须只能是设置在二进制的可执行文件、脚本上,无法设置到目录上

SUID权限举例

/etc/shadow文件  保存的是用户的密码信息

我们发现用户没有此文件的权限,但是可以通过passwd修改密码, 这个是怎么做到的呢

我们是通过passwd命令来修改名密码的,而passwd的命令文件的所有者执行权限为s

这个s就指的是命令的SUID权限,当某个用户执行passwd命令的时候,他就临时获取到passwd文件所有者的权限

passwd文件所有者是管理员,而管理员不受一般权限控制,所以用户可以通过passwd更改密码;如果用户不使用passwd,则由于用户没有权限,无法修改命令

SGID

设置此特殊权限后,文件所属组执行权限为s或S(不用x或-表示,s和S的区别类似SUID)

针对文件设置SGID权限

让命令的执行者可以临时获取到文件所有组的权限来完成某些工作( 基本上不会使用)

SGID针对文件权限类似于SUID,只不过SGID使得用户临时获取用户组的权限

针对目录设置权限

目录下新建的文件的所有组,会自动继承目录的所有组,一般会把SGID的权限设置到目录上面

正常情况,新建文件的所有者和所有组都是自己(即使用新建命令的命令执行者)

SGID针对目录设置权限举例

在管理员下创建/etc/abc目录,并为此目录配置SGIB权限

然后登录到admin用户下,在/etc/abc目录下创建文件和目录,发现文件和目录的所属组都继承了/etc/abc的所属组,都为root

SBID

设置此特殊权限后,文件的其它用户的执行权限为t或T(不用x或-表示,t和T的区别类似SUID) SBID可以称为保护位

针对文件或目录设置SBID

设置SBID特殊权限后,就可以确保用户只能够删除自己的文件,而不能删除其它用户的文件

root不受特殊权限的控制,即root可以删除任何用户创建的文件

SBID权限举例

chmod 1777 /etc/123 配置文件/etc/123的一般权限为rwxrwxrwx,并配置特殊权限SBID

综合得到文件的权限就为rwxrwxrwt

此时其它用户虽然有文件的权限,但是由于SBID权限的显示,使得用户无法删除此文件

配置特殊权限

参数方式

 suid  u+s

 sgid  g+s

 sbit   o+t

 chmod u+s 文件名   设置文件配置suid权限

数字方式

 suid =  4

 sgid =  2

 sbit  = 1

在通过数字方式配置特殊权限时,需要特殊权限和一般权限结合来配置

chmod 1743 文件 为文件设置特殊权限为1(SBID),一般权限为743

chmod 5451 文件  为文件设置特殊权限为5(SUID+SGID),一般权限为451

即:如果要配置特殊权限SBID,原先的文件权限为rwxrwxrwx

此时配置命令就为 chmod 1777 文件命名 为此文件配置SBID特殊权限(最开头的1数字就代表特殊权限,此处指的是SBID;如果为5表示配置SUID和SBID)

配置完成后文件的权限就会变为rwxrwxrwt


umask 修改文件的权限掩码

umask介绍

umask 【参数】 【权限】        修改/查看文件的权限掩码

  -p        完整打印umask内容

  -S        以符号的形式显示权限掩码

什么是umask值

umask值表示文件的默认权限掩码,通过该掩码定义了不同用户创建文件/目录的默认权限

默认umask值

通过umask  直接查看该用户默认的umask值

root用户的umask值为0022;普通用户的umask值为0002

第一位代表特殊位(对应文件的特殊权限,只有配置了SUID、SGID、SBID此值才有效),暂不考虑

第二位代表文件的用户权限

第三位代表文件的用户组权限

第四位代表文件的其它用户权限

如何通过umask得到文件/目录的默认权

文件创建后的默认权限等于666-umask对应的默认值(如果umask为奇数,则默认权限等于0666-umask值+1)

目录创建后的默认权限等于777-umask对应的默认值

普通用户:默认文件权限为664,默认目录权限为775

Root用户:默认文件权限为644,默认目录权限为755

修改umask值

临时修改umask值

umask 权限掩码                实现临时修改umask值

umask 002              修改该用户的umask值为002

永久修改umask值

通过修改/etc/bashrc或者/etc/profile文件实现永久修改umask值


文件的隐藏权限

文件的隐藏权限,默认看不到的权限(对管理员也生效)

chattr 配置/删除文件的隐藏权限

chattr +参数 文件名  配置文件隐藏权限

chattr - 参数 文件名  删除文件隐藏权限  

   i  无法对文件进行修改(只可以修改此文件的子文件,不能新建和删除此文件)

   a  仅允许向文件追加内容,无法覆盖、删除内容

 u  删除文件,可以恢复(保留在硬盘中的数据)

 s   彻底删除文件,不可恢复(用0填充原文件所在硬盘区域)

S   文件内容变更后立即同步到硬盘

A   不再修改这个文件或者目录的最后访问时间

b   不再修改这个文件或者目录的存取时间(atime)

D   检查压缩文件中的错误

d    使用dump命令备份时忽略本文件/目录

c    默认将文件或目录进行压缩

x    可以直接访问压缩文件的内容

chattr +a abc  文件abc只可以追加内容

lsattr 查看文件的隐藏权限

lsattr 文件

 -a 查看指定目录中全部文件的隐藏属性,包括隐藏文件

 -d 查看指定目录的隐藏属性

 -D 显示属性的名称、默认值

 -E  显示从用户设备数据库中获得属性的当前值

lsattr abc 查看文件abc的隐藏权限


文件访问控制列表权限

文件访问控制列表权限,facl(file access control list),

与一般、特殊、隐藏权限的区别

一般权限、特殊权限、隐藏权限  是对于所有人或某些人做限制的

一般权限 对某些人做限制

特殊权限  对所有人做限制

隐藏权限  对所有人做限制

文件访问控制列表能够针对一个用户以及一个文件来做精准的权限

当同一用户的一般权限与setfacl产生了歧义,setfacl的优先级最高

setfacl 管理文件的facl

setfacl 【参数】 文件名————对文件设置facl

setfacl -m u:用户名:权限 文件名      此文件针对某个用户单独设置权限

setfacl -b 文件名                               删除此文件的所有扩展facl            

  -m 修改权限(权限设置不允许使用数字法)

       u  对用户进行设定

       g  对用户组进行设定

  -R  对目录设定facl

  -b  删除所有扩展facl

  -x  删除某个facl

  -X  从文件中读取facl并删除

  -k  移除默认facl

  -d  设置默认的ACL规则

setfacl -m u:admin:rwx qwe  为用户admin配置针对文件qwe的rwx权限

setfacl -x u:admin qwe         删除用户admin针对文件qwe的facl

getfacl 查看文件的facl

getfacl 【参数】 文件名————查看文件已经设置了哪些文件访问权限

 -a 同getfacl 文件名

 -c 显示文件的facl,不显示注释标题

 -R 显示目录的facl

 -d 显示文件默认的facl

getfacl -a qwe  显示qwe文件的facl

gerfacl -d qwe  显示qwe文件的默认facl

猜你喜欢

转载自blog.csdn.net/m0_49864110/article/details/129034749
今日推荐