Linux基本权限

1.权限基本概述

1.什么是权限?

我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力。

2.为什么要有权限?

因为系统中不可能只存在一个root用户,一定会存在多个用户,为了保护每个登陆用户的隐私和工作环境,所以就有了权限。(比如三个租客合租同一个房子,a租客要使用b租客的肥皂,那这个事情??)

3.权限与用户之间的关系?

在Linux系统中,针对文件定义了三种身份,分别是属主(owner)、属组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable)。

用户对文件资源,有三种角色ugo,当一个用户访问文件流程如下

  1. 判断用户是否为文件所有者,如果是则按所有者的权限进行访问

  2. 判断用户是否为文件所有组成员,如果是则按组的权限进行访问

  3. 如果不是所有者,也不是该文件所属组,则按匿名权限进行访问

4.权限中的rwx分别代表什么含义?

当我们使用ls -l查看一个文件的详细属性时,能看到每个文件都有一个9位基本权限位,比如: rwxr-xr-x其中每三位字符为一组,分别表示属主权限位,属组权限位,匿名权限位。

linux中基本权限位则是使用这9位字符来表示,主要控制文件属主(User)、属组(Group)、其他用户(Other)

字母 含义 对应权限
r(read) 读取权限 4
w(write) 写入权限 2
x(execute) 执行权限 1
-(没有权限) 没有权限 0

PS: 如果权限位不可读、不可写、不可执行,则全部使用-作为占位符表示。

9位表示权限

3组

3位表示一组

--- --- ---

  • 文件权限可以读以下定义

    • 属主 u

    • 属组 g

    • 其他 o

    • 全部 a

  • 每个文件的权限

    • r 读

    • w 写

    • x 执行

  • 对于文件来说

    • r 可以使用文本查看工具来查看里面的内容

    • w 可以修改文本的内容

    • x 执行可以直接./file

  • 对于目录来说

    • r 可以使用ls等文件查看的命令查看

    • w 可以创建文件,也可以删除

    • x 可以cd进入

  • 数字表示

    --x

    001 1

    -w-

    010 2

    r--

    100 4

    rw-

    110 6

    rwx

    111 7

    r-x

    101 5

    -wx

    011 3

2.权限设置示例

文件示例: rwxrw-r– alice hr file1.txt Q1: alice对file1文件拥有什么权限? Q2: jack 对 file1.txt 文件有什么权限? 前提:jack 属于 hr 组 Q3: tom 对 file1.txt 文件有什么权限?

1.为什么要设定权限,我们又如何修改一个文件的权限?

Q1: 为什么要设定权限,可以赋于某个用户或组 – 能够以何种方式 – 访问某个文件 Q2: Linux下使用chmod命令来变更权限,root用户可以变更所有文件的权限,而普通用户仅能变更属于自己的文件。

2.使用chmod设定权限示例

方式一: user group other

[root@bgx ~]# touch file                    #创建文件
[root@bgx ~]# chmod a=rwx file #给所有人添加读写执行权限
[root@bgx ~]# chmod a=-rwx file #取消所有的权限
[root@bgx ~]# chmod u=rwx,g=rw,o=- file #属主读写执行,属组读写,其他人无权限
[root@bgx ~]# chmod ug=rwx,o=r file #属主属组读写执行,其他人读权限
[root@bgx ~]# ll file
-rwxrw-r-- 1 root root 0 Apr 13 03:29 file

方式二:number

#选项:  -R递归修改
[root@bgx ~]# touch file
[root@bgx ~]# chmod 644 file
[root@bgx ~]# chmod 600 file
[root@bgx ~]# ll file
-rw------- 1 root root 0 Apr 13 03:29 file #针对目录设定权限
[root@bgx ~]# mkdir dir
[root@bgx ~]# chmod 777 dir/ #修改目录允许所有人访问
[root@bgx ~]# chmod -R 755 dir/ #修改目录及子目录权限
[root@bgx ~]# ll -d dir/
drwxr-xr-x 2 root root 6 Apr 13 03:34 dir/
  • 可以直接修改某一类用户的权限

chmod u+x c 增加
chmod u-x c 删除
chmod u=r c 直接赋值

shabang ---》 解释器

  • 可以直接使用数字表示

  • 可以基于某个文件来修改

3.权限设置案例

针对 hr 部门的访问目录/home/hr 设置权限,要求如下:

1.root 用户和 hr 组的员工可以读、写、执行

2.其他用户没有任何权限

[root@bgx ~]# groupadd hr
[root@bgx ~]# useradd hr01 -G hr
[root@bgx ~]# useradd hr02 -G hr
[root@bgx ~]# mkdir /home/hr
[root@bgx ~]# chgrp hr /home/hr
[root@bgx ~]# chmod 770 /home/hr
[root@bgx ~]# ll -d /home/hr
drwxrwx--- 2 root hr 6 Apr 13 03:26 /home/hr

在Linux中权限对文件和对目录的影响是有不同区别的。

权限 对文件的影响 对目录的影响
读取权限(r) 具有读取阅读文件内容权限 具有浏览目录及子目录
写入权限(w) 具有新增、修改文件内容的权限 具有增加和删除目录内文件
执行权限(x) 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权限)

文件权限实验案例:

#1.新建文件,并添加内容至文件中,默认文件匿名用户仅有读权限
[root@lqz ~]# echo "date" > filename
[root@lqz ~]# ll filename
-rw-r--r-- 1 root root 5 Jan 24 08:24 filename #2.切换bgx普通用户
[root@lqz ~]# su - bgx #3.对文件拥有读取的权限,但bgx用户对文件没有执行和删除的权限
[bgx@lqz ~]$ cat /root/filename
date #4.使用root增加x执行权限
[root@lqz ~]# chmod o+x /root/filename
[root@lqz ~]# ll /root/filename
-rw-r--r-x 1 root root 5 Jan 24 08:24 /root/filename #5.测试x权限是否真的能执行该文件
[bgx@lqz ~]$ /root/filename
Wed Jan 24 08:28:34 EST 2018 #6.增加w执行权限
[root@lqz ~]# chmod o+w /root/filename
[root@lqz ~]# ll /root/filename
-rw-r--rwx 1 root root 5 Jan 24 08:24 /root/filename #7.测试执行权限
[bgx@lqz ~]$ vim /root/filename

PS: 总结rwx对文件的影响 读取权限(r)具有读取阅读文件内容权限 1.只能使用查看类命令cat、head、tail、less、more

写入权限(w)具有新增、修改文件内容的权限

1.使用vim编辑会提示权限拒绝, 但可强制保存,会覆盖文件的所有内容

2.使用echo命令重定向的方式可以往文件内写入数据,>>可以进行追加

3.不能删除文件,因为删除文件看的不是文件的属性,需要看上级目录是否有w的权限

执行权限(x)具有执行文件的权限

1.执行权限什么用都没有

2.如果普通用户需要执行文件,需要配合r权限

目录权限实验案例:

#示例1: 创建目录,并在该目录下创建文件,匿名用户对目录没有w权限,对文件有777权限
[root@lqz ~]# mkdir /dirname
[root@lqz ~]# echo "test" >> /dirname/filename
[root@lqz ~]# chmod 777 /dirname/filename #普通用户验证权限,能正常查看,但无法删除[奇怪]
[bgx@lqz ~]$ cat /dirname/filename
test
[bgx@lqz ~]$ rm -f /dirname/filename
rm: cannot remove ‘/dirname/filename’: Permission denied #示例2: 设置目录777权限,相当于匿名用户对目录有w权限,对文件没有任何权限
[root@lqz ~]# chmod 777 /dirname/
[root@lqz ~]# chmod 000 /dirname/filename #普通用户验证权限
[bgx@lqz ~]$ cat /dirname/filename
cat: /dirname/filename: Permission denied
[bgx@lqz ~]$ rm -f /dirname/filename
[bgx@lqz ~]$ touch /dirname/filename_2

PS: 总结rwx对目录的影响 读取权限(r),如果目录只有r权限: 具有浏览目录及子目录权限

1.可以使用ls命令浏览目录及子目录, 但同时也会提示权限拒绝

2.使用ls -l命令浏览目录及子目录,文件属性会带问号,并且只能看到文件名

总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限

写入权限(w),如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x权限配合)

PS: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关) 不能进入目录、不能复制目录、不能删除目录、不能移动目录

执行权限(x),如果目录只有x权限

1.只能进入目录

2.不能浏览、复制、移动、删除

Linux权限总结与注意事项

文件r权限, 只给用户查看,无其他操作

文件rw权限, 可以查看和编辑文件内容

文件rx权限, 允许查看和执行文件、但不能修改文件—–>PASS

文件rwx权限, 能读,能写,能执行,但不能删除,因为删除需要看上级目录的权限有没有w—–>PASS

目录rx权限, 允许浏览目录内文件以及子目录、并允许在目录内新建文件, 不允许创建、删除文件和目录

目录wx权限, 能进入目录,能删除内容,能写入内容,但就是无法使用ls cat这样的命令—–>PASS

目录rw权限, 能看,能写,但无法进入目录—–>PASS

PS: 文件的 x权限小心给予,目录的 w权限小心给予。

PS: 文件通常设定的权限是644,目录设定的权限是755

PS: 控制目录权限755, 如果有普通用户需要操作目录里面的文件,在来看文件的权限

4.属主属组设置

变更文件属主和属组的意义?

比如: 我现在手里有多套房,希望出售其中的A房进行变现,那么我会考虑将A房过户给金主,过户成功后A房就属于金主了,那么此时A房的拥有者就属于金主而不再属于我。

在Linux中如何变更一个文件或者一个资源的属主和属组呢,可以使用chown、chgrp命令实现。

chown能设置属主和属组,chgrp仅能设置属组。(所以用哪个你懂的)

#chown 更改属主以及属组 -R:递归修改

#准备环境,创建文件和目录
[root@bgx ~]# mkdir dir/test1 && touch dir/file #示例1: 修改所属主为bin
[root@bgx ~]# chown bin dir/ #示例2: 修改所属组为adm
[root@bgx ~]# chown .adm dir/ #示例3: 递归修改目录及目录下的所有文件属主和属组
[root@bgx ~]# chown -R root.root dir/

chown 用来修改所有者和组

Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
or: chown [OPTION]... --reference=RFILE FILE...
chown wu c 修改属主
chown wu:wu c 修改属主和属组
chown root.root c 跟:是一样的
chown :wu c 直接属组
chown -R wu test 递归修改
chown --reference=c d 把d文件修改成c文件一样,把才当模版

chgrp 修改文件的属组

Usage: chgrp [OPTION]... GROUP FILE...
or: chgrp [OPTION]... --reference=RFILE FILE...

Linux特殊权限

1.特殊权限概述

前面我们已经学习过 r(读)、w(写)、 x(执行)这三种普通权限,但是我们在査询系统文件权限时会发现出现了一些其他权限字母,比如:

[root@bgx ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd

在属主本来应该是 x(执行)权限的位置出现了一个小写s,这是什么权限?我们把这种权限称作 SetUID 权限,也叫作 SUID 的特殊权限。这种权限有什么作用呢?或者说能干啥?别急,先往下看…..

2.特殊权限SUID

1.问题抛出

在 Linux 系统中,每个普通用户都可以更改自己的密码,这是合理的设置。

问题是,普通用户的信息保存在 /etc/passwd 文件中,用户的密码在 /etc/shadow 文件中,也就是说,

普通用户在更改自己的密码时修改了 /etc/shadow 文件中的加密密码,

但是文件权限显示,普通用户对这两个文件其实都是没有写权限的,那为什么普通用户可以修改自己的权限呢?……(难道学了个假的权限)

[root@bgx ~]# ll /etc/passwd
-rw-r--r-- 1 root root 6209 Apr 13 03:26 /etc/passwd
[root@bgx ~]# ll /etc/shadow
---------- 1 root root 11409 Apr 13 03:26 /etc/shadow

2.解决方案

其实,普通用户可以修改自己的密码在于 passwd 命令。该命令拥有特殊权限 SetUID,也就是在属主的权限位的执行权限上是 s。

可以这样来理解它:当一个具有执行权限的文件设置 SetUID 权限后,用户在执行这个文件时将以文件所有者的身份来执行。

PS: 当普通用户使用 passwd 命令更改自己的密码时,实际上是在用 passwd 命令所有者 root 的身份在执行 passwd 命令,

root 当然可以将密码写入 /etc/shadow 文件,所以普通用户也可以修改 /etc/shadow 文件,命令执行完成后,该身份也随之消失。

3.示例演示

举个例子,有一个用户 lamp,她可以修改自己的权限,因为 passwd 命令拥有 SetUID 权限;但是她不能査看 /etc/shadow 文件的内容,因为査看文件的命令(如 cat)没有 SetUID 权限。命令如下:

#自己可以修改自己的密码,从而改变/etc/shadow中的数据
[lamp@bgx ~]$ passwd #但无法使用cat命令查看/etc/shadow
[lamp@bgx ~]$ cat /etc/shadow
cat: /etc/shadow: Permission denied

我们画一张示意图来理解上述过程

4.例子解释

passwd 是系统命令,可以执行,所以可以赋予 SetUID 权限。

lamp 用户对 passwd 命令拥有 x(执行)权限。

lamp 用户在执行 passwd 命令的过程中,会暂时切换为 root 身份,所以可以修改 /etc/shadow 文件。

命令结束,lamp 用户切换回自己的身份。

PS: cat命令没有 SetUID权限,所以使用 lamp 用户身份去访问 /etc/shadow 文件,当然没有相应权限了。

F: 但如果将passwd命令的suid去掉会发生什么???

2.suid授权方法4000 权限字符s(S),用户位置上的x位上设置

# chmod 4755 passwd
# chmod u+s passwd

3.suid的作用

1.让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限。

2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S。

3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效。

注意: suid极度危险,不信可以尝试对vim或rm进行设定SetUID。

3.特殊权限SGID

将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致,演示如下

#1.建立测试目录
[root@bgx ~]# cd /tmp/ && mkdir dtest #2.给测试目录赋予SetGID权限,检查SetGID是否生效
[root@bgx tmp]# chmod g+s dtest/ && ll -d dtest/
drwxr-sr-x 2 root root 6 Apr 13 05:21 dtest/ #3.给测试目录赋予777权限,让普通用户可以写
[root@bgx tmp]# chmod 777 dtest/ #4.切换成普通用户lamp,并进入该目录
[root@bgx tmp]# su - lamp
[lamp@bgx ~]$ cd /tmp/dtest/ #5.普通用户创建测试文件,检查文件的信息
[lamp@bgx dtest]$ touch lamp_test
[lamp@bgx dtest]$ ll
-rw-rw-r-- 1 lamp root 0 Apr 13 05:21 lamp_test

2.sgid授权方法: 2000权限字符s(S),取决于属组位置上的x

# chmod 2755  directory
# chmod g+s directory

3.sgid作用

1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。

2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组

3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

4.特殊权限SBIT

Sticky(SI TI KI)粘滞位目前只对目录有效,作用如下:

普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录中拥有写入权限。如果没有粘滞位,那么普通用户拥有 w 权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。

但是一旦被赋予了粘滞位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。

[root@bgx tmp]# ll -d /tmp/
drwxrwxrwt. 12 root root 4096 Apr 13 05:32 /tmp/

1.sticky授权方法,1000 权限字符t(T),其他用户位的x位上设置。

# chmod 1755  /tmp
# chmod o+t /tmp

2.sticky作用

1.让多个用户都具有写权限的目录,并让每个用户只能删自己的文件。

2.特殊sticky目录表现在others的x位,用小t表示,如果没有执行权限是T

3.一个目录即使它的权限为”777”如果是设置了粘滞位,除了目录的属主和”root”用户有权限删除,除此之外其他用户都不允许删除该目录。

5.权限属性chattr

chatrr 只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。

chatrr 命令格式:[root@bgx ~]# chattr [+-=] [选项] 文件或目录名

#选项: + 增加权限 -减少权限 =等于某个权限
# a:让文件或目录仅可追加内容
# i:不得任意更动文件或目录 #1.创建文件并设置属性
[root@lqz ~]# touch file_a file_i
[root@lqz ~]# lsattr file_a file_i
---------------- file_a
---------------- file_i #2.使用chattr设置属性,lsattr查看权限限制
[root@lqz ~]# chattr +a file_a
[root@lqz ~]# chattr +i file_i
[root@lqz ~]# lsattr file_a file_i
-----a---------- file_a
----i----------- file_i #3.a权限,无法写入和删除文件,但可以追加数据,适合/etc/passwd这样的文件
[root@lqz ~]# echo "aa" > file_a
bash: file_a: Operation not permitted
[root@lqz ~]# rm -f file_a
rm: cannot remove ‘file_a’: Operation not permitted
[root@lqz ~]# echo "aa" >> file_a #5.i权限, 无法写入,无法删除,适合不需要更改的重要文件加锁
[root@lqz ~]# echo "i" > file_i
bash: file_i: Permission denied
[root@lqz ~]# echo "i" >> file_i
bash: file_i: Permission denied
[root@lqz ~]# rm -f file_i
rm: cannot remove ‘file_i’: Operation not permitted #6.解除限制
[root@tianyun ~]# chattr -a file100
[root@tianyun ~]# chattr -i file200

chattr +i 不能删除、不能修改、不能变更

chattr -i 减掉权限

lsattr 查看属性

chattr +a 只能追加数据

6.进程掩码umask

1.umask是什么?

当我们登录系统之后创建一个文件总是有一个默认权限的,比如: 目录755、文件644、那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认权限。

2.umask是如何改变创建新文件的权限

系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但umask表示要减去的值,所以新目录文件的权限应该是777 - 022 =755。至于文件的权限也依次类推666 - 022 =644。

3.umask涉及哪些配置文件

umask涉及到的相关文件/etc/bashrc /etc/profile ~/.bashrc ~/.bash_profile shell (vim,touch) –umask–> 会影响创建的新文件或目录权限 vsftpd服务如果修改–umask–> 会影响ftp服务中新创建文件或创建目录权限 useradd如果修改umask–> 会影响用户HOME家目录权限

4.umask演示示例

#1.假设umask值为:022(所有位为偶数)
#文件的起始权限值
6 6 6 - 0 2 2 = 6 4 4 #2.假设umask值为:045(其他用户组位为奇数)
#计算出来的权限。由于umask的最后一位数字是5,所以,在其他用户组位再加1。
6 6 6 - 0 4 5 = 6 2 1 #3.默认目录权限计算方法
7 7 7 - 0 2 2 = 7 5 5 #umask所有位全为偶数时
# umask 044
# mkdir d044 目录权限为733
# touch f044 文件权限为622 #umask部分位为奇数时
# umask 023
# mkdir d023 目录权限为754
# touch f023 文件权限为644 #umask值的所有位为奇数时
# umask 035
# mkdir d035 目录权限为742
# touch f035 文件权限为642

示例1: 在 shell 进程中创建文件

#查看当前用户的umask权限
[root@lqz ~]# umask
0022
[root@lqz ~]# touch file0022
[root@lqz ~]# mkdir dir0022
[root@lqz ~]# ll -d file0022 dir0022/
drwxr-xr-x 2 root root 6 Jan 24 09:02 dir0022/
-rw-r--r-- 1 root root 0 Jan 24 09:02 file0022

示例2: 修改 shell umask 值(临时生效)

[root@lqz ~]# umask 000
[root@lqz ~]# mkdir dir000
[root@lqz ~]# touch file000
[root@lqz ~]# ll -d dir000 file000
drwxrwxrwx 2 root root 6 Jan 24 09:04 dir000
-rw-rw-rw- 1 root root 0 Jan 24 09:04 file000

示例3: 通过 umask 决定新建用户 HOME 目录的权限

[root@lqz ~]# vim /etc/login.defs
UMASK 077
[root@lqz ~]# useradd dba
[root@lqz ~]# ll -d /home/dba/
drwx------. 4 dba dba 4096 3 月 11 19:50 /home/dba/ [root@tianyun ~]# vim /etc/login.defs
UMASK 000
[root@lqz ~]# useradd sa
[root@lqz ~]# ll -d /home/sa/
drwxrwxrwx. 4 sa sa 4096 3 月 11 19:53 /home/sa/

LinuxACL控制

1.ACL访问控制概述

上一章节我们学习了基础权限UGO、特殊权限,但所有的权限是针对某一类用户设置的, 如果希望对文件进行自定义权限控制,就需要用到文件的访问控制列表ACL

UGO设置基本权限: 只能一个用户,一个组和其他人

ACL设置基本权限: r、w、x

设定acl只能是root管理员用户. 相关命令: getfacl , setfacl

acl基本使用方式

//环境准备
[root@lqz ~]# cp /etc/passwd /root/passwd
//文件在没有设定acl, 看到的和传统权限是一样
[root@lqz ~]# ll passwd
-rw-r--r-- 1 root root 0 10-26 13:59 /home/test.txt //使用getacl查看权限
[root@lqz ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw- //文件owner权限
group::r-- //文件拥有组权限
other::r-- //其他人权限

1.设定acl权限案例如下

-rw-r--r-- 1 root root 1380 Feb 27 11:25 passwd

alice 拥有读写权限    rw
bgx 没有任何权限 -
jack 组拥有读权限 r
匿名用户拥有读写权限 rw //建立相关用户
[root@lqz ~]# useradd alice
[root@lqz ~]# useradd bgx
[root@lqz ~]# useradd jack //增加用户 alice 权限
[root@lqz ~]# setfacl -m u:alice:rw passwd //增加用户 bgx 权限
[root@lqz ~]# setfacl -m u:bgx:- passwd //增加匿名用户权限
[root@lqz ~]# setfacl -m o::rw passwd //增加组权限
[root@lqz ~]# setfacl -m g:jack:r passwd 注意: 如果用户同时属于不同的两个组,并且两个组设定了acl访问控制
1.根据acl访问控制优先级进行匹配规则
2.如有用户拥有多个组的权限不同的权限,优先使用最高权限(模糊匹配)

2.查看acl权限

[root@lqz ~]# ll passwd
-rw-rw-rw-+ 1 root root 1531 Jan 26 07:52 passwd [root@lqz ~]# getfacl passwd
# file: passwd
# owner: root
# group: root
user::rw-
user:bgx:---
user:alice:rw-
group::r--
group:jack:r--
mask::rw-
other::rw-

3.移除acl权限

//移除jack组的acl权限
[root@lqz ~]# setfacl -x g:jack passwd //移除bgx用户的acl权限
[root@lqz ~]# setfacl -x u:bgx passwd //移除文件和目录所有acl权限
[root@lqz ~]# setfacl -b passwd //移除默认的acl
[root@lqz ~]# setfacl -k dir

4.查看acl帮助

//EXAMPLES 示例文档
[root@lqz ~]# man setfacl //复制 file1 的 ACL 权限给 file2
[root@lqz ~]# setfacl -m u:alice:rw,u:bgx:r,g:jack:rw file1
[root@lqz ~]# getfacl file1 |setfacl --set-file=- file2

2.ACL高级特性MASK

mask用于临时降低用户或组的权限,但不包括文件的所有者和其他人。

mask最主要的作用是用来决定用户的最高权限。

mask默认不会对匿名用户降低权限,所以为了便于管理文件的访问控制,建议匿名用户的权限置为空

//临时降低用户或组权限
[root@lqz ~]# setfacl -m mask::rw filename

小结

1.mask会影响哪些用户,除了所有者和其他人。

2.mask权限决定了用户访问文件时的最高权限。(如何影响)

3.mask用于临时降低用户访问文件的权限。(mask做什么)

4.任何重新设置acl访问控制会清理mask所设定的权限。

3.ACL高级特性Default

default: 继承(默认)

alice能够对/opt目录以及以后在/opt目录下新建的文件有读、写、执行权限

//赋予 alice 对/home 读写执行权限
[root@lqz ~]## setfacl -R -m u:alice:rwX /opt
//赋予 alice 对以后在/home 下新建的文件有读写执行权限(使 alice 的权限继承)
[root@lqz ~]## setfacl -m d:u:alice:rwX /opt //检查对应的权限
[root@linux-node1 ~]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: root
# group: bgx
user::rwx
user:alice:rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:user:alice:rwx
default:group::rwx
default:mask::rwx
default:other::rwx

4.ACL访问控制实践案例

案例1: 将新建文件的属性修改tom:admin, 权限默认为644

要求: tom对该文件有所有的权限, mary可以读写该文件, admin组可以读写执行该文件, jack只读该文件, 其他人一律不能访问该文件

//实验前, 建立几个普通用户
[root@lqz ~]# useradd tom
[root@lqz ~]# useradd bean
[root@lqz ~]# useradd mary
[root@lqz ~]# useradd jack
[root@lqz ~]# useradd sutdent
[root@lqz ~]# groupadd admin
[root@lqz ~]# gpasswd -a mary admin
[root@lqz ~]# gpasswd -a bean admin //检查用户属性
[root@linux-node1 ~]# id tom
uid=1004(tom) gid=1004(tom) groups=1004(tom)
[root@linux-node1 ~]# id mary
uid=1006(mary) gid=1006(mary) groups=1006(mary),1007(admin)
[root@linux-node1 ~]# id bean
uid=1005(bean) gid=1005(bean) groups=1005(bean),1007(admin)
[root@linux-node1 ~]# id jack
uid=1002(jack) gid=1002(jack) groups=1002(jack)
[root@linux-node1 ~]# id sutdent
uid=1007(sutdent) gid=1008(sutdent) groups=1008(sutdent) //准备相关文件
[root@linux-node1 ~]# cp /etc/passwd /root/
[root@linux-node1 ~]# chown tom:admin passwd
[root@linux-node1 ~]# chmod 644 passwd //检查设定前的acl列表
[root@linux-node1 ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rw-
group::r--
other::r-- //设定acl权限
[root@linux-node1 ~]# setfacl -m u::rwx,u:mary:rw,u:jack:r,g:admin:rwx,o::- passwd //检查acl权限
[root@linux-node1 ~]# getfacl passwd
# file: passwd
# owner: tom
# group: admin
user::rwx
user:jack:r--
user:mary:rw-
group::r--
group:admin:rwx
mask::rwx
other::---

acl的控制规则是从上往下匹配

1.tom由于是文件的拥有者,所以直接按照user::rwx指定的权限去操作

2.mary用户从上往下寻找匹配规则,发现user:mary:rw-能够精确匹配mary用户,尽管mary属于admin组,同时admin组有rwx的权限,但是由于mary用户的规则在前面,所有优先生效。

3.bean由于找不到精确匹配的规则,而bean是属于admin组,根据文件的定义,该文件是属于admin组,所以bean的权限是按照group:admin:rwx的权限去操作。

4.jack用户从上往下寻找匹配规则,发现user:jack:r--能够精确匹配jack用户。

5.student用户找不到精确匹配的user定义规则, 也找不到相关组的定义规则,最后属于other

案例2: lab acl setup

controller组成员有:student
sodor组成员有:thomas,james 目录: /shares/steamies
文件: /shares/steamies/file
脚本: /shares/steamies/test.sh controller属于该目录的所属组, 新建文件必须属于controller组
sodor组的成员对该目录拥有rwx权限
sodor组成员james对该目录及子目录(包括以后新建立的文件)没有任何权限

实际操作

//准备用户
[root@linux-node1 ~]# groupadd controller
[root@linux-node1 ~]# groupadd sodor
[root@linux-node1 ~]# useradd student -G controller
[root@linux-node1 ~]# useradd thomas -G sodor
[root@linux-node1 ~]# useradd james -G sodor //准备目录
[root@linux-node1 ~]# mkdir /shares/steamies -p
[root@linux-node1 ~]# echo "file" >> /shares/steamies/file
[root@linux-node1 ~]# echo "echo 123" >> /shares/steamies/test.sh
[root@linux-node1 ~]# chmod 755 /shares/steamies/test.sh
[root@linux-node1 ~]# chown -R :controller /shares/steamies/
[root@linux-node1 ~]# chmod g+s /shares/steamies/ //设定权限(X表示,如果原本有执行权限就保留,如果没有则不添加)
[root@linux-node1 ~]# setfacl -R -m g:sodor:rwX,u:james:- /shares/steamies/ //设定继承规则
[root@linux-node1 ~]# setfacl -R -m d:g:sodor:rwX,d:u:james:- /shares/steamies/ [root@linux-node1 steamies]# getfacl /shares/steamies/
getfacl: Removing leading '/' from absolute path names
# file: shares/steamies/
# owner: root
# group: controller
# flags: -s-
user::rwx
user:james:---
group::r-x
group:sodor:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::r-x
default:group:sodor:rwx
default:mask::rwx
default:other::r-x

linux权限、特殊权限、ACL控制的更多相关文章

  1. Linux 账号管理与 ACL 权限配置

    要登陆 Linux 系统一定要有账号与口令才行,否则怎么登陆,您说是吧?不过, 不同的使用者应该要拥有不同的权限才行吧?我们还可以透过 user/group 的特殊权限配置, 来规范出不同的群组开发项 ...

  2. 别人的Linux私房菜(14)Linux账号管理和ACL权限设置

    用户标识符UID.GID 用户的账号信息,主要是指UID对应.组和GID对应 检查系统中是否存在用户bin:id bin 登录shell验证账号密码的步骤:找到/etc/passwd核对是否存在账号, ...

  3. 第十四章、Linux 账号管理与 ACL 权限配置

    1. Linux 的账号与群组 1.1 使用者标识符: UID 与 GID 1.2 使用者账号:/etc/passwd 文件结构, /etc/shadow 文件结构 1.3 关于群组: /etc/gr ...

  4. CenTOS7使用ACL控制目录权限,只给某个用户访问特定目录

    前言 Linux 基本的权限控制仅可以对所属用户.所属组.其他用户进行的权限控制,而不能精确地控制每个用户的权限.ACL 规则就是用来解决这个问题的. 使用 ACL 规则,我们可以针对单一账户设置文件 ...

  5. linux 账号管理与ACL权限设定

    此文涉及命令:useradd.usermod.userdel.passwd.chage.setfacl.getfacl.su.sudo.fingr.chfn.chsh.id.groupadd.grou ...

  6. <实训|第九天>掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师

    linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...

  7. linux下的权限控制

    终于还是要弄服务器了,这是多年前用fedora的时候整理的,也贴出来,顺便也再复习一下. 先来了解一下文件属性,在shell环境里输入:ls -l 可以查看当前目录文件.如:drwxr-xr-x. 1 ...

  8. Linux系列教程(十六)——Linux权限管理之ACL权限

    通过前面的两篇博客我们介绍了Linux系统的用户管理,Linux用户和用户组管理之相关配置文件 讲解了用户管理的相关配置文件,包括用户信息文件/etc/passwd,用户密码文件/etc/shadow ...

  9. Linux - 主机的细部权限规划:ACL 的使用

    ACL 是 Access Control List 的缩写,主要的目的是在提供传统的 owner,group,others 的 read,write,execute 权限之外的细部权限配置.ACL 可 ...

  10. Linux权限管理之ACL权限

    注:转载自:https://www.cnblogs.com/ysocean/p/7801329.html 目录 1.什么是 ACL 权限? 2.查看分区 ACL 权限是否开启:dump2fs ①.查看 ...

随机推荐

  1. 5.字典--《Python编程:从入门到实践》

    5.1 字典   在 Python 中,字典是一系列键-值对.键不能重复,否则对应的值是后面一个. 5.1.1 键-值队的添加与修改 alien_0 = {'color': 'green', 'poi ...

  2. Jacoco 生成单元测试覆盖率

    1. 引入Jacoco插件和Maven Site插件 <plugin> <groupId>org.apache.maven.plugins</groupId> &l ...

  3. 【译】.NET 8 网络改进(二)

    原文 | Máňa,Natalia Kondratyeva 翻译 | 郑子铭 修改 HttpClient 日志记录 自定义(甚至简单地关闭)HttpClientFactory 日志记录是长期请求的功能 ...

  4. 开源.NetCore通用工具库Xmtool使用连载 - 散列算法篇

    [Github源码] <上一篇>详细介绍了Xmtool工具库中的加解密类库,今天我们继续为大家介绍其中的散列算法类库. 散列算法在某些特殊场景也可以当做加密方法使用:其特点是不可逆,同一内 ...

  5. CF1833G Ksyusha and Chinchilla

    题目链接 题解 知识点:贪心,树形dp. 当 \(3 \not \mid n\) 时,显然无解. 考虑一种贪心策略,从叶子节点往上只,要以当前节点为根的子树大小能被 \(3\) 整除,就立刻切除这棵子 ...

  6. Linux常用的20个命令(下)

    无论你是后端程序员还是前端程序员,都避免不了和Linux打交道.上篇介绍了Linux常用的20个命令其中的10个,本文继续介绍剩下的10个命令. 11.man 命令 manual的缩写,即使用手册的意 ...

  7. 【分布式】load balance 03-一致性哈希算法 java 实现

    负载均衡系列专题 01-负载均衡基础知识 02-一致性 hash 原理 03-一致性哈希算法 java 实现 04-负载均衡算法 java 实现 本节我们来看一下如何实现一个一致性 hash 框架. ...

  8. Centos8 单机配置 Zookeeper3.6.3 集群

    安装 Zookeeper 3.6.3 前提 已经安装好 JDK8+. 如果使用JDK8, 版本需要在211以上. 下载, 解压 使用root用户 wget https://downloads.apac ...

  9. 【Azure Function App】在ADF(Azure Data Factory)中调用 Azure Function 时候遇见 Failed to get MI access token

    问题描述 在ADF(Azure Data Factory)中,调用Azure Function App中的Function,遇见了 Failed to get MI access token Ther ...

  10. 一文读懂图数据库 Nebula Graph 访问控制实现原理

    摘要:数据库权限管理对大家都很熟悉,然而怎么做好数据库权限管理呢?在本文中将详细介绍 Nebula Graph 的用户管理和权限管理. 本文首发 Nebula Graph 博客:https://neb ...