Linux之权限设定

文章目录

  • 1、查看及读取文件信息
    • (1)查看文件属性
    • (2)对属性各字段的解释
  • 2、 文件的拥有者及拥有组
    • (1)文件的拥有者及拥有组
    • (2)更改文件拥有者及拥有组的方法
  • 3、文件权限的理解
  • 4、文件权限设定方式
    • (1)字符方式设定文件权限
    • (2)数字方式设定权限
    • (3)依照模板复制文件权限
    • (4)
  • 5、系统预留权限阈值
    • (1)对权限预留阈值的理解
    • (2)权限预留阈值设定
  • 6、特殊权限
    • (1)对特殊权限的理解
    • (2)对特殊权限的设定
  • 7、ACL权限列表
    • (1)facl概述及注意事项
    • (2)有关facl的命令
    • (3)facl列表权限匹配顺序
    • (4)facl的mask阈值
    • (5) facl的default权限
  • 8、练习题
    • (1)新建用户组:shengchan、caiwu、jishu
    • (2)新建用户要求如下
    • (3)新建目录要求如下
    • (4)设定普通用户新建文件权限为“r--r-----”
    • (5)设定admin用户可以通过sudo自由建立新用户

1、查看及读取文件信息

(1)查看文件属性

命令 解释
ls -l file 查看文件属性
ll file 查看文件属性
ls -ld dir 查看目录属性
ll -d dir 查看目录属性

(2)对属性各字段的解释

Linux之权限设定_第1张图片

文件 目录
1 类型 类型
2 文件权限 目录权限
3 SELinux Context SELinux Context
4 文件硬链接个数 目录中子目录的个数
5 文件拥有者 目录拥有者
6 文件拥有组 目录拥有组
7 文件大小 目录中子文件或子目录元数据大小
8 文件最后一次被修改时间 目录中的内容最后一次被修改时间
9 文件名称 目录名称
[root@workstation Desktop]# cd /mnt   
[root@workstation mnt]# touch file
[root@workstation mnt]# mkdir westos
[root@workstation mnt]# ls -l file
-rw-r--r--. 1 root root 0 Jan  9 21:47 file
[root@workstation mnt]# ln /mnt/file /root/Desktop/file1 	#创建硬链接
[root@workstation mnt]# ls -l file
-rw-r--r--. 2 root root 0 Jan  9 21:47 file
[root@workstation mnt]# echo haha > file
[root@workstation mnt]# ll file
-rw-r--r--. 1 root root 5 Jan  9 21:53 file
[root@workstation mnt]# ls -ld westos/
drwxr-xr-x. 2 root root 6 Jan  9 21:48 westos/
[root@workstation mnt]# touch westos/file
[root@workstation mnt]# ll -d westos/
drwxr-xr-x. 2 root root 18 Jan  9 21:58 westos/
[root@workstation mnt]# mkdir westos/redhat
[root@workstation mnt]# ll -d westos/
drwxr-xr-x. 3 root root 32 Jan  9 22:00 westos/
[root@workstation mnt]# rm -rf westos/redhat/
[root@workstation mnt]# ll -d westos/
drwxr-xr-x. 2 root root 18 Jan  9 22:02 westos/
[root@workstation mnt]# ls -a westos/
.  ..  file

第一个字符代表该文件的类型

符号 含义
- 文件
d 目录
l 链接文件(link file)
b 设备文件里可供存储的周边设备(可按块随机读写的设备)
c 设备文件里的串行接口设备,例如键盘、鼠标(一次性读取设备)
s 套接字

2、 文件的拥有者及拥有组

(1)文件的拥有者及拥有组

Linux是个多用户多任务的系统,常常会有多人同时使用同一主机来进行工作,为了考虑每个人的隐私权以及每个人爱好的工作环境,对用户进行分类。
用户对于文件的身份划分:

  • 文件拥有者(user)
  • 文件所属组(group)
  • 其他人(others)

(2)更改文件拥有者及拥有组的方法

注:文件拥有者及拥有组只有超级用户root可以修改

命令 要改成的用户名或组名 目标
chown 用户名 文件
chgrp 组名称 文件
chown -R 用户名 目录
chgrp -R 组名称 目录
chown 用户名:组名称 文件
chown 用户名.组名称 文件
chown -R 用户名:组名称 目录
chown -R 用户名.组名称 目录
[root@workstation Desktop]# cd /mnt
[root@workstation mnt]# touch linux{1..3}
[root@workstation mnt]# mkdir westos
[root@workstation mnt]# touch westos/rehat{1..3}
[root@workstation mnt]# ls -l /mnt
total 0
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux1
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux2
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux3
drwxr-xr-x. 2 root root 48 Jan  9 22:24 westos
[root@workstation mnt]# ls -Rl /mnt
/mnt:
total 0
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux1
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux2
-rw-r--r--. 1 root root  0 Jan  9 22:23 linux3
drwxr-xr-x. 2 root root 48 Jan  9 22:24 westos

/mnt/westos:
total 0
-rw-r--r--. 1 root root 0 Jan  9 22:24 rehat1
-rw-r--r--. 1 root root 0 Jan  9 22:24 rehat2
-rw-r--r--. 1 root root 0 Jan  9 22:24 rehat3
[root@workstation mnt]# watch -n 1 "ls -Rl /mnt"
[root@workstation mnt]# useradd haha
[root@workstation mnt]# ll linux1
-rw-r--r--. 1 root root 0 Jan 10 01:37 linux1
[root@workstation mnt]# chown student linux1
[root@workstation mnt]# ll linux1
-rw-r--r--. 1 student root 0 Jan 10 01:37 linux1
[root@workstation mnt]# chgrp haha /mnt/linux1
[root@workstation mnt]# ll linux1
-rw-r--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# ll linux2
-rw-r--r--. 1 root root 0 Jan 10 01:37 linux2
[root@workstation mnt]# chown student.haha /mnt/linux2
[root@workstation mnt]# ll linux2
-rw-r--r--. 1 student haha 0 Jan 10 01:37 linux2
[root@workstation mnt]# ll linux3
-rw-r--r--. 1 root root 0 Jan 10 01:37 linux3
[root@workstation mnt]# chown haha:student linux3
[root@workstation mnt]# ll linux3
-rw-r--r--. 1 haha student 0 Jan 10 01:37 linux3
[root@workstation mnt]# chown student:student westos/
[root@workstation mnt]# ll -R
.:
total 0
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux1
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxr-xr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-r--r--. 1 root root 0 Jan 10 01:37 redhat1
-rw-r--r--. 1 root root 0 Jan 10 01:37 redhat2
-rw-r--r--. 1 root root 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chown student:student westos/ -R
[root@workstation mnt]# ll -R
.:
total 0
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux1
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxr-xr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat1
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat2
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat3

3、文件权限的理解

Linux之权限设定_第2张图片
Linux之权限设定_第3张图片

4、文件权限设定方式

设定权限的方式 命令
字符方式设定文件权限 chmod [参数] 权限模式 目标
数字方式设定文件权限 chmod [参数] 权限值 目标
依照模板复制文件权限 chmod [参数] --reference=模板 目标

(1)字符方式设定文件权限

chmod <+/-/=> 目标
例:

chmod 参数 权限模式 目标
chmod u=rw 文件
chmod ug-w,o+x 文件
chmod -r/-x/-w 文件
chmod a-w 文件
chmod -R u=rw 目录
chmod -R ug-w,o+x 目录
chmod -R -r/-x/-w 目录
chmod -R a-w 目录
[root@workstation mnt]# ll linux1
-rw-r--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod u+x linux1
[root@workstation mnt]# ll linux1
-rwxr--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod u-w linux1
[root@workstation mnt]# ll linux1
-r-xr--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod u=w linux1
[root@workstation mnt]# ll linux1
--w-r--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod g+w linux1
[root@workstation mnt]# ll linux1
--w-rw-r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod ugo-rw linux1
[root@workstation mnt]# ll linux1
----------. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod u+r,g+w linux1
[root@workstation mnt]# ll linux1
-r---w----. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod go=r linux1
[root@workstation mnt]# ll linux1
-r--r--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod u=rwx linux1
[root@workstation mnt]# ll linux1
-rwxr--r--. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod a=x linux1
[root@workstation mnt]# ll linux1
---x--x--x. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# chmod -x linux1
[root@workstation mnt]# ll linux1
----------. 1 student haha 0 Jan 10 01:37 linux1
[root@workstation mnt]# ll -R 
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxr-xr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat1
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat2
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chmod g+w westos/
[root@workstation mnt]# ll -R 
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxrwxr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat1
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat2
-rw-r--r--. 1 student student 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chmod -R g+w westos/
[root@workstation mnt]# ll -R 
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-r--r--. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxrwxr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat1
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat2
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat3

(2)数字方式设定权限

权限可以用一个八进制数字来表示

权限 二进制 八进制
- - - 000 0
- - x 001 1
- w - 010 2
- wx 011 3
r- - 100 4
r-x 101 5
rw- 110 6
rwx 111 7

权限管理方法
chmod 数字 TAG

[root@workstation mnt]# ll linux2
-rw-r--r--. 1 student haha 0 Jan 10 01:37 linux2
[root@workstation mnt]# chmod 777 linux2
[root@workstation mnt]# ll linux2
-rwxrwxrwx. 1 student haha 0 Jan 10 01:37 linux2
[root@workstation mnt]# chmod 666 linux2
[root@workstation mnt]# ll linux2
-rw-rw-rw-. 1 student haha 0 Jan 10 01:37 linux2
[root@workstation mnt]# ls -lR
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-rw-rw-. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxrwxr-x. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat1
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat2
-rw-rw-r--. 1 student student 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chmod -R 777 westos/
[root@workstation mnt]# ls -lR
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-rw-rw-. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxrwxrwx. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat1
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat2
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat3

(3)依照模板复制文件权限

复制权限方式
chmod --reference=属性源文件 TAG
例:chmod --reference=/mnt/westos westos1

[root@workstation mnt]# ls -lR
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-rw-rw-. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
drwxrwxrwx. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat1
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat2
-rwxrwxrwx. 1 student student 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chmod -R --reference=linux1 westos/
[root@workstation mnt]# ls -lR
.:
total 0
----------. 1 student haha     0 Jan 10 01:37 linux1
-rw-rw-rw-. 1 student haha     0 Jan 10 01:37 linux2
-rw-r--r--. 1 haha    student  0 Jan 10 01:37 linux3
d---------. 2 student student 51 Jan 10 01:37 westos

./westos:
total 0
----------. 1 student student 0 Jan 10 01:37 redhat1
----------. 1 student student 0 Jan 10 01:37 redhat2
----------. 1 student student 0 Jan 10 01:37 redhat3
[root@workstation mnt]# chmod --reference=linux1 linux2
[root@workstation mnt]# ll linux2
----------. 1 student haha 0 Jan 10 01:37 linux2

(4)

[root@workstation mnt]# cp linux1 linux4
[root@workstation mnt]# cp -p linux1 linux5
[root@workstation mnt]# ll linux{1,4,5}
----------. 1 student haha 0 Jan 10 01:37 linux1
----------. 1 root    root 0 Jan 10 03:05 linux4
----------. 1 student haha 0 Jan 10 01:37 linux5

5、系统预留权限阈值

(1)对权限预留阈值的理解

  • 资源存在意义在于共享,权限开放越大,共享效果越明显,但是安全性越差
  • 对于系统安全而言,开放权利越小,系统越安全
  • 在系统中开放应开放的权利,保留不安全的权利以确保系统功能性及安全性

(2)权限预留阈值设定

[root@workstation Desktop]# touch file
[root@workstation Desktop]# mkdir westos
[root@workstation Desktop]# umask
0022
[root@workstation Desktop]# ll -R
.:
total 0
-rw-r--r--. 1 root root 0 Jan 10 03:18 file
drwxr-xr-x. 2 root root 6 Jan 10 03:18 westos

./westos:
total 0
[root@workstation Desktop]# rm -rf * 
[root@workstation Desktop]# touch file
[root@workstation Desktop]# mkdir westos
[root@workstation Desktop]# ll -R
.:
total 0
-rw-------. 1 root root 0 Jan 10 03:23 file
drwx------. 2 root root 6 Jan 10 03:23 westos

./westos:
total 0

若要永久修改

[root@workstation Desktop]# vim /etc/bashrc
[root@workstation Desktop]# vim /etc/profile

Linux之权限设定_第4张图片
Linux之权限设定_第5张图片

[root@workstation Desktop]# source /etc/bashrc
[root@workstation Desktop]# source /etc/profile
[root@workstation Desktop]# rm -rf *
[root@workstation Desktop]# touch file
[root@workstation Desktop]# mkdir westos
[root@workstation Desktop]# ll -R 
.:
total 0
----------. 1 root root 0 Jan 10 03:44 file
d---------. 2 root root 6 Jan 10 03:44 westos

./westos:
total 0

6、特殊权限

(1)对特殊权限的理解

SUID

  • 只针对二进制可执行文件,使用拥有SUID权限的文件发其中记录的程序时以文件拥有者的身份去执行

SGID

  • 针对二进制可执行文件:该命令发起的程序是以该命令所有组的身份去执行
  • 针对目录:目录新建文件的所属组与该目录的所有组保持一致

STICKYID

  • 对于文件:表示即使没有被程序调用也会被加载到交换空间中
  • 对于目录:表示当目录上有STICKID的权限时,所有用户在该目录下均可创建文件,但只有文件拥有者和root用户可以删除该目录下的文件

(2)对特殊权限的设定

SUID

chmod u+s TAG
chmod 4原文件属性 TAG

SGID

chmod g+s TAG
chmod 2原文件属性 TAG

STICKYID

chmod o+t TAG
chmod 1原文件属性 TAG
[root@workstation mnt]# rm -rf *
[root@workstation mnt]# mkdir /mnt/westos
[root@workstation mnt]# chmod 777 /mnt/westos/
[root@workstation mnt]# ls -ld /mnt/westos;ls -l /mnt/westos
drwxrwxrwx. 2 root root 6 Jan 12 00:05 /mnt/westos
total 0
[root@workstation mnt]# su - student 
Last login: Sat Jan 11 21:55:57 EST 2020 on pts/0
[student@workstation ~]$ cd /mnt/westos/
[student@workstation westos]$ touch file
[student@workstation westos]$ ls -ld /mnt/westos/;ll /mnt/westos/
drwxrwxrwx. 2 root root 18 Jan 12 00:07 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:07 file
[student@workstation westos]$ exit
logout
[root@workstation mnt]# su - westos 
Last login: Sat Jan 11 21:38:13 EST 2020 on pts/0
[westos@workstation ~]$ touch /mnt/westos/file1
[westos@workstation ~]$ ll -d /mnt/westos/;ll /mnt/westos/
drwxrwxrwx. 2 root root 31 Jan 12 00:10 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:07 file
-rw-rw-r--. 1 westos  westos  0 Jan 12 00:10 file1
[westos@workstation ~]$ rm -rf /mnt/westos/file1
[westos@workstation ~]$ ll -d /mnt/westos/;ll /mnt/westos/
drwxrwxrwx. 2 root root 18 Jan 12 00:11 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:07 file
[westos@workstation ~]$ rm -rf /mnt/westos/file
[westos@workstation ~]$ ll -d /mnt/westos/;ll /mnt/westos/
drwxrwxrwx. 2 root root 6 Jan 12 00:11 /mnt/westos/
total 0
[root@workstation mnt]# chmod o+t /mnt/westos/
[root@workstation mnt]# ls -ld /mnt/westos;ls -l /mnt/westos
drwxrwxrwt. 2 root root 6 Jan 12 00:11 /mnt/westos
total 0
[student@workstation ~]$ touch /mnt/westos/file
[student@workstation ~]$ ls -ld /mnt/westos/;ll /mnt/westos/
drwxrwxrwt. 2 root root 18 Jan 12 00:16 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:16 file
[root@workstation mnt]# su - westos 
Last login: Sun Jan 12 00:09:11 EST 2020 on pts/0
[westos@workstation ~]$ touch /mnt/westos/file1
[westos@workstation ~]$ ll -d /mnt/westos/;ll /mnt/westos/
drwxrwxrwt. 2 root root 31 Jan 12 00:17 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:16 file
-rw-rw-r--. 1 westos  westos  0 Jan 12 00:17 file1
[westos@workstation ~]$ rm -rf /mnt/westos/file1
[westos@workstation ~]$ ll -d /mnt/westos/;ll /mnt/westos/
drwxrwxrwt. 2 root root 18 Jan 12 00:18 /mnt/westos/
total 0
-rw-rw-r--. 1 student student 0 Jan 12 00:16 file
[westos@workstation ~]$ rm -rf /mnt/westos/file
rm: cannot remove '/mnt/westos/file': Operation not permitted

[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
drwxrwxrwt. 2 root root 6 Jan 12 00:31 westos
/mnt/westos:
total 0
[root@workstation mnt]# chown westos.westos /mnt/westos/
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
drwxrwxrwt. 2 westos westos 6 Jan 12 00:31 westos
/mnt/westos:
total 0
[root@workstation mnt]# chmod 777 /mnt/westos/
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
drwxrwxrwx. 2 westos westos 6 Jan 12 00:31 westos
/mnt/westos:
total 0
[root@workstation mnt]# chmod g+s /mnt/westos/
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
drwxrwsrwx. 2 westos westos 6 Jan 12 00:31 westos
/mnt/westos:
total 0
[root@workstation mnt]# su - student 
Last login: Sun Jan 12 00:16:01 EST 2020 on pts/0
[student@workstation ~]$ touch /mnt/westos/file
[student@workstation ~]$ ll -R /mnt/
/mnt/:
total 0
drwxrwsrwx. 2 westos westos 18 Jan 12 00:36 westos
/mnt/westos:
total 0
-rw-rw-r--. 1 student westos 0 Jan 12 00:36 file
[root@workstation mnt]# chmod 4755 /mnt/file
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
-rwsr-xr-x. 1 root   root    0 Jan 12 00:42 file
drwxrwsrwx. 2 westos westos 18 Jan 12 00:36 westos
/mnt/westos:
total 0
-rw-rw-r--. 1 student westos 0 Jan 12 00:36 file
[root@workstation mnt]# chmod 6755 /mnt/file
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
-rwsr-sr-x. 1 root   root    0 Jan 12 00:42 file
drwxrwsrwx. 2 westos westos 18 Jan 12 00:36 westos
/mnt/westos:
total 0
-rw-rw-r--. 1 student westos 0 Jan 12 00:36 file
[root@workstation mnt]# chmod 7755 /mnt/file
[root@workstation mnt]# ls -lR /mnt
/mnt:
total 0
-rwsr-sr-t. 1 root   root    0 Jan 12 00:42 file
drwxrwsrwx. 2 westos westos 18 Jan 12 00:36 westos
/mnt/westos:
total 0
-rw-rw-r--. 1 student westos 0 Jan 12 00:36 file

7、ACL权限列表

(1)facl概述及注意事项

传统的权限仅有三种身份(owner,group,others)搭配三种权限(r,w,x),并没有办法单纯的针对某一个使用者或某一个群组来设置特定的权限需求,这时就需要使用ACL(文件访问控制,Access Control List)这个机制
注意:因此目前ACL几乎已经默认加入在所有常见的Linux文件系统的挂载参数中(ext2/ext3/ext4xfs等),但rhel6.0以及之前的版本默认不支持acl的功能

(2)有关facl的命令

查看权限列表
getfacl
设定权限列表
setfacl

参数 功能
-m 设定权限
-x 删除指定用户
-b 关闭列表功能
[root@workstation Desktop]# cd /mnt
[root@workstation mnt]# touch westos
[root@workstation mnt]# ls -l westos 
-rw-r--r--. 1 root root 0 Jan 11 20:20 westos
[root@workstation mnt]# useradd westos
[root@workstation mnt]# id westos 
uid=1001(westos) gid=1001(westos) groups=1001(westos)
[root@workstation mnt]# setfacl -m u:westos:rw /mnt/westos 
[root@workstation mnt]# ls -l westos 
-rw-rw-r--+ 1 root root 0 Jan 11 20:20 westos
#可看出多了一个加号,表示该文件具有权限列表
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos      
# owner: root          
# group: root			
user::rw-                
user:westos:rw-          
group::r--				
mask::rw-                
other::r--                 

Linux之权限设定_第6张图片

[root@workstation mnt]# su - westos		#切换到westos用户
[westos@workstation ~]$ cd /mnt/
[westos@workstation mnt]$ ls
westos
[westos@workstation mnt]$ vim westos 

Linux之权限设定_第7张图片
:wq退出保存可被执行

[westos@workstation mnt]$ exit
logout
[root@workstation mnt]# ls -l /mnt/westos 
-rw-rw-r--+ 1 root root 13 Jan 11 20:35 /mnt/westos
[root@workstation mnt]# su - student				#切换到student用户
[student@workstation ~]$ cd /mnt
[student@workstation mnt]$ vim westos 

Linux之权限设定_第8张图片
:wq退出保存
Linux之权限设定_第9张图片
:wq!强制退出保存,可看出文件不能被student用户写入

[root@workstation mnt]# setfacl -m u:student:0 /mnt/westos   #设定用户的权限列表
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: root
# group: root
user::rw-
user:student:---
user:westos:rw-
group::r--
mask::rw-
other::r--
#可看出权限列表中增加了一个特定用户
[root@workstation mnt]# setfacl -m g:westos:rwx /mnt/westos 	#设定组的权限列表
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: root
# group: root
user::rw-
user:student:---
user:westos:rw-
group::r--
group:westos:rwx
mask::rwx
other::r--
#可看出权限列表中增加了一个特定用户组
[root@workstation mnt]# setfacl -x g:westos /mnt/westos #从权限列表中删除指定用户组
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: root
# group: root
user::rw-
user:student:---
user:westos:rw-
group::r--
mask::rw-
other::r--
[root@workstation mnt]# setfacl -x u:westos /mnt/westos #从权限列表中删除指定用户
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: root
# group: root
user::rw-
user:student:---
group::r--
mask::r--
other::r--
[root@workstation mnt]# ll westos 
-rw-r--r--+ 1 root root 13 Jan 11 20:35 westos
[root@workstation mnt]# setfacl -b westos 		#关闭权限列表
[root@workstation mnt]# ll westos 
-rw-r--r--. 1 root root 13 Jan 11 20:35 westos	 #加号消失
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: root
# group: root
user::rw-
group::r--
other::r--

(3)facl列表权限匹配顺序

  • 资源拥有者
  • 特殊指定用户
  • 权利开放多的组
  • 权利开放少的组
  • 其他用户
[root@workstation mnt]# ll westos 
-rw-r--r--. 1 root root 13 Jan 11 20:35 westos
[root@workstation mnt]# chown westos.westos westos 
[root@workstation mnt]# ll westos 
-rw-r--r--. 1 westos westos 13 Jan 11 20:35 westos
[root@workstation mnt]# setfacl -m u:westos:0 westos 
[root@workstation mnt]# getfacl westos 
# file: westos
# owner: westos
# group: westos
user::rw-
user:westos:---
group::r--
mask::r--
other::r--
#可看出特殊指定的用户就是westos
[root@workstation mnt]# su - westos 
Last login: Sat Jan 11 20:34:25 EST 2020 on pts/0
[westos@workstation ~]$ cd /mnt/
[westos@workstation mnt]$ ls 
westos
[westos@workstation mnt]$ vim westos 

Linux之权限设定_第10张图片
:wq仍可退出保存文件,可见资源拥有者的权利高于特殊指定用户的权利

[root@workstation mnt]# setfacl -m g:student:rwx /mnt/westos 
[root@workstation mnt]# getfacl westos 
# file: westos
# owner: westos
# group: westos
user::rw-
user:westos:---
group::r--
group:student:rwx
mask::rwx
other::r--
[root@workstation mnt]# usermod -G westos student
[root@workstation mnt]# id student 
uid=1000(student) gid=1000(student) groups=1000(student),1001(westos)
[root@workstation mnt]# su - student 
Last login: Sat Jan 11 20:36:32 EST 2020 on pts/0
[student@workstation ~]$ vim /mnt/westos

Linux之权限设定_第11张图片
:wq仍可退出保存文件

[root@workstation mnt]# setfacl -m g:student:0 westos 
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: westos
# group: westos
user::rw-
user:westos:---
group::r--
group:student:---
mask::r--
other::r--
[root@workstation mnt]# setfacl -m g::rwx /mnt/westos 
#设定其拥有组的权利
[root@workstation mnt]# getfacl /mnt/westos 
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos
# owner: westos
# group: westos
user::rw-
user:westos:---
group::rwx
group:student:---
mask::rwx
other::r--
[root@workstation mnt]# id student 
uid=1000(student) gid=1000(student) groups=1000(student),1001(westos)
[root@workstation mnt]# su - student 
Last login: Sat Jan 11 21:47:29 EST 2020 on pts/0
[student@workstation ~]$ vim /mnt/westos

Linux之权限设定_第12张图片
:wq仍可退出保存文件,可见权利开放多的组的优先级高于权利开放少的组

(4)facl的mask阈值

  • mask阈值是指定用户能够获取的最大有效权限
  • 当设定过facl列表后用chmod缩减文件权限很可能会损坏mask
  • mask的设定

setfacl -m m:权限值 TAG

[root@workstation mnt]# rm -rf *
[root@workstation mnt]# ls
[root@workstation mnt]# touch westos
[root@workstation mnt]# setfacl -m u:westos:rwx westos 
[root@workstation mnt]# getfacl westos 
# file: westos
# owner: root
# group: root
user::rw-
user:westos:rwx
group::r--
mask::rwx
other::r--
[root@workstation mnt]# ll westos 
-rw-rwxr--+ 1 root root 0 Jan 11 22:04 westos
[root@workstation mnt]# chmod g-wx /mnt/westos  #缩减组权限
[root@workstation mnt]# getfacl westos 
# file: westos
# owner: root
# group: root
user::rw-
user:westos:rwx			#effective:r--
group::r--
mask::r--
other::r--
#可见虽然用户westos设定权限为rwx,但生效权限为r--
[root@workstation mnt]# setfacl -m m:rwx /mnt/westos   #恢复mask值
[root@workstation mnt]# getfacl westos 
# file: westos
# owner: root
# group: root
user::rw-
user:westos:rwx
group::r--
mask::rwx
other::r--

(5) facl的default权限

default权限特性

  • 只对目录设定
  • 只对目录中新出现的文件或目录生效
  • 对目录本身不生效
  • 对目录中原有文件不生效

default权限设定方式
setfacl -m d::权限目录

[root@workstation mnt]# rm -rf /mnt/*
[root@workstation mnt]# ls
[root@workstation mnt]# mkdir /mnt/westos
[root@workstation mnt]# touch /mnt/westos/file1
[root@workstation mnt]# ll -d /mnt/westos/
drwxr-xr-x. 2 root root 19 Jan 11 22:15 /mnt/westos/
[root@workstation mnt]# setfacl -m u:student:rwx /mnt/westos/
[root@workstation mnt]# getfacl /mnt/westos/
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos/
# owner: root
# group: root
user::rwx
user:student:rwx
group::r-x
mask::rwx
other::r-x
[root@workstation mnt]# ll /mnt/westos/
total 0
-rw-r--r--. 1 root root 0 Jan 11 22:15 file1
[root@workstation mnt]# getfacl /mnt/westos/file1
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos/file1
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@workstation mnt]# setfacl -R -m u:student:rwx /mnt/westos 
[root@workstation mnt]# getfacl /mnt/westos/file1
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos/file1
# owner: root
# group: root
user::rw-
user:student:rwx
group::r--
mask::rwx
other::r--
[root@workstation mnt]# touch /mnt/westos/file2
[root@workstation mnt]# getfacl westos/file2
# file: westos/file2
# owner: root
# group: root
user::rw-
group::r--
other::r--
#可看出只对目录中原有文件生效

需要设定默认权限

[root@workstation mnt]# setfacl -m d:u:student:rwx westos/
[root@workstation mnt]# getfacl /mnt/westos/
getfacl: Removing leading '/' from absolute path names
# file: mnt/westos/
# owner: root
# group: root
user::rwx
user:student:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:student:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@workstation mnt]# getfacl westos/file2
# file: westos/file2
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@workstation mnt]# touch westos/file3
[root@workstation mnt]# getfacl westos/file3
# file: westos/file3
# owner: root
# group: root
user::rw-
user:student:rwx		#effective:rw-
group::r-x			#effective:r--
mask::rw-
other::r--
#可见default权限只对目录中新出现的文件或目录生效,对目录本身和目录中原有文件不生效

8、练习题

(1)新建用户组:shengchan、caiwu、jishu

[root@workstation Desktop]# groupadd shengchan
[root@workstation Desktop]# groupadd caiwu
[root@workstation Desktop]# groupadd jishu
[root@workstation Desktop]# tail -n 5 /etc/group
dip:x:40:
westos:x:1001:student
shengchan:x:1002:
caiwu:x:1003:
jishu:x:1004:

(2)新建用户要求如下

1)tom是shengchan组的附加用户

[root@workstation Desktop]# useradd -G shengchan tom
[root@workstation Desktop]# id tom
uid=1002(tom) gid=1005(tom) groups=1005(tom),1002(shengchan)

2)harry是caiwu组的附加用户

root@workstation Desktop]# useradd -G caiwu harry
[root@workstation Desktop]# id harry 
uid=1003(harry) gid=1006(harry) groups=1006(harry),1003(caiwu)

3)leo是jishu组的附加用户

[root@workstation Desktop]# useradd -G jishu leo
[root@workstation Desktop]# id leo 
uid=1004(leo) gid=1007(leo) groups=1007(leo),1004(jishu)

4)新建admin用户,此用户不属于以上提到的三个部门

[root@workstation Desktop]# useradd admin
[root@workstation Desktop]# id admin
uid=1005(admin) gid=1008(admin) groups=1008(admin)

(3)新建目录要求如下

1)/pub目录为公共存储目录对所有用户可以读、写、执行,但用户只能删除属于自己的文件

[root@workstation Desktop]# mkdir /pub
[root@workstation Desktop]# chmod 1777 /pub/
[root@workstation Desktop]# ll -d /pub/
drwxrwxrwt. 2 root root 6 Jan 12 01:01 /pub/

2)/sc目录为生产部存储目录只能对生产部人员可以写入,并且生产部人员所建立的文件都自动归属到shengchan组中

[root@workstation Desktop]# mkdir /sc
[root@workstation Desktop]# chgrp -R shengchan /sc 
[root@workstation Desktop]# chmod 2770 /sc
[root@workstation Desktop]# ll -d /sc
drwxrws---. 2 root shengchan 6 Jan 12 01:03 /sc

3)/cw目录为财务部存储目录只能对财务部人员可以写入,并且财务部人员所建立的文件都自动归属到caiwu组中

[root@workstation Desktop]# mkdir /cw
[root@workstation Desktop]# chgrp -R caiwu /cw
[root@workstation Desktop]# chmod 2770 /cw
[root@workstation Desktop]# ll -d /sc
drwxrws---. 2 root shengchan 6 Jan 12 01:03 /sc

4)admin用户能用touch工具在/sc目录和/cw目录任意建立文件,但不能删除文件

[root@workstation Desktop]# hostname
workstation.lab.example.com
[root@workstation Desktop]# visudo

Linux之权限设定_第13张图片

[root@workstation Desktop]# su - admin
[admin@workstation ~]$ cd /sc
-bash: cd: /sc: Permission denied
[admin@workstation ~]$ touch /sc/file
touch: cannot touch '/sc/file': Permission denied
[admin@workstation ~]$ sudo touch /sc/file
[admin@workstation ~]$ exit
logout
[root@workstation Desktop]# ll -R /sc
/sc:
total 0
-rw-r--r--. 1 root shengchan 0 Jan 12 01:21 file
[admin@workstation ~]$ rm -rf /sc/file
rm: cannot remove '/sc/file': Permission denied
[admin@workstation ~]$ sudo touch /cw/file
[admin@workstation ~]$ exit
logout
[root@workstation Desktop]# ls -R /cw
/cw:
file

(4)设定普通用户新建文件权限为“r–r-----”

vim /etc/bashrc

Linux之权限设定_第14张图片

vim /etc/profile

Linux之权限设定_第15张图片

[root@workstation Desktop]# source /etc/bashrc
[root@workstation Desktop]# source /etc/profile
[root@workstation Desktop]# su - admin
Last login: Sun Jan 12 01:47:29 EST 2020 on pts/0
[admin@workstation ~]$ touch westos
[admin@workstation ~]$ ll westos
-r--r-----. 1 admin admin 0 Jan 12 01:49 westos

(5)设定admin用户可以通过sudo自由建立新用户

[root@workstation Desktop]# hostname
workstation.lab.example.com
[root@workstation Desktop]# visudo

Linux之权限设定_第16张图片

[root@workstation Desktop]# su - admin
[admin@workstation ~]$ sudo useradd hhh
[admin@workstation ~]$ tail -n 1 /etc/passwd
hhh:x:1006:1009::/home/hhh:/bin/bash

你可能感兴趣的:(Linux之权限设定)