文件权限&根目录
1、文件权限与归属
Linux中一切皆文件,所以使用不同的字符来进行区分。常见字符如下
-:普通文件
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道符文件
除此之外每个文件都有所属的所有者和所有组,同时规定了文件的所有者、所有组以及其让人对文件所拥有的可读(r)、可写(w)、可执行(x)等权限。
可读:能够读取文件的实际内容
可写:能够编辑、新增、修改、删除文件的实际内容
可执行:能够运行一个脚本程序
对于目录而言,可读就是能读取目录内的文件;可写就是能够对目录内的文件进行新增、删除、重命名;可执行就是能进入该目录。
文件的读写执行权限可以简写为rwx也可以用数字4、2、1表示。
权限配额 | 文件所有者 | 文件所属组 | 其他用户 | ||||||
---|---|---|---|---|---|---|---|---|---|
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
大家可以自己练习一下权限的数字表示和字符表示。把764、642、153、731转换成字符表示,把rwxrw-r--、rw--w--wx、rw-r--r--转换成数字表示。
答案(选中文字显示):764:rwxrw-r--、642:rw-r---w-、153:--xr-x-wx、731:rwx-wx--x
rwxrw-r--:764、rw--w--wx:623、rw-r--r--:644
2、文件的特殊权限
SUID、SGID以及SBIT都是用chmod命令设置。
2.1 SUID
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有文件所有者的权限(仅对拥有执行权限的二进制程序生效)。即只有文件所有者拥有对该文件拥有执行权限时才能正常执行。
2.2 SGID
SGID是参考SUID设计专门为组设置权限的权限。相比较SUID只能给文件设置权限,SGID还能给目录设置权限。
让执行者临时拥有文件所属组的权限(对拥有执行权限的二进制程序进行设置)
在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)
2.3 SBIT
SBIT权限可以确保用户只能删除自己的文件,而不能删除其他用户的文件。SBIT仅对目录生效,非本目录所有者,无权删除该目录下的文件,仅能删除自己创建的文件。other权限必须是7才能正常生效,否则无法创建文件。
SUID、SGID、SBIT共同组成特殊权限位,SUID是4,SGID是2,SBIT是1。
假设,某个文件的权限为6765,第一个数字便是特殊权限的表示位,该权限的字符表示为:rwsrwSr-x。
SUID用s表示,文件所有者拥有执行权限用小写s;不拥有用大写s。其他两个同SUID,SGID同样用s表示,SBIT用t表示。
即:将文件的普通权限先用字符表示出来(即rwxrw-r-x),特殊权限值为6(4+2)又因为文件所属组不拥有该文件的执行权限,所以用S表示,得6765的字符表示为rwsrwSr-x。
3、 文件的隐藏属性
3.1 chattr命令
chattr命令设置文件的隐藏属性,格式为:chattr [参数] 文件
。
为文件添加掩藏属性,则使用chattr +参数 文件
;取消文件的隐藏属性,则使用chattr -参数 文件
。
常用的参数为i参数和a参数。对文件设置i参数,将无法对文件新型增删、改名修改数据等操作;对目录设置i参数,只能修改目录下的数据而不能建立和删除文件。对文件设置a参数,只能追加数据而不能删除或覆盖数据(追加数据不能使用vi编辑器,需要通过重定向进行追加数据);对目录设置a参数,仅允许在目录下建立和修改文件而不能删除。
3.2 lsattr命令
lsattr查看设置的隐藏权限,格式为:lsattr 文件
。
当查阅目录的隐藏权限时使用-d参数
4、文件控制访问列表(ACL)
ACL是针对指定的用户或用户组设置文件或目录的操作权限。如果对目录设置了ACL,则目录中的文件就会继承目录的ACL;若针对文件设置ACL,则文件不在继承所在目录的ACL。
4.1 开启ACL
ACL是默认开启的,一般情况下不用手动开启,如果默认情况下没有开启的话就需要我们手动开启了。我们使用dumpe2fs -h 根目录的挂载点
查看。
临时开启ACL权限:使用mount -o remount,acl /
重新挂载并加载ACL。
永久开启ACL权限:修改fstab文件,在根目录一行defaults后加“,acl”,保存后重启系统或使用mount -o remount /
重新挂载根目录。
4.2 setfacl命令
setfacl命令用于管理文件的ACL规则,格式为:setfacl [参数] 文件名称
。
参数 | 作用 |
---|---|
-m | 针对某一文件设置ACL权限 |
-R | 针对某一目录的递归设置ACL权限 |
-b | 对文件或目录取消ACL权限 |
4.3 getfacl命令
getfacl命令命令用于显示文件上设置的ACL信息 ,格式为:getfacl 文件名称
。
4.4 su命令与sodu服务
su命令可以解决切换用户身份的需求,使得当前用户在不退出登录的情况下顺畅的切换到其他用户。格式为 :su [-] [用户账户]
。
在不输入账户的情况下使用su命令默认切换为root账户。
su命令与用户名之间加一个减号(-)代表着完全切换到该用户,即把环境变量也变更为该用户的信息。
sudo服务可以把特定命令的执行权限赋予指定用户,保证普通用户在能够完成工作的基础上而不泄露root管理员密码。
如果要对sudo服务进行配置则需要使用visudo命令对sodu服务配置文件进行修改。
sudo命令的配置文件中大约第99行的位置有一个可以当作模板的格式,可以在它的下方进行配置。
格式:谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
可执行的命令列表中的命令必须是绝对路径,切各个命令之间用逗号(,)做分割。
这样就可以让普通用户使用相对应的命令了。
5、一切从根(/)开始
Linux系统中的一切都是从根目录开始的,并按照文件系统层次化标准(FHS)采用树形结构来存放文件,以及定义了常见目录的用途。Linux系统严格区分大小写。
路径分为相对路径和绝对路径:
绝对路径:繁琐,但不论你身处何方只要你找的东西在,根据一级一级的寻找一定能找到你想要的东西。
相对路径:相对简洁,但以当前位置为起点,不具有普适性。