文件权限与归属
尽管linux系统中一切皆文件,但是每个文件的类型不尽相同
字符 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
文件的特殊权限
SUID
suid是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)
当文件由rwx变为rws时,就意味着普通用户临时的获得了修改passwd文件的权限
SGID
让执行者临时拥有属组的权限。
让某个目录中创建的文件自动继承该目录的用户组。
chown命令
设置文件所有者
chown 【-R】 user名 :group名 文件名 # -R是在文件夹的时候添加
chmod 命令
修改文件所属用户,所属组,其他用户的权限
chmod 777 文件名
chgrp命令
设置文件所属组
chgrp 【-R】 所属组 文件名 (目录名)
SBIT
SBIT特殊权限位,可确保用户只能删除自己的文件,而不能删除其他用户的文件
当设置SBIT后,文件的其他人权限的x就会变为t,如果没x就会变为T。
文件隐藏属性
chattr命令
用于设置文件的隐藏属性
chattr 【参数】 文件 # 加功能就是+参数,移除功能就是移除参数
参数 | 作用 |
---|---|
i | 文件:不允许删除改名,添加和修改数据 目录:只能修改目录下文件的数据,不允许新建和删除文件。 |
a | 文件:只能增加,不能删除修改 目录:只能修改,新建,不允许删除。 |
S | 文件内容在修改之后立即同步到硬盘 |
s | 彻底从硬盘中删除,不可回复 |
A | 不在修改这个目录或文件的最后访问时间(atime) |
b | 不在修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或者目录进行压缩 |
u | 当删除文件后依然保持其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并 |
X | 可以直接访问压缩文件中的内容。 |
lsattr命令
用于显示文件的隐藏权限
文件访问控制列表(ACL)
不知道大家是否注意到,前文讲的一般权限,特殊权限,隐藏权限其实有一个共性-----权限是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了。
基于普通文件或目录设置的ACL其实就是针对指定的用户或者用户组设置文件或目录的操作权限。
如果针对某个目录设置了ACL,则目录的文件会继承其ACL,若针对文件设置了ACL,则文件不在继承其所在目录的ACL。
setfacl命令
用于管理文件的ACL规则
setfacl 【参数】 文件名称
-R #针对目录文件使用的递归参数
-m #针对普通文件使用的参数
-b #删除某个文件的ACL
例:给一个普通用户设置进去/root的rwx权限
但是的但是 我们怎么知道这个文件上是不是有ACL呢。
常用的ls命令是看不到ACL表的信息的,但是却可以看到文件的权限最后一个点(.)变成了加号(+)。这就意味着文件已经设置了ACL了。
getfacl命令
用于显示文件上设置的ACL信息
getfacl 文件名称
su命令与sudo服务
su命令
解决切换用户身份的需求使得当前用户在不退出登录的情况下,顺畅的切换到其他用户。
sudo
你从普通用户切换到root用户,是需要root密码的,这就存在着泄露root用户密码的风险。
sudo命令用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务
sudo 【参数】 命令名称
参数 | 作用 |
---|---|
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名 或 UID值 | 以指定的用户身份执行命令 |
-k | 清空密码的有效时间,下次执行sudo命令需要再次进行密码验证 |
-b | 在后台执行指定的命令 |
-p | 更改询问密码的提示语 |
总结来说,sudo有以下功能:
- 限制用户执行指定的命令
- 记录用户执行的每一条命令
- 配置文件(/etc/sudoers)提供集中的用户管理,权限与主机参数(visudo就是这里面的内容)
- 验证密码的后5分钟内无需让用户再次验证密码。
visudo的内容:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
dianxin3 ALL=(ALL) ALL
aqassoc ALL=(ALL) NOPASSWD:ALL,!/bin/su,!/sbin/init,!/sbin/shutdown # !后面的是除了的