目录
文件的一般权限
一般权限有哪些
使用ls -l查看文件/目录权限
配置一般权限和文件所属信息
chmod 修改文件权限
chown 修改文件所属信息(所有者和所属组)
文件特殊权限
SUID 针对所有者的特殊权限
SGID
SBID
配置特殊权限
文件的隐藏权限
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
文件类型(属于文件属性)
- 一般文件(配置文件)
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 权限(数字形式) 文件名 对此文件修改权限
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 显示此命令的版本信息
文件特殊权限
文件特殊权限是对一般权限的补充(由于管理员不受一般权限的控制,可以通过特殊权限来控制)-特殊权限会对管理员生效
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特殊权限后,就可以确保用户只能够删除自己的文件,而不能删除其它用户的文件
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
文件的隐藏权限
文件的隐藏权限,默认看不到的权限(对管理员也生效)
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 -m u:用户名:权限 文件名 此文件针对某个用户单独设置权限
setfacl -b 文件名 删除此文件的所有扩展facl
-m 修改权限(权限设置不允许使用数字法)
u 对用户进行设定
g 对用户组进行设定
-R 对目录设定facl
-b 删除所有扩展facl
-x 删除某个facl
-X 从文件中读取facl并删除
-k 移除默认facl
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