文件权限与归属
linux系统中一切都是文件,但是每个文件的类型不尽相同,因此linux上用不用的字符来区分:
- :普通文件
d :目录文件
l :链接文件
b :块设备文件
c :字符设备文件
p :管道文件
Linux中每个文件都有所属的所有组合所有者,并且规定了所有组和所有者以及其他人对文件所拥有的可读、可写、可执行等权限。
文件权限的字符与数字表示
文件所有者 文件所属组 其他用户
读 写 执行 读 写 执行 读 写 执行
r w x r w x r w x
4 2 1 4 2 1 4 2 1
[root@linux opt]# ll
总用量 276
drwxr-xr-x. 2 root root 145 5月 22 19:38 bashScript
drwxr-xr-x :第一位表示文件类型,第2-4位表示所有者rwx权限,第5-7位表示所属组rwx权限,最后三位表示其他用户rwx权限。
文件的特殊权限
SUID
是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限。
例如所有用户都可以执行passwd命令来修改自己的用户密码,而用户密码保存在/etc/shadow文件中,这个文件的默认权限是000,除了root管理员其他用户都不可以访问该文件,
但是在使用passwd命令时加上SUID特殊权限位就可以让普通用户临时获得程序所有者身份把变更的密码信息写入到shadow文件中。
SGID
主要实现两种功能
1.让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
2.在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
SBIT
该特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
文件的隐藏属性
chattr
用于设置文件的隐藏权限,格式 chattr [参数] 文件。如果想把某个隐藏功能添加到文件上,需要在命令后面加上“+参数”,移除隐藏功能使用“-参数”。
chattr命令中用于隐藏权限的参数
i :无法对文件进行修改,若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a :仅允许补充内容,无法覆盖/删除内容
S :文件内容在变更后立即同步到硬盘
s :彻底从硬盘删除,不可恢复
A :不再修改这个文件或目录的最后访问时间
b :不再修改文件或目录的存取时间
D :检查压缩文件中的错误
d :使用dump命令备份时忽略本文件/目录
c :默认将文件或目录进行压缩
u :当删除该文件后依然保留其在硬盘中的数据
t :让文件系统支持尾部合并
x :可以直接访问压缩文件中的内容
lsattr
用于显示文件的隐藏权限,格式 lsattr [参数] 文件。
[root@linux opt]# lsattr aa.txt
---------------- aa.txt # 无隐藏权限
[root@linux opt]# chattr +a aa.txt # 设置隐藏权限
[root@linux opt]# lsattr aa.txt
-----a---------- aa.txt
文件访问控制列表
前面讲的一般权限、特殊权限、隐藏权限有一个共性--都是针对某一类用户设置的。如果希望对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)。
通俗来讲,基于普通文件或目录设置的ACL其实就是针对指定的用户或用户组设置文件或目录的操作权限。如果针对某个目录设置了ACL,则目录中的文件会继承其ACL。
若针对文件设置了ACL,则其不在继承其所在的目录的ACL。
setfacl
用于管理文件的ACL规则,格式 setfacl [参数] 文件名称。文件的ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,
使用setfacl命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
其中针对普通文件使用-m参数,删除某个文件使用-b参数,目录文件使用-R递归参数。
getfacl
用于显示文件上设置的ACL信息,格式 getfacl 文件名称。
su命令与sudo服务
su
su命令可以解决切换用户身份的需求,使得当前用户在不退出的情况下,顺畅地切换到其他用户。
[carl@linux opt]$ su - root # - 表示完全切换,把环境变量也切换为新用户的相应信息
密码: # 其他用户切换到root管理员是需要密码的,root管理员切换到其他用户不需要密码
[root@linux opt]# su - carl
[carl@linux opt]$
sudo
用于给普通用户提供额外的权限来完成原本root管理员才能完成的任务,格式 sudo [参数] 命令名称。
sudo服务中的可用参数以及作用
-h :列出帮助信息
-l :列出当前用户可执行的命令
-u用户名或UID值 :指定用户身份执行命令
-k :清空密码的有效时间,下次执行sudo时需要再次进行密码验证
-b :在后台执行指定的命令
-p :更改询问密码的提示语
该命令的功能:
1.限制用户执行指定的命令
2.记录用户执行的每一条命令
3.配置文件提供集中的用户管理、权限与主机等参数
4.验证密码的后5分钟内无需让用户再次验证密码