Liunx下的文件权限管理
1.文件权限存在的意义
- 系统最底层安全设定方法之一
- 保证文件可以被可用的用户做相应的操作
2.文件权限的查看
使用ls命令列出目录内容
[kiosk@foundation36 Desktop]$ ls -l file # 查看文件的各种属性
-rw-rw-r--. 1 kiosk kiosk 57 Mar 30 20:46 file
[kiosk@foundation36 Desktop]$ ls -ld photo # 查看文件夹的各种属性
drwxrwxr-x. 2 kiosk kiosk 4096 Mar 25 10:05 photo
[kiosk@foundation36 Desktop]$ ll file #与ls命令类似
-rw-rw-r--. 1 kiosk kiosk 57 Mar 30 20:46 file
[kiosk@foundation36 Desktop]$ ll -ld photo #同理
drwxrwxr-x. 2 kiosk kiosk 4096 Mar 25 10:05 photo
3.文件权限的读取
-. |rw-rw-r--.| 1 |kiosk | kiosk | 57 | Mar 30 20:46 | file
[1] [2] [3] [4] [5] [6] [7] [8]
[1]:文件类型
文件类型 符号 文件类型 符号
普通文件 - 目录 d
字符设备文件 c 块设备 b
本地域套接口 s 有名管道 p
符号连接 l
[2]:文件权限
rw-rw-r--
[1][2][3]
1:[u] 文件拥有者对文件能做什么操作
2:[g] 文件所有组对文件能做什么操作
3:[o] 其他人对文件能做什么操作
[3]
文件:文件硬连接个数(文件内容被记录的次数)
目录:目录中子目录的个数
[4]:文件所有人
[5]:文件所有组
[6]:
对文件:文件大小
对目录:目录中子文件元数据(matedate可以理解为文件的属性)大小
[7]:文件内容被修改的时间
[8]:文件的名称
4.如何改变文件的所有权
chown命令用于改变文件的所有权
chown [OPTION]... [OWNER][:[GROUP]] FILE...
这条命令将文件FILE的属主更改为OWNER,属组更改为GROUP
Linux单独提供了另一个命令,charg命令用于设置文件的属组
chgrp [OPTION]... GROUP FILE...
[root@foundation36 Desktop]# touch file #文件属于root用户
[root@foundation36 Desktop]# mkdir -p dir1/dir2/dir3
[root@foundation36 Desktop]# chown lee file #更改文件的属主
[root@foundation36 Desktop]# chgrp linux file #更改文件的属组
[root@foundation36 Desktop]# ls -ld file
-rw-r--r--. 1 lee linux 0 Apr 2 15:04 file
chown命令提供了-R选项,用于改变一个目录下所有文件(和子目录)的所有权设置
[root@foundation36 Desktop]# chown -R lee dir1
[root@foundation36 Desktop]# ls -ld dir1
drwxr-xr-x. 3 lee root 18 Apr 2 15:04 dir1
5.如何改变文件的权限
- 对权限的理解
r | 对文件:是否可以查看文件中的内容 |
---|---|
r | 对目录:是否可以查看目录中有什么子目录或者子文件 |
w | 对文件:是否可以改变文件里面记录的字符 |
w | 对目录:是否可以对目录中子目录或者是子文件的元数据进行修改 |
x | 对文件:是否可以通过文件名称调用文件内记录的程序 |
x | 对目录:是否可以进入目录 |
- 更改的方式
chmod <u|g|o><+|-|=><r|w|x> file|dir
chmod u+x file1 #属主添加执行权限
chmod g-r file2 #属组减去读的权限
chmod ug-r file3 #属组和属主减去读的权限
chmod u-r,g+x file4 #属主减去读的权限,属组添加执行权限
chmod -r file5 #属主,属组和其他人都减去读权限
chmod o=r-x file6 #其他人的权限设置为r-x
- 文件权限的八进制表示
每一组rwx在计算机中实际上占用了3位,每一位都有两种情况,其中0表示没有设置,而1表示设置,例如rwx就被表示为111,-w-表示为010
由于3位二进制对应于1位八进制,因此可以进一步用一个八进制数字来表示一组权限。
八进制 | 二进制 | 权限 | 八进制 | 二进制 | 权限 |
---|---|---|---|---|---|
0 | 000 | — | 5 | 101 | r-x |
1 | 001 | –x | 6 | 110 | rw- |
2 | 010 | -w- | 7 | 111 | rwx |
3 | 011 | -wx | |||
4 | 100 | r– |
举例来说,rwx = 4+2+1 = 7,r-x = 4+0+1 = 5,那么9位权限位就可以用3个八进制来表示,例如“rwxr-x–x"就对应与“751”。
6.umask
umask默认权限是Linux权限的一种,主要用于让Linux中的新建文件和目录拥有默认权限
查看系统的umask权限
[root@foundation36 Desktop]# umask
0022
永久地更改umask需要更改/etc/profile(系统配置文件)和/etc/bashrc(shell配置文件)
使用vim进入/etc/profile和/etc/bashrc文件更改umask的数值
最后更改完成以后需要使用source命令使文件立即执行
source /etc/profile
source /etc/bashrc
7.特殊权限
- sticky #粘制位
作用:只针对目录有效,当一个目录上有Sticky权限时,在这个目录中的文件只能被文件的所有者删除
添加方法:
[kiosk@foundation36 Desktop]$ chmod o+t dir1
[kiosk@foundation36 Desktop]$ chmod 1xxx dir
[kiosk@foundation36 Desktop]$ chmod 1755 dir # 使用上面的方法,1代表添加粘制位,755指定权限
- sgid #强制位
作用:
对文件:只针对二进制可以执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组
[kiosk@foundation36 Desktop]$ chmod g+s dir1
[kiosk@foundation36 Desktop]$ chmod 2xxx dir
[kiosk@foundation36 Desktop]$ chmod 2755 dir # 使用上面的方法,2代表添加强制位,755指定权限
- suid #冒险位
作用:
只针对二进制执行文件,当文件上有suid时任何人执行这个文件中的记的程序产生的进程都属于文件的所有人
[kiosk@foundation36 Desktop]$ chmod u+s dir1
[kiosk@foundation36 Desktop]$ chmod 4xxx dir
[kiosk@foundation36 Desktop]$ chmod 4755 dir # 使用上面的方法,4代表添加冒险位,755指定权限
8.acl权限列表
- 作用:让特定的用户对特定的文件拥有特定权限
- 如何设定acl权限列表
[kiosk@foundation36 Desktop]$ getfacl file #打开权限列表
# file: file
# owner: kiosk
# group: kiosk
user::rw-
group::rw-
other::r--
[kiosk@foundation36 Desktop]$ setfacl -m u:lee:rwx file #设定用户lee对file有rwx权限
[kiosk@foundation36 Desktop]$ ls -ld file
-rw-rwxr--+ 1 kiosk kiosk 0 Apr 2 17:00 file #有+代表有acl列表已经开启
[kiosk@foundation36 Desktop]$ setfacl -m g:lee:rwx file #设定用户lee组对file有rwx权限
[kiosk@foundation36 Desktop]$ setfacl -x u:lee file #从acl列表中删除lee用户
[kiosk@foundation36 Desktop]$ setfacl -b file # 关闭file上的acl列表
- mask
作用:在权限列表中,mask表示能生效的权限值,当用chmod减小或者开启acl列表时mask的值会发生改变
chmod g-w file #g代表的不是用户组,代表mask值,对ugo都有效
setfacl -m m:rwx file #如果要恢复mask的值,则可以使用这条命令
- acl的默认权限设定
acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限
setfacl -m d:u:user:rwx file
setfacl -k #移除默认访问控制列表