8.1 一般权限
文件 | 目录 | |
可读(r) | 读取文件内容 | 显示文件列表 |
可写(w) | 修改文件内容 | 新建剪切删除文件 |
可执行(w) | 执行脚本文件 | 进入到该目录 |
rwxrwxrwx:777
会根据权限换算成数字,根据数字确定文件的权限
文件信息
上图包含了文件的类型、访问权限、所有者(属主)、所属组(属组)、占用的磁盘大小、最后修改时间和文件名称等信息。通过分析可知,该文件的类型为普通文件,所有者权限为可读、可写(rw-),所属组权限为可读(r--),除此以外的其他人也只有可读权限(r--),文件的磁盘占用大小是34298字节,最近一次的修改时间为4月2日的0:23,文件的名称为install.log。
常见的文件类型包括普通文件(-)、目录文件(d)、链接文件(l)、管道文件(p)、块设备文件(b)以及字符设备文件(c)。
8.2 特殊权限
管理员不受一般权限控制
SUID:SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)
SGID:SGID特殊权限有两种应用场景:当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限;当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称。
SBIT:保护位,SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件
SUID和SGID:如果原先权限位上没有x执行权限,那么被赋予特殊权限后将变成大写的S,如果有执行权限,赋予特殊权限后变成小写的s
SBIT:原本有x执行权限则会写成t,原本没有x执行权限则会被写成T
文件的权限最大为7777,第一位为特殊权限,后面三位为一般权限
rwsrwsrwt:7777
rwsrwSr--:6764
chmod 设置文件的一般权限和特殊权限
chmod 权限 文件名
chown 设置文件的所有者和所有组
chown 属主:属组 文件名(冒号换成 . 也可以)
针对目录的话chown +R
8.3 隐藏属性
隐藏权限的专用设置命令是chattr,专用查看命令是lsattr。
chattr +a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only),一般会将-a参数设置到日志文件
chattr +i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
chattr +s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
chattr +A 不再修改这个文件或目录的最后访问时间(atime)
文件的隐藏权限必须使用lsattr命令来查看,平时使用的ls之类的命令则看不出端倪
8.4 文件访问控制列表
使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
针对目录文件需要使用-R递归参数;针对普通文件则使用-m参数;如果想要删除某个文件的ACL,则可以使用-b参数。
文件权限的最后一个点(.)变成了加号(+)
getfacl命令用于查看文件的ACL权限规则,英文全称为“get files ACL”,语法格式为“getfacl [参数] 文件名称”
清空全部ACL权限:setfacl -b /XXX
8.5 su和sudo
su - 用户 完全切换到新的用户,即把环境变量信息也变更为新用户的相应信息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)
从root管理员切换到普通用户时是不需要密码验证的,而从普通用户切换成root管理员就需要进行密码验证
sudo 精准SUID,用于给普通用户提供额外的权限,语法格式为“sudo [参数] 用户名”
visudo命令用于编辑、配置用户sudo的权限文件
或者
vim /etc/sudoers