目录
文件的一般权限
文件的执行者 执行文件的用户
文件的所有者 默认为创建文件的用户
文件的所有组 默认为创建文件的用户所属的用户组
一般权限有哪些
相同权限对于文件与目录所代表的含义会有不同
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