账户和文件权限管理和设置acl访问控制

 目录:

  一:用户账号管理

    1.1 用户账号作用

    1.2 UID和用户账号分类

    1.3 用户账号文件/etc/passwd

    1.4 用户密码文件/etc/shadow

    1.5 添加用户账号

    1.6 设置/更改用户口令

    1.7 修改用户账号属性

    1.8 删除用户账号

    1.9 用户的初始配置文件

  二:用户组管理

    2.1 用户组的作用

    2.2 组GID

    2.3 组账号文件

    2.4 组密码文件

    2.5 添加组账号

    2.6 添加/删除组成员,更改组密码

    2.7 删除组账号

  三: 查询账号信息

    3.1 查询用户所属组

    3.2 查询用户是否存在

    3.3 查询账号登录信息

  四:文件归属与权限

    4.1 文件/目录 的权限和归属

    4.2 chmod 设置文件和目录的权限

    4.3 设置文件和目录的归属

    4.4  设置目录和文件的默认权限umask

    4.5  acl访问控制列表

    

 

一:用户账号管理

1.1 用户账号的作用

  • Linux基于用户身份对资源访问进行控制
  • Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
  • 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;
  • 另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
  • 每个用户账号都拥有一个唯一的用户名和各自的口令。
  • 用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

 

1.2 UID和用户账号分类

UID:User IDentity,用户标识号。UID号用于唯一系统中的用户,是一个32位的无符号整数

root用户账号的UID为固定值0

程序用户账号的UID默认为Centos5,6: 1~499, Centos7: 1~999

普通用户的UID默认为Centos5, 6: 500~60000, Centos7: 1000~60000

 

用户账号

超级用户:root 用户是Linxu操作系统中默认的超级用户账号,对本机拥有最高的权限。系统中超级用户是唯一的。

普通用户:由root用户或者其他管理员用户创建,拥有的权限会受到限制,一帮只在自己的家目录中拥有完全权限

程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行

 

1.3 用户账号文件/etc/passwd

用户账号信息保存在/etc/pssswd 中,里面的每一行对应一个账号记录。每个账号使用冒号":"分隔为7个字段

自左向右依次是

用户账号:密码占位符:用户账号ID:组账号ID:用户说明:家目录:登录shell

密码站位符:x,处于安全考虑,用户的密码信息保存在/etc/shadow里。/etc/passwd只保留占位符x

登录shell:/bin/bash 为可登录系统。 /sbin/nologin 和 /bin/false 为禁止用户登录

 

1.4 用户密码文件/etc/shadow

/etc/shadow 里存放了用户的密码,账号有效期等信息。每一行对应一个用户的密码记录。此文件内容默认只有root可以读取,且不允许直接编辑该文件的内容。每一个 记录使用冒号”:“分隔为9个字段

从左向右依次是:

用户账号名称:加密密码字符串:上次修改密码时间:密码最短有效天数:密码最长有效天数:密码过期提醒时间:密码过期后禁用账号时间:账号失效时间:保留字段

加密密码字符串:使用MD5加密的密码字串信息,当为"*"或"!!"时表示此用户不能登录到系统。若该字段内容为空,则该用户无须密码即可登录系统

上次修改密码时间:从1970年01月01日开始算到最近一次修改密码的间隔天数

密码的最短有效天数,:自本次修改密码后,必须至少经过该天数才能再次修改密码。默认值为0,表示不进行限制

密码的最长有效天数: 自本次修改密码后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制

密码过期提醒时间:提前多少天警告用户密码将过期,默认值为7

账号失效时间:此字段指定了用户作废的天数(从1970年01月01日起计算) ,默认值为空,表示账号永久可用。

 

1.5 添加用户账号

useradd [选项] 用户名 (或者使用adduser也可以)

常用选项:

-u :指定用户的UID号,要求该UID号码未被其他用户使用。

-d :指定用户的宿主目录位置(当与-M一起使用时,不生效)。只能用绝对路径指定目录,且不需要事先创建目录

-e :指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。

-g :指定用户的基本组名(或使用GID号) ,对应的组名必须已存在。

-G :指定用户的附加组名(或使用GID号) ,对应的组名必须已存在。

-M :不建立宿主目录。

-s :指定用户的登录Shell, (比如/bin/bash为可登陆系统, /sbin/nologin和/bin/false为禁止用户登陆系统) 。

#添加用户后,此用户并不能直接登录,因为没有设置密码去激活此用户,所以在/etc/shadow中,此用户的第二个字段是不能登录的"!!"

 

[root@localhost opt]# useradd -u 2000 zhangsan  
#创建用户zhangsan,指定id号为2000
[root@localhost opt]# tail -1 /etc/passwd
zhangsan:x:2000:2000::/home/zhangsan:/bin/bash

[root@localhost opt]# useradd -d /opt/lisi lisi
#创建用户lisi,指定家目录在/opt/lisi
[root@localhost opt]# ls
lisi  rh
[root@localhost opt]# tail -1 /etc/passwd
lisi:x:2001:2001::/opt/lisi:/bin/bash

[root@localhost opt]# useradd -e 2021-06-18 wangwu
#创建用户wangwu ,设定账号过期时间为 2021-06-18
[root@localhost opt]# tail -2 /etc/shadow
lisi:!!:18795:0:99999:7:::
wangwu:!!:18795:0:99999:7::18796:


[root@localhost opt]# useradd -g zhangsan zhaoliu
#创建用户zhaoliu ,设置基本组为 zhangsan
[root@localhost opt]# cat /etc/passwd |grep zhangsan
zhangsan:x:2000:2000::/home/zhangsan:/bin/bash
[root@localhost opt]# cat /etc/passwd |grep zhaoliu
zhaoliu:x:2003:2000::/home/zhaoliu:/bin/bash


[root@localhost opt]# useradd -G lisi teacher
#创建用户teacher ,添加附加组 lisi
[root@localhost opt]# tail -1 /etc/passwd
teacher:x:2004:2004::/home/teacher:/bin/bash
[root@localhost opt]# id teacher
uid=2004(teacher) gid=2004(teacher) 组=2004(teacher),2001(lisi)


[root@localhost home]# ls
teacher  test  wangwu  zhangsan  zhaoliu
[root@localhost home]# useradd -M student 
#创建用户student ,并不创建家目录
[root@localhost home]# ls
teacher  test  wangwu  zhangsan  zhaoliu
[root@localhost home]# tail -1  /etc/passwd
student:x:2005:2005::/home/student:/bin/bash

[root@localhost home]# useradd -s /sbin/nologin docter
#创建用户docter,设置登录shell 为/sbin/nologin
[root@localhost home]# tail -1 /etc/passwd
docter:x:2006:2006::/home/docter:/sbin/nologin

 

1.6 设置/更改用户口令

方法一:交互式设置密码

passwd [选项] [用户名]

-d :清空指定用户的密码,仅使用用户名即可登录系统。

-l:锁定用户账户,锁定的用户账号将无法再登录系统。

-S :查看用户账户的状态(是否被锁定)。

-u :解锁用户账户。

-f 强制操作。(解锁空密码用户时需要添加使用)

#passwd 设置密码时,管理员用户可以设置自己和普通用户的密码,普通用户只能设置自己的密码。不加用户名参数,就是设置当前用户

 

方法二:非交互式设置密码

echo "密码" | passwd --stdin 用户名

[root@localhost opt]# passwd zhangsan   #设置zhangsan的密码。交互式设置,虽然繁琐,但是密码不会显示,更加安全
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符    #因为密码简单,所以报警。可以不用管
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

[root@localhost opt]# passwd -d lisi    #清空lisi的密码,使lisi用户可以无密码登录
清除用户的密码 lisi。
passwd: 操作成功

[root@localhost opt]# passwd -l zhangsan    #锁定用户zhangsan,zhangsan账户不可登录
锁定用户 zhangsan 的密码 。
passwd: 操作成功

[root@localhost opt]# passwd -S zhangsan     #查看用户zhangsan账户状态
zhangsan LK 2021-06-17 0 99999 7 -1 (密码已被锁定。)

[root@localhost opt]# passwd -u zhangsan      #解除用户zhangsan的账户锁定,
解锁用户 zhangsan 的密码。
passwd: 操作成功


[root@localhost opt]# passwd -l lisi
锁定用户 lisi 的密码 。
passwd: 操作成功
[root@localhost opt]# passwd -S lisi
lisi LK 2021-06-17 0 99999 7 -1 (密码已被锁定。)
[root@localhost opt]# passwd -u lisi      #因为lisi 用户是无密码,所以解除锁定失败
解锁用户 lisi 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost opt]# passwd -uf lisi     #加上 -f 选项,强制解锁
解锁用户 lisi 的密码。
passwd: 操作成功

[root@localhost opt]# echo "123" | passwd --stdin zhaoliu  
#非交互式设置用户密码。但是,密码是以明文的方式显示在屏幕上
更改用户 zhaoliu 的密码 。
passwd:所有的身份验证令牌已经成功更新。

 

1.7修改用户账号属性

usermod [选项] 用户名

常用选项

-u :修改用户的UID号。

-d :修改用户的宿主目录位置。

-e :修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式。

-g :修改用户的基本组名(或使用GID号)。

-G :修改用户的附加组名(或使用GID号)。

-S :指定用户的登录Shell.

-l :更改用户账号的登录名称。

-L:锁定用户账户。

-U:解锁用户账户。

#usermod -l 修改的只是用户名,但是家目录等信息没有改变

#usermod -U 解锁,无法介解锁空密码用户,因为 usermod 没有-f 选项

[root@localhost opt]# cat /etc/passwd | grep abc
abc:x:1001:1001::/home/zhangsan:/bin/bash
#用户账户名已经变成了abc ,但是家目录等信息没有改变

 

1.8 删除用户账号

userdel [-r] 用户名

# userdel 删除时,只删除了用户账号,但是家目录等没有删除。添加-r 选项表示连用户家目录和邮件池一起删除

[root@localhost home]# ls
test  wangwu  zhaoliu
[root@localhost home]# userdel wangwu    #删除用户wangwu
[root@localhost home]# ls                #发现wangwu 用户的家目录依旧存在
test  wangwu  zhaoliu
[root@localhost home]# id wangwu       #查看wangwu用户是否存在
id: wangwu: no such user
[root@localhost home]# rm -rf wangwu/   #用rm 命令删除用户wangwu 的家目录
[root@localhost home]# ls
test  zhaoliu

[root@localhost home]# ls
test  zhaoliu
[root@localhost home]# userdel  -r zhaoliu    #删除用户zhaoliu ,连同它的家目录和邮件池一起删除
[root@localhost home]# id zhaoliu
id: zhaoliu: no such user
[root@localhost home]# ls          #zhaoliu的家目录已经被删除
test

 

1.9 用户账号的初始配置文件

文件来源

useradd 命令添加一个新的用户账号后会在该用户的宿主目录中建立一些初始配置文件。

这些文件来自于账号模板目录/etc/skell,基本上都是隐藏文件。

每个用户家目录中都有用户的初始配置文件。这些文件只对当前用户有效

~/.bash_profile :只在用户每次登陆时被执行,会设置一些环境变量,并且会调用该用户的~/.bashrc 文件

~/.bashrc :每次打开新的bash shell 时(包括的登录系统) 会被执行。并会调用/etc/bashrc 文件

~/.bash logout :此文件中的命令将在用户每次退出登录或退出bash shell时执行

 

在/etc/目录下,还有针对所有用户有效的全局配置文件

/etc/profile : 在登录时加载。 这个文件是为系统全局变量配置文件,可通过 重启系统或者执行source /etc/profile 命令使profile文件被读取

/etc/profile.d/ :这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本 ,会随着/etc/profile 一起被读取

/etc/bashrc : 在登录和切换新的 bash shell 读取。每一个运行bash shell的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取

 

使用pstree 命令查看bash

 

 

二:用户组管理

2.1 用户组的作用

Linux支持用户组,每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。一个组可以包含多个用户,每个用户也可以属于不同的组。

用户组在Linux中扮演着重要的角色,方便管理员对用户进行集中管理

 

2.2 组GID

GID: Group IDentity , 组标识号。对于组的唯一标识

root用户账号的GID号为固定值0

程序用户账号的GID号默认为Centos5,6: 1~499, Centos7: 1~999

普通用户的GID号默认为Centos5, 6: 500~60000, Centos7: 1000~60000

 

2.3 组账号文件

/etc/group 保存组账号的基本信息,每一行都是一个账号,用分号“:” 分隔为四个字段

从左到右依次是

组账号名称:密码占位符x :组账号GID:组账号包含的用户成员

#:组账号包含的用户成员(一般不包括基本组对应的用户帐号) ,多个成员之间以逗号","分隔

 

2.4 组密码文件

/etc/gshadow 保存组密码,每一行都是一个账号,用分号“:“ 分隔为四个字段

组名:加密密码:组管理员:组附加用户列表

 

2.5 添加组账号

gourpadd [-g GID] 组账号名

[root@localhost ~]# groupadd develop      #添加组develop
[root@localhost ~]# tail -1 /etc/group
develop:x:1002:

 

2.6 添加/删除组成员,更改组密码

gpasswd [选项] 组账号名

常用选项:

-a :向组内添加一个用户

-d :从组内删除一个成员用户

-M :定义组成员列表,以逗号分隔 (如果使用 -M 选项管理组成员,会覆盖原来的组成员列表)

[root@localhost home]# gpasswd -a zhangsan develop  #将用户zhangsan 添加到develop组中 
正在将用户“zhangsan”加入到“develop”组中
[root@localhost home]# cat /etc/group | grep develop  
develop:x:1002:zhangsan

[root@localhost home]# gpasswd -d zhangsan develop   #将用户zhangsan从组develop 中删除
正在将用户“zhangsan”从“develop”组中删除
[root@localhost home]# cat /etc/group | grep develop
develop:x:1002:

[root@localhost home]# gpasswd -M zhangsan,lisi,wangwu develop  #设置develop组的成员为zhangsan,lisi,wangwu
[root@localhost home]# cat /etc/group | grep develop
develop:x:1002:zhangsan,lisi,wangwu

 

2.7 删除组账号

groupdel 组账号名

[root@localhost home]# groupdel develop     #删除组develop
[root@localhost home]# cat /etc/group | grep develop

 

 

三:查询账号信息

3.1 查询用户所属组

groups [用户名]

[root@localhost ~]# groups zhangsan   #查询zhangsan用户的所属组
zhangsan : zhangsan

 

3.2 查询用户是否存在

id 用户名

[root@localhost ~]# id zhangsan   #查询zhangsan账号信息
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan) 
 #zhangsan用户存在,并给出详细信息
 
[root@localhost ~]# id abc      #查询用户abc账号信息
id: abc: no such user     
#abc 用户不存在

 

3.3 查询账号登录信息

3.3.1 finger [用户名]

#需要先安装finger 软件包

[root@localhost ~]# yum list | grep finger
finger.x86_64                               0.17-52.el7                base     
finger-server.x86_64                        0.17-52.el7                base     
[root@localhost ~]# yum -y install finger

[root@localhost ~]# finger zhangsan
Login: zhangsan                   Name: 
Directory: /home/zhangsan               Shell: /bin/bash
Never logged in.
No mail.
No Plan.
#显示了登录名,家目录,登录shell ,邮件,计划任务等信息

 

3.3.2 w ,who ,users 命令

w 命令

#w 命令不仅可以查看到登录信息,还可以查看到cpu 负载

 [root@localhost ~]# w
 11:10:30 up  1:48,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.23.1     09:22    6.00s  0.35s  0.02s w

 

11:10:30 当前时间

up: 系统运行时间

1 user :当前一个用户登录

load average:cpu 的负载情况。 第一个是1分钟, 第二个是5分钟, 第三个15分钟

user :登录的用户

tty :登录方式 pts/0 表示远程登录

FROM : 远程登录地址

LOGIN@ :登录时间

IDLE :用户空闲时间,从用户上一次任务结束开始

JCPU :表示正在某段时间内,所有与该终端相关的进程任务所耗费的CPU时间

PCPU :指WHAT 区域的任务执行后耗费的CPU时间

WHAT :表示当前执行的任务

 

who 命令

[root@localhost ~]# who
root     pts/0        2021-06-17 09:22 (192.168.23.1)

 

users命令

[root@localhost ~]# users
root

 

四,文件归属与权限

4.1 文件/目录的权限和归属

访问权限:读取,写入,执行

读取r:允许查看文件内容,显示目录列表

写入w:允许修改文件内容,允许在目录中新建或删除文件和子目录

可执行x:允许运行程序,切换目录

 

归属(所有权):属主和属组

属主:拥有该文件或目录的用户账号

属组:拥有该文件或目录的组账号

[root@localhost opt]# ls -l abc.txt 
-rw-r--r--. 1 root root 0 6月  17 11:19 abc.txt

 

 

权限项
执行
执行
执行
字符表示
r
w
x
r
w
x
r
w
x
数字表示
4
2
1
4
2
1
4
2
1
权限分配
文件所有者
文件所属组
其他用户

 

# 数字是8进制数 ,文件的默认权限是644,目录默认权限是755

 

 

4.2 chmod 设置文件和目录的权限

方法一,字符表示

chmod [ugoa] [+-=] [rwx] 文件或目录

#u,g,o,a 分别表示 属主,属组,其他用户 ,所有用户 。如果都不写,默认使用a

#+ , - ,= 分别表示 添加,去除,设置权限

# r , w , x 分别表示 读,写,执行

[root@localhost opt]# ll abc.txt 
-rw-r--r--. 1 root root 0 6月  17 12:25 abc.txt

[root@localhost opt]# chmod +x abc.txt     #所有用户添加执行权限
[root@localhost opt]# ll abc.txt 
-rwxr-xr-x. 1 root root 0 6月  17 12:25 abc.txt

[root@localhost opt]# chmod  g+w abc.txt     #属组添加写入权限
[root@localhost opt]# ll abc.txt 
-rwxrwxr-x. 1 root root 0 6月  17 12:25 abc.txt

[root@localhost opt]# chmod  u-w abc.txt    #属主去除写入权限
[root@localhost opt]# ll abc.txt             
-r-xrwxr-x. 1 root root 0 6月  17 12:25 abc.txt

[root@localhost opt]# chmod o=r abc.txt     #其他用户权限设置为 可读
[root@localhost opt]# ll abc.txt             
-r-xrwxr--. 1 root root 0 6月  17 12:25 abc.txt

 

方法二:使用数字表示修改

chmod nnn 文件或目录 (数字为 7654321,0表示没有权限)

[root@localhost opt]# ll abc.txt 
-rw-r--r--. 1 root root 0 6月  17 18:28 abc.txt
[root@localhost opt]# chmod 777 abc.txt   #将所有人的权限都设置为可读可写可执行
[root@localhost opt]# ll abc.txt 
-rwxrwxrwx. 1 root root 0 6月  17 18:28 abc.txt
[root@localhost opt]# chmod 000 abc.txt 
[root@localhost opt]# ll abc.txt         #所有人都没有任何权限
----------. 1 root root 0 6月  17 18:28 abc.txt

 

常用选项: -R 递归修改指定目录下所有子选项的权限

[root@localhost opt]# mkdir -p aa/bb/cc/
[root@localhost opt]# touch aa/bb/cc/abc.txt
[root@localhost opt]# chmod -R 777 aa   #递归修改目录aa 及所有子目录和文件的权限
[root@localhost opt]# ls -lR aa
aa:
总用量 0
drwxrwxrwx. 3 root root 16 6月  17 18:35 bb

aa/bb:
总用量 0
drwxrwxrwx. 2 root root 21 6月  17 18:35 cc

aa/bb/cc:
总用量 0
-rwxrwxrwx. 1 root root 0 6月  17 18:35 abc.txt

 

设置特殊权限

特殊权限: SUID, SGID,Sticky
数字表示:
SUID:4
SGID:2
sticky:1
 
Set UID
附属在属主的x位上  
属主权限标识会变为s (小s 表示原来有x权限,大S表示原来没有x权限)
当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。
chmod u+/-s  文件名

 

Set GID
附属在属组的x位上
属组的权限标识会变为s (小s 标识原来有x权限,大S表示原来没有x权限)
若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。
适用于目录,可以将目录下新增的文档自动设置为与父目录相同属组
chmod g+/-s  目录
 
 
Sticky Bit
附属在其他人的x位上
其他人的权限标识变为t (小写t表示其他人原来有x权限,大写T表示其他人原来没有x权限)在一个目录上设置了sticky特殊权限,只有文件的所有者和用户才能删除该目录的文件,而不理会属组和其他用户的写权限。
适用于开发w权限的目录,可以阻止用户滥用w权限。禁止其他人操作别人的文档
chmod o+/-t    目录
(开放w权限的目录,其他用户虽然不可以修改其他人文件,但是可以在里面删除和移动不属于他自己的文件)
 

 

 

4.3 设置文件和目录的归属

chown 属主 文件或目录

chown :属组 文件或目录

chown 属主:属组 文件或目录 #也可以用点” .“ 替换 冒号”:“

常用选项:

-R :递归修改制定目录下所有文件子目录归属

[root@localhost opt]# ll abc.txt 
-rw-r--r--. 1 root root 0 6月  17 18:40 abc.txt
[root@localhost opt]# chown test abc.txt         #将属主改为test用户
[root@localhost opt]# ll abc.txt 
-rw-r--r--. 1 test root 0 6月  17 18:40 abc.txt
[root@localhost opt]# chown :test abc.txt         #将属组改为test 组
[root@localhost opt]# ll abc.txt 
-rw-r--r--. 1 test test 0 6月  17 18:40 abc.txt
[root@localhost opt]# chown root:root abc.txt    #将属主和属组改为root用户root组
[root@localhost opt]# ll abc.txt                 
-rw-r--r--. 1 root root 0 6月  17 18:40 abc.tx

[root@localhost opt]# ls -lR aa
aa:
总用量 0
drwxr-xr-x. 3 root root 16 6月  17 18:43 bb

aa/bb:
总用量 0
drwxr-xr-x. 2 root root 6 6月  17 18:43 cc

aa/bb/cc:
总用量 0
[root@localhost opt]# chown -R  test:test aa    #递归修改aa目录及所有子目录文件的属主和属组为test用户test组
[root@localhost opt]# ls -lR aa
aa:
总用量 0
drwxr-xr-x. 3 test test 16 6月  17 18:43 bb

aa/bb:
总用量 0
drwxr-xr-x. 2 test test 6 6月  17 18:43 cc

aa/bb/cc:
总用量 0

 

4.4 设置目录和文件的默认权限 umask

umask 作用:

控制新建文件或目录的权限

默认权限去除umask 的权限为新建的文件或者目录的权限

文件的默认权限最大是666,即rw-rw-rw。也就是说任何用户都没有执行(x)的权限

目录的最大权限是777,即rwx-rwx-rwx

 

umask 查看:

[root@localhost opt]# umask
0022                               #默认权限是022,第一个0是特殊权限(SetUID、SetGID、Sticky BIT)

 

umask 设置

[root@localhost opt]# umask 0444                 #设置umask 值为 0444
[root@localhost opt]# touch  123.txt
[root@localhost opt]# mkdir abc
[root@localhost opt]# ls -l 123.txt 
--w--w--w-. 1 root root 0 6月  17 18:52 123.txt     #文件最大权限666 减去umask值,得222,即w-w-w 
[root@localhost opt]# ls -ld abc
d-wx-wx-wx. 2 root root 6 6月  17 18:52 abc      #目录最大权限777 减去umask 值得到333,即wx-wx-wx

umask 设置时,可能因为最后得到的结果不与想象一样。因为文件最大是666,它是由读写(rw)组成的,没有执行(x)。所以,如果最后得到结果是111,即 x-x-x,那么会发生变化

[root@localhost opt]# umask 555
[root@localhost opt]# touch abc.txt
[root@localhost opt]# ll abc.txt 
--w--w--w-. 1 root root 0 6月  17 18:56 abc.txt    #虽然结果是111,但是,最终权限是222

 

4.5 acl 访问控制列表

4.5.1  文档归属局限性
文档归属的局限性:
(1),任何人只属于三种角色: 属主,属组,其他人
(2),无法实现更精细的操作
 
4.5.2  acl访问策略:
(1)能够对个别用户,个别组,设置独立权限
(2)大多数挂载ext3或者ext4或者xfs 文件系统默认支持

 

4.5.3 设置acl 策略

setfacl [-R] -m u:用户名:权限类别 文档
setfacl [-R] -m g:组名:权限类别 文档
##为用户和组设置acl 策略,[-R]  表示递归
acl设置成功后,会在其他人x位后面加上加号+ 

 

getfacl  文档名

##查看文档的acl 策略

 

setfacl   [-R]   -x u:用户名:文档

setfacl   [-R]    -x g:组名:文档

##删除指定用户/组 的acl 策略

 

setfacl  [-R]  -b  文档

##删除所有的acl 策略

 

[root@localhost develop]# touch abc.txt
[root@localhost develop]# ll abc.txt 
-rw-r--r--. 1 root root 0 6月  18 10:28 abc.txt
[root@localhost develop]# setfacl -m u:zhangsan:rwx abc.txt     #为文件abc.txt设置zhangsan用户的acl 策略为可读可写可执行(rwx)
[root@localhost develop]# getfacl abc.txt                       #查看文件abc.txt 的acl 策略
# file: abc.txt
# owner: root
# group: root
user::rw-
user:zhangsan:rwx
group::r--
mask::rwx
other::r--

[root@localhost develop]# setfacl -m u:zhangsan:rwx abc.txt       #为abc.txt 文件设置zhangsan组 acl策略为 可读可写可执行(rwx)

[root@localhost develop]# getfacl abc.txt

# file: abc.txt
# owner: root
# group: root
user::rw-
user:zhangsan:rwx
group::r--
group:zhangsan:rwx
mask::rwx
other::r--

 

[root@localhost develop]# setfacl -x u:zhangsan abc.txt        #删除abc.txt 文件的 zhangsan用户的acl 策略
[root@localhost develop]# getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::rw-
group::r--
group:zhangsan:rwx
mask::rwx
other::r--

 

[root@localhost develop]# setfacl -b abc.txt                #删除abc.txt 用户的所有acl 策略
[root@localhost develop]# getfacl abc.txt
# file: abc.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--

 

 

 

 

 

 

 

 

 

posted @ 2021-06-17 20:00  知己一语  阅读(524)  评论(0编辑  收藏  举报