一、基本权限
基本权限可以分为r、w、x:可读、可写、可执行。
权限 | 对文件而言 | 对目录而言 |
---|---|---|
r | 可读,表示可以使用类似cat等命令查看文件内容。 | 可以对此目录执行ls以列出内部的所有文件。 |
w | 可写,表示可以编辑或删除此文件。 | 可以在此目录创建文件。 |
x | 可执行,表示可以命令提示符下当做命令提交给内核运行。 | 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息 |
总结 | 如果r单独存在,可以查看文件内容;w单独存在,看不到文件内容,但是可以强制修改文件内容,会覆盖文件内容,单独存在,意义不大;x单独存在,毫无意义。 | 如果只有r权限,可以读(有报错),不能写,也不能进入目录;只有w权限时,毫无意义;只有x权限,只能进入,不能读,不能写。 |
对于目录来说:
目录同时具备rw权限:可以查看内容,不可以进入目录,不能删除目录或它里面的文件。
目录同时具备rx权限:可以查看内容,可以进入目录,不可以修改目录的内容。
目录同时具备wx权限:不可以查看目录内容,可以进入目录,可以删除目录下的文件,前提是你需要知道目录下有什么文件。
查看文件的权限 | 查看目录的权限 |
---|---|
ls -l +文件名(ll +文件名) | ls -ld +目录名(ll -d +目录名) |
权限针对的三类用户:
权限限制对象 | 代表 |
---|---|
u | 属主 |
g | 属组 |
o | 其他用户 |
ls -l +文件名查看权限显示的意义
[root@base ~]# ls -l file.txt
-rw-r--r--. 1 root root 91 5月 4 11:37 file.txt
ll -d +目录名查看权限显示的意义
[root@base ~]# ll -d wenjian
drwxr-xr-x. 2 root root 106 5月 14 08:26 wenjian
位置 | 意义 |
---|---|
第一栏 | -rw-r- -r- -代表这个文件的类型与权限 |
第二栏 | 表示有多少文件名链接到此节点,就是有多少不同的文件名链接到相同的一个inode号码(硬链接数)。 |
第三栏 | 表示这个文件或目录的拥有者账号。 |
第四栏 | 表示这个文件或目录的所属群组 |
第五栏 | 表示这个文件的容量大小,默认单位是Bytes(字节)。 |
第六栏 | 表示这个文件或目录的创建日期或者是最近修改日期,如果这个文件被修改的时间距现在太久,那么只会显示年份。 |
第七栏 | 表示这个文件的文件名。 |
第一栏的第一个字符 | 意义 |
---|---|
d | 表示是目录。 |
- | 表示是文件。 |
l | 表示是链接文件。 |
b | 表示设备文件里面的可供储存的周边设备(可随机存取设备)。 |
c | 表示设备文件里面的序列埠设备,例如鼠标、键盘(一次性读取设备)。 |
接下来的字符三个为一组,且均为“rwx”的三个参数的组合。要注意的是这三个权限的位置不会改变,如果没有权限就会出现-。
第一组:表示文件拥有者可具备的权限;
第二组:表示加入从群组中账号的权限;
第三组:表示非本人且没有加入群组的其他账号的权限。
单位转化
1kb=1024b
1mb=1024kb
1gb=1024mb
1tb=1024gb
注意:Byte是字节数,bit是位数,在计算机中每八位为一字节,也就是1byte=8bit。
修改文件的属性和权限
命令 | 作用 |
---|---|
chgrp | 改变文件所属群组。 |
chown | 改变文件拥有者。 |
chmod | 改变文件权限,SUID,SGID,SBIT等特性。 |
举例
1.改变文件的拥有者。将file.txt文件的拥有者改为snow用户。
[root@base ~]# ll file.txt
-rw-r--r--. 1 root root 91 5月 4 11:37 file.txt
[root@base ~]# id snow
uid=1000(snow) gid=1000(snow) group=1000(snow)
[root@base ~]# chown snow file.txt
[root@base ~]# ll file.txt
-rw-r--r--. 1 snow root 91 5月 4 11:37 file.txt
2.同样将文件的小组改为snow。
[root@base ~]# ll file.txt
-rw-r--r--. 1 snow root 91 5月 4 11:37 file.txt
[root@base ~]# chgrp snow file.txt
[root@base ~]# ll file.txt
-rw-r--r--. 1 snow snow 91 5月 4 11:37 file.txt
3.同样可以使用chown同时改变拥有者和所属组。
[root@base ~]# ll file.txt
-rw-r--r--. 1 snow snow 91 5月 4 11:37 file.txt
[root@base ~]# chown root:root file.txt
[root@base ~]# ll file.txt
-rw-r--r--. 1 root root 91 5月 4 11:37 file.txt
修改文件的权限需要使用chmod命令。
举例:
[root@base ~]# ll file.txt
-rw-r--r--. 1 root root 91 5月 4 11:37 file.txt
[root@base ~]# chmod u+x file.txt
[root@base ~]# ll file.txt
-rwxr--r--. 1 root root 91 5月 4 11:37 file.txt
使用数字来代表权限
权限 | 数字 |
---|---|
r | 4 |
w | 2 |
x | 1 |
[root@base ~]# ll file.txt
-rw-r--r--. 1 root root 91 5月 4 11:37 file.txt
[root@base ~]# chmod 777 file.txt
[root@base ~]# ll file.txt
-rwxrwxrwx. 1 root root 91 5月 4 11:37 file.txt
二、隐藏权限
默认权限与隐藏权限
除了基本的r、w、x权限外,在Linux传统的ext2/ext3/ext4文件系统下,还可以设置其他的系统隐藏属性,这部分可以使用chattr来设置,而以lsattr来查看。
默认权限:umask
表示目前使用者在创建文件或目录时的权限默认值。也称为遮罩码,反向掩码影响用户新创建的文件和目录的默认权限(应减去的权限)
[root@localhost ~]# umask
0022
隐藏权限
查看文件的隐藏权限,lsattr命令。
[root@base ~]# lsattr file.txt
---------------- file.txt
chattr更改文件的隐藏权限。
隐藏权限 | 作用 |
---|---|
a | 让文件或目录仅供附加用途(只能追加,不能覆盖),比较常用。 |
b | 不更新文件或目录的最后存取时间。 |
c | 将文件或目录压缩后存放。 |
d | 将文件或目录排除在倾倒操作之外。 |
i | 不得任意更改变动文件或目录,比较常用。 |
s | 保密性删除文件或目录。 |
S | 即时更新文件或目录。 |
u | 预防意外删除。 |
最重要的就是+i与+a这个属性。+i可以让一个文件无法被更动,对于需要强烈的系统安全的人来说,非常重要。(即使是root,也没有权限。)
[root@base ~]# lsattr file.txt
---------------- file.txt
[root@base ~]# chattr +i file.txt
[root@base ~]# lsattr file.txt
----i----------- file.txt
三、特殊权限和Facl
SUID
运行某程序时,相应进程的属主是程序文件自身的属主,而不是用户本身,只对二进制程序有效,执行者对于程序需要有x权限。
用法:本身具有x权限为s,否则为S。
chmod u+s file.txt
SGID
对于文件:运行某程序时,相应进程的属组是程序文件自身的属组,而不是用户本身的基本组。
对于目录:用户对此目录有rx权限可以进入目录,用户进入此目录后,有效用户组变成该目录的用户组,若此用户在此目录有w权限,则用户创建的文件用户组与该目录用户组相同。
SBIT
只针对目录有效,当用户对目录有wx权限时,用户在该目录创建的文件或目录,只有自己和root才可以删除。
特殊权限 | 数字表达 |
---|---|
SUID | 4 |
SGID | 2 |
SBIT | 1 |
用法:第一个7表示特殊命令后面的三个表示普通权限。
chmod 7755 file.txt
FACL
文件系统访问控制列表:利用了文件的拓展属性,保存了额外的访问控制权限。
getfacl查看
[root@harbor ~]# echo 123 > test.txt
[root@harbor ~]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
ACL权限 | 意义 |
---|---|
-m | 设置后续的acl参数,不可以与-x一起使用。 |
-x | 删除后续的acl参数,不可以与-m一起使用。 |
-b | 删除所有的acl参数。 |
-k | 删除默认的acl参数。 |
-R | 递归设置acl参数。 |
-d | 设置默认acl参数,只对目录有效。 |
setfacl设置用法:必须是存在的用户才可以。
[root@harbor ~]# useradd userA
[root@harbor ~]# setfacl -m u:userA:rw- test.txt
[root@harbor ~]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:userA:rw-
group::r--
mask::rw-
other::r--