声明:以下内容均学习自《Linux就该这么学》一书
1、文件权限及归属
对目录文件来说,“可读”表示能够读取目录内的文件列表;“可写”表示能够在目录内新增、删除、重命名文件;“可执行”表示能够进入该目录。
- | 普通文件 |
d | 目录文件 |
l | 链接文件 |
b | 块设备文件 |
c | 字符设备文件 |
p | 管道文件 |
权限分配 | 文件所有者 | 文件所属组 | 其他用户 | ||||||
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
chmod
用来设置文件或目录的权限:chmod [参数] 权限 文件或目录名称
例如,把一个目录的权限设置成其所有者可读可写可执行、所属组可读可写、其他人没有任何权限:chmod 760 /home/ln
chown
用来设置文件或目录的所有者和所属组:chown [参数] 所有者:所属组 文件或目录名称
这两者在针对目录进行操作时需要加上大写的-R参数来表示递归操作,即对目录内所有文件进行整体操作。
如:chmod -R 760 /home/ln;/home/ln目录下的所有文件都具有同样的权限。
2、文件的特殊权限
SUID
是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效)。
SGID
让执行者临时拥有属主的权限(对拥有执行权限的二进制程序进行设置)
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
SBIT
Sticky Bit:特殊权限位之粘滞位。
用于确保用户只能删除自己的文件,而不能删除其他用户的文件。
当目录被设置SBIT特殊权限位后,文件的“其他人”权限部分的x执行权限就会被替换成 t 或 T ,如果原本有x执行权限则会写成 t,否则,写成 T。
要是想对其他目录设置SBIT特殊权限位,可以使用chmod命令加 o+t 参数。
如:chmod -R o+t /home/ln
3、chattr
用于设置文件的隐藏权限:chattr [参数] 文件
如果想把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”;如果想把某个隐藏功能移出文件,则需要追加“-参数”。
i | 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件 |
a | 仅允许补充(追加)内容,无法覆盖/删除内容(Append only) |
S | 文件内容在变更后立即同步到硬盘(sync) |
s | 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域) |
A | 不再修改这个文件或目录的最后访问时间(time) |
b | 不再修改文件或目录的存取时间 |
D | 检查压缩文件中的错误 |
d | 使用dump命令备份时忽略本文件/目录 |
c | 默认将文件或目录进行压缩 |
u | 当删除文件后依然保留其在硬盘中的数据,方便日后恢复 |
t | 让文件系统支持尾部合并(tail-merging) |
X | 可以直接访问压缩文件中的内容 |
4、lsattr
用于显示文件的隐藏权限:lsattr [参数] 文件
5、setfacl
用于管理文件的ACL(访问控制列表)规则:setfacl [参数] 文件名称
文件的ACL提供的是在所有者、所属组、其他人的读、写、可执行权限之外的特殊权限控制,使用setfacl命令可针对单一用户或用户组、单一文件或目录来进行读、写、可执行权限的控制。
针对目录文件需要 -R 递归参数;针对普通文件使用 -m 参数;如果想删除某个文件的ACL,可使用 -b 参数。
6、getfacl
用于显示文件上设置的ACL信息:getfacl 文件名称
7、su
用于切换用户身份,在当前用户不退出登录的情况下,顺畅地切换到其他用户。
当从root管理员切换到普通用户时不需要密码验证,而从普通用户切换到root管理员需要进行密码验证。
# 从root管理员切换到普通用户
su - ln_user
# 从普通用户切换到root
su root
su命令与用户名之间的减号 - ,表示完全切换到新用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。
8、sudo
用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务:sudo [参数] 命令名称
sudo具有如下功能:
- 限制用户执行指定的命令;
- 记录用户执行的每一条命令 ;
- 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机参数;
- 验证密码的后5分钟内(默认值)无需再让用户再次验证密码。
-h | 列出帮助信息 |
-l | 列出当前用户可执行的命令 |
-u 用户名或UID值 | 以指定的用户身份执行命令 |
-k | 清空密码的有效时间,下次执行sudo时需要再次进行密码验证 |
-b | 在后台执行指定的命令 |
-p | 更改询问密码的提示语 |