7-linux用户,组,权限使用详解

文章目录

  • 1. 基础
  • 2. 配置文件
    • 2.1 /etc/passwd
    • 2.2 /etc/shadow
    • 2.3 /etc/group
    • 2.4 /etc/gshadow
    • 2.5 /etc/skel/
    • 2.6 /etc/login.defs
    • 2.7 /etc/default/useradd
  • 3. 用户管理
    • 3.1 useradd & adduser
    • 3.2 userdel
    • 3.3 usermod
    • 3.4 密码管理
      • 3.4.1 passwd
      • 3.4.2 chage
    • 3.5 用户其他管理命令
      • 3.5.1 chsh
      • 3.5.2 chfn
      • 3.5.3 finger
      • 3.5.4 su
      • 3.5.5 id
  • 4. 组管理
    • 4.1 groupadd
    • 4.2 groupdel
    • 4.3 gpasswd
    • 4.4 用户组管理
      • 4.4.1 groupmems
      • 4.4.2 groups
  • 5 文件权限、用户管理
    • 5.1 文件属主,属组
      • 5.1.1 chown
      • 5.1.2 chgrp
    • 5.2 文件权限
      • 5.2.1 权限分类
      • 5.2.2 文件目录权限
      • 5.2.3 权限表示
      • 5.2.4 umask
      • 5.2.5 chmod
    • 5.3 特殊权限
      • 5.3.1 SUID
      • 5.3.2 SGID
      • 5.3.3 Stick
    • 5.4 linux的隐藏属性
    • 5.5 文件访问控制列表
      • 5.5.1 setfacl
      • 5.5.2 getfacl
      • 5.5.3 umask
      • 5.5.4 备份还原ACL

1. 基础

  • linux 组的类型
    • 用户的主要组:用户必须属于一个且只有一个主组,组名同用户名,且仅包含一个用户
    • 私有组的用户的附加组 ,一个用户可以属于零个或多个辅助组

2. 配置文件

  • linux 用户和组的主要配置文件:
    • /etc/passwd ;用户及其属性信息(名称,UID,主组ID等)
    • /etc/group :组及其属性信息
    • /etc/shadow :用户密码及其相关属性
    • /etc/gshadow;组密码及其相关属性

可以使用pwunconv这个命令使得/etc/shadow不再保存密码信息, 密码直接保存至/etc/passwd中 。另外通过pwconv直接转换回来,将密码保存至/etc/shadow中

grpconv/prgunconv这两个命令主要用于组配置文件,将组密码在/etc/group以及/etc/gshadow文件保存位置转换

2.1 /etc/passwd

root:x:0:0:root:/root:/bin/bash
  • 用户名
  • 密码区(已经弃用,现在保存在/etc/shadow文件中)
  • UID
  • GID
  • comment,描述信息
  • 家目录
  • shell

chfn 修改用户的描述信息 同时可以用finger查看用户的描述信息
可以通过chsh修改用户shell类型 chsh -s /bin/sh wang 或者chmod -s /bin/bash wang

2.2 /etc/shadow

root:$6$0hxZM8hjuVAGtlJL$D95CSZawl8hRfw1niUFo5r4sIolskNYwjk6EcnszLULa0dkFS5kdKLrRcbrMrOs.GzckC6uZ/eHIijAzvWGfD/::0:99999:7:::
nfsnobody:!!:17785::::::
  • 用户名
  • 加密密码 (密码区两个叹号表示该用户已经被锁定无法按照正常用户那样登录,该用户必须设置密码才能解锁)
  • 上次修改密码时间(距离1970年1月1日天数)
  • 口令的最短有效期(在有效期内不能改口令)
  • 口令的最长有效期
  • 提前通知密码失效天数
  • 密码过期之后可以改密码的时间,超过这个时间账号直接被锁
  • 账户有效期
  • 保留字段

authconfig --passalgo=sha512 --update 用这种方式更改密码的加密算法,在文件/etc/login.defs文件中同样定义了对应的加密模式

2.3 /etc/group

xiong:x:1000:root
  • 组名
  • 组密码(已经弃用,密码保存在/etc/gshadow)
  • GID
  • 以该组为附加组的用户

2.4 /etc/gshadow

xiong:!::root
  • 组名
  • 组密码
  • 组管理者:这个字段也可为空,如果有多个用户组管理者,用,号分割
  • 组内用户列表,用户以这个组为附加组

vipw命令:直接编辑passwd文件,如果修改的文件格式不对,会有提醒。
vigr :vim group
直接使用vi修改了/etc/passwd 以及/etc/group可以用pwck 以及grpck检查文件中的语法格式是否正确

2.5 /etc/skel/

  skelskeleton的缩写,意为骨骼框架。故此目录的作用是在建立新用户时,用于初始化用户根目录1

  • 如果在新建用户时,没有自动建立用户根目录,则无法调用到此框架目录。
  • 如果不想以默认的/etc/skel目录作为框架目录,可以在运行useradd命令时指定新的框架目录。例如:
    sudo useradd -d /home/chen -m -k /etc/my_skel chen
  • 如果不想在每次新建用户时,都重新指定新的框架目录,可以通过修改/etc/default/useradd配置文件来改变默认的框架目录,方法如下:
    查找SKEL变量的定义,如果此变量的定义已被注释掉,可以取消注释,然后修改其值:SKEL=/etc/my_skel

2.6 /etc/login.defs

  login.defs是设置用户帐号限制的文件,在这里我们可配置密码的最大过期天数,密码的最大长度约束等内容。该文件里的配置对root用户无效。如果/etc/shadow文件里有相同的选项,则以/etc/shadow里的设置为准,也就是说/etc/shadow的配置优先级高于/etc/login.defs

[root@localhost ~]# cat /etc/login.defs 
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#

# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#
#QMAIL_DIR	Maildir
#注:创建用户时,要在目录/var/spool/mail中创建一个用户mail文件;
MAIL_DIR	/var/spool/mail
#MAIL_FILE	.mail

# Password aging controls:
#
#	PASS_MAX_DAYS	Maximum number of days a password may be used.
#	PASS_MIN_DAYS	Minimum number of days allowed between password changes.
#	PASS_MIN_LEN	Minimum acceptable password length.
#	PASS_WARN_AGE	Number of days warning given before a password expires.
#
#密码最大有效期
PASS_MAX_DAYS	99999
#两次修改密码的最小间隔时间
PASS_MIN_DAYS	0
#密码的最小长度,对root无效
PASS_MIN_LEN	5
#密码过期前多少天开始提示
PASS_WARN_AGE	7

#
# Min/max values for automatic uid selection in useradd
#
#普通用户的UID最小值
UID_MIN                  1000
#普通用户UID最大值
UID_MAX                 60000
# System accounts
#新创建系统用户UID最小值
SYS_UID_MIN               201
#新创建系统用户UID最大值
SYS_UID_MAX               999

#
# Min/max values for automatic gid selection in groupadd
#普通组GID最小值
GID_MIN                  1000
#普通组GID的最大值
GID_MAX                 60000
# System accounts
#系统组GID的最小值
SYS_GID_MIN               201
#系统组GID的最大值
SYS_GID_MAX               999

#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD	/usr/sbin/userdel_local

#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
#控制useradd添加用户时是否默认创建家目录,useradd -m选项会覆盖此处设置
CREATE_HOME	yes

# The permission mask is initialized to this value. If not specified, 
# the permission mask will be initialized to 022.
#设置创建家目录时的umask值,若不指定则默认为022
UMASK           077

# This enables userdel to remove user groups if no members exist.
# 设置此项表示当组中没有成员时自动删除该组
# 且useradd是否同时创建同用户名的主组。(该文件中并没有此项说明,来自于man useradd中-g选项的说明)
USERGROUPS_ENAB yes

# Use SHA512 to encrypt password.
#设置用户和组密码的默认加密算法
ENCRYPT_METHOD SHA512 

2.7 /etc/default/useradd

创建用户时的默认配置。useradd -D修改的就是此文件。2

[root@localhost ~]# cat /etc/default/useradd  
# useradd defaults file
GROUP=100       # 在useradd使用-N或/etc/login.defs中USERGROUPS_ENAB=no时表示创建用户时不创建同用户名的主组(primary group),
                # 此时新建的用户将默认以此组为主组,网上关于该设置的很多说明都是错的,具体可看man useradd的-g选项或useradd -D的-g选项
HOME=/home      # 把用户的家目录建在/home中
INACTIVE=-1     # 是否启用帐号过期设置(是帐号过期不是密码过期),-1表示不启用
EXPIRE=         # 帐号过期时间,不设置表示不启用
SHELL=/bin/bash # 新建用户默认的shell类型
SKEL=/etc/skel  # 指定骨架目录,前文的/etc/skel就在这里
CREATE_MAIL_SPOOL=yes  # 是否创建用户mail缓冲

3. 用户管理

3.1 useradd & adduser

adduser是useradd的软链接命令

  • 语法: useradd [options] LOGIN
  • OPTIONS
    • -u : UID
    • -o : 配合-u选项,不检查UID的唯一性,可以添加UID相同的用户
    • -g : GID :指明用户所属基本组,可为可为组名,也可以是GID,基本组对于一个用户只能有一个,同一个组可以是多个用户的基本组
    • -c : “COMMENT”:用户的注释信息
    • -d : HOME_DIR:以指定的路径(不存在)为家目录
    • -s : SHELL:指明用户的默认shell程序,可用列表在/etc/shells文件中
    • -G : GROUP1[,GROUP2,…]:为用户指明附加组,组需事先存在
    • -N : 不创建私用组做主组,使用users组做主组
    • -r : 创建系统用户 Centos6 :ID<500, Centos 7 :ID <1000
    • -m : 用于系统用户,创建家目录 (一般系统用户在被创建时不会创建家目录)
    • -M : 用于普通用户,不创建家目录
    • -D : 可以通过这个命令查看/etc/default/useradd这个默认配置文件
      • -s : useradd -D -s SHELL 修改默认的shell
      • -b : BASE_DIR 修改默认的家目录
      • -g GROUP : 修改基本组信息
  • /etc/default/useradd,以及**/etc/login.defs** 均为用户创建时会生成的默认信息
  • newusers :批量创建用户 。newusers需要的文件内容,与/etc/passwd 文件中里面的用户的基本信息和格式一致 。使用时:直接使用newusers filename

3.2 userdel

  • 语法 : userdel [OPTION]… login
  • OPTIONS
    • -r 删除用户的同时,删除与用户相关的所有文件。
    • -f 强制删除用户,即使用户当前已登录;

3.3 usermod

  • 语法: usermod [option] login
  • options
    • -u UID :新UID
    • -g GID :新主组
    • -G GROUP1[,GROUP2,…[,GROUPN]]:新的附加组,原来的附加组将会覆盖,若保留原有,则要同时使用-a选项
    • -s SHELL:新的默认SHELL
    • -c ‘COMMENT’:新的注释信息
    • -d HOME :新的家目录不会自动创建;若要创建新家目录,并移动原家数据,同时使用-m选项
    • -l New_login_name login_name 新的名字
    • -L :lock指定用户,在/etc/shadow对应用户的密码栏中增加!
    • -U:unlock指定用户,在、etc/shadow密码栏的!拿掉
    • -e YYYY-MM-DD:指明用户账号过期日期
    • -f INACTIVE:设置非活动期限

3.4 密码管理

3.4.1 passwd

修改用户密码信息

  • 语法 : passwd [OPTIONS] [Username]
  • OPTIONS:
    • -l :锁定指定用户
    • -u :解锁指定用户
    • -d :删除指定用户的密码
    • -e:强制用户下次登录修改密码
    • -n mindays :指定最短使用期限
    • -x maxdays:最大使用期限
    • -w warndays:提前多少天开始警告
    • -i inactivedays :非活动期限
    • –stdin:从标准输入接受用户密码
echo "PASSWORD" | passwd  --stdin UserName

Username:修改指定用户的密码,仅root用户权限
直接使用这用passwd命令,表示修改当前用户的密码

3.4.2 chage

修改用户密码的时间信息

  • 语法 : chage [OPTION] ...username:
  • OPTIONS :
    • -d LAST_DAY
    • -E --expiredate EXPIRE_DATE
    • -I --inactive INACTIVE
    • -m --mindays MIN_DAYS
    • -M --maxdays MAX_DAYS
    • -W --warndays WARN_DAYS
    • -l 显示密码策略
chage -d0 tom 下次登录强制重设密码
chage -m 0 -M42 -W 14 -I 7 Tom
chage -E 2016-9-10 
  • chpasswd : 批量修改用户密码。在文件中需要按照username:password的格式 。
    使用方式 :cat filename |chpasswd

3.5 用户其他管理命令

3.5.1 chsh

chsh -s shell name:修改用户默认shell

3.5.2 chfn

chfn [username]: 修改用户描述信个人信息

3.5.3 finger

finger [username] :查看用户个人信息

3.5.4 su

su :主要用于用户切换

  • 语法 : su [opions...] [-] [user [args...]]
  • 切换用户的方式
    • su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
    • su - UserName:登录式切换,会读取目标用户的配置文件,切换至目标家目录,完全切换
  • root su至其他用户无需密码,非root的用户切换时需要密码
  • 换个身份执行命令
    • su [-] UserName -c 'COMMAND'
  • 选项 -l --login
    • su -l UserName 相当于su - UserName

3.5.5 id

id : 可以显示真实有效的用户ID(UID)和组ID(GID)

  • 语法 : id [OPTION]…[USER]
  • OPTIONS
    • -u : 显示UID
    • -g : 显示GID
    • -G : 显示用户所属组的ID
    • -n : 显示名称,需配合ugG使用

4. 组管理

4.1 groupadd

添加组

  • 语法 : groupadd [option]...groupname
  • OPTIONS
    • -g GID :指明GID
    • -r :创建系统组

4.2 groupdel

用于删除组

  • 用法 : groupdel groupname

4.3 gpasswd

主要用于为组添加用户以及修改组中用户

  • 语法 : gpasswd [OPTION] group
  • OPTIONS
    • -a user : 将user添加至指定组中
    • -d user : 从指定组中移除用户
    • -A user1,user2… : 设置有管理权限的用户列表
  • 管理权限,表示该用户可以为该组,添加或者删除成员

组密码主要用户主要用于用户临时切换组访问文件或者运行命令,使用的命令为newgrp [group]

4.4 用户组管理

4.4.1 groupmems

查看或更改组成员
语法 : groupmems [options] [action]

  • options:
    • -g ,–group groupname 更改为指定组(只有root)
  • Actions:
    • -a ,–add username 指定用户加入组
    • -d --delete username 从组中删除用户
    • -p ,–purge 从组中清除所有成员
    • -l ,–list 显示组成员列

4.4.2 groups

groups [OPTION][USERNAME]...:查看用户所属组列表

5 文件权限、用户管理

5.1 文件属主,属组

5.1.1 chown

chown : 修改文件的属主

  • 语法: chown [OPTION]..[OWNER][:[GROUP]] FILE...
  • 用法:
    • OWNER
    • OWNER:GROUP
    • :GROUP
    • 命令中的冒号可用.替换
    • -R:递归
    • chown [OPTION]… --reference=RFILE FILE …

5.1.2 chgrp

chgrp : 用来改变文件或目录所属的用户组

  • 用法: chgrp [OPTION]...GROUP FILE ...
  • OPTIONS
    • chgrp [OPTION]… --reference=RFILE FILE …
    • -R 递归

5.2 文件权限

5.2.1 权限分类

  • r读权限 : 可以打开文件、目录读取查看
  • w 写权限 : 对文件目录可以编写更改
  • x 执行权限 : 对文件可执行(可执行文件)、对目录可查找该目录下的内容。
  • - 没有权限。

5.2.2 文件目录权限

  • 文件

    • 读权限r) : 表示只允许指定用户读取相应文件的内容,而禁止对它做任何的更改操作。将所访问的文件的内容作为输入的命令需要的权限。例如catmore等。
    • 写权限w)表示允许指定用户打开修改文件。例如命令vicp等。
    • 执行权限x)表示允许指定用户该文件作为一个程序执行
  • 目录

    • 读权限r) : 可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许Shell使用文件扩展名列出相匹配的文件名
    • 写权限w) : 允许用户从目录删除添加新的文件,通常只有文件主才有写权限
    • 执行权限x) : 允许用户在目录中查找,并能用cd命令将工作目录改到该目录。如果一个目录只有读权限,那么只能读取该目录下面的所有文件不能读取文件的详细信息。即不能用ls -l 查看该目录下的文件的详细信息,只能看到文件名

对于文件和目录而言有s特别标志位, 在SUID,SGID中会讲解。

5.2.3 权限表示

在linux中针对文件,分别对应文件属主,属组以及其他用户的权限, 每一种用户类型都用三位表示rwx,分别表示读写执行权限。如果文件中对应权限没有,则直接用-表示,即-wx,--x…。同时对应的权限可以直接当做二进制数值,并将其用十进制表示出来,rwx= 7 ,rw-= 6,r-x=5…

5.2.4 umask

  umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。3
  通过umask命令可以配置linux文件的掩码值。默认umask为022,
一般umask在**~/.bashrc中修改。
  umask 与最大权限相与,可以得到文件
目录权限**

文件最大权限(666):110110110  
umask           : 001100101  
文件权限        : 110010010   
umask中0表示不关心,不处理,1表示从最大权限中要去掉对应位置的权限
  • 对于目录根据umask设置权限的方法:777-umask
  • 对于文件 666-umask 观察结果有偶数,最终结果便是直接算出来的值,如果是奇数,最终结果加1便是权限值
  • umask OPTIONS [mode] 设置umask值
    • -p :输出结果为 umask 0022这样
      一般用于写脚本,umask -p >~/.bashrc
    • -S 输出结果为u=rwx,g=rx,o=rx 在设置umask是可以直接设置成结果同样的新形式,这个结果表示文件default的权限值

5.2.5 chmod

修改文件的权限

  • 语法 : chmod [OPTION]... MODE[,MODE]... FILE...
  • MODE:
    • 修改一类用户的所有权限(u:表示属主;g:表示属组;o:表示其他用户)
      • u=
      • g=
      • o=
      • ug=
      • a=
      • u=,g=
    • 修改一类用户某位或某些位权限
      • u+
      • u-
  • chmod +X filename:
    修改权限的文件中任一用户有执行权限则全部都有执行权限

后面的权限可以用rwx,或者777表示

chmod +rwx  file.txt //给文件中的所属主,属组,其他用户均添加`rwx`权限  与a+用法类似
chmod o+r  file.txt  //给文件中其他用户添加读权限
chmod u=r  file.txt // 让文件属主只有读权限
chmod g=rw  file.txt //让文件属组拥有读写权限
chmod 777  file.txt
chmod u=r,g=rw,o+r  file.txt

5.3 特殊权限

5.3.1 SUID

  SUID(Set User ID):继承所有者权限

  • suid只能作用在二进制程序上,不能作用在scripts上
  • 执行suid权限的程序时,用户将继承此程序的所有者权限
  • 本权限仅在执行该程序的过程中有效(run-time)
  • 执行者对于该程序需要具有x的可执行权限;

  配置SUID时,可以直接通过chmod命令配置,直接通过给属主添加s权限

chmod u+s filename
chmod 4660 filename  

文件权限中可以通过SUID,SGID,Stick位三者可以按照二进制方式组成并以十进制的方式表现出来,所以对应的4660中的4表示SUID

5.3.2 SGID

  GUID : 与SUID一样,继承所有组的权限

  1. 对于二进制文件和SUID类似,作用在二进制程序上,执行sgid权限的程序时,此用户将继承此程序的所属组权限
  2. 作用在目录上,在此目录新的文件的所属组,将自动继承目录的所属组
chmod g+s filename
chmod 4660 filename

5.3.3 Stick

  这个位主要是针对other用户设置的,设置之后other 用户中只有文件的拥有者才能删除这个目录中对应的自己的文件文件。Sticky只能作用域目录上。只对other用户有效,对属主与属组以及root用户无效

chmod o+t dirname
chmod 1777 dirname

当文件目录中,如果没有执行权限,则在权限上面会变成大写的S、T ,由于这些特殊权限需要有执行权限。此时大写表示特殊权限失效。

[root@localhost ~]# ll -d /test/
drwxrwxrwT 2 wang wang 15 Oct 11 22:14 /test/

5.4 linux的隐藏属性

  首先说明,这个隐藏属性主要是针对ext系列的文件系统设计的,主要为了增加系统的安全性,此功能已全部或部分扩展到其他的文件系统上面了,例如XFSReiserFSJFSOCFS2

使用chattr 为文件修改隐藏属性,

  • 语法: chattr [ -RVf ] [ -v version ] [ mode ] files…
    + :在原有参数设定基础上,追加参数。
    - :在原有参数设定基础上,移除参数。
    = :更新为指定参数设定。
  • mode: 主要属性有以下几种:
    • A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
    • S:硬盘I/O同步选项,功能类似sync。
    • a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
    • c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
    • i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
    • j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
    • s:保密性地删除文件或目录,即硬盘空间被全部收回。
    • u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。

常用的两个属性有a, i

chattr +i /etc/resolv.conf   //此时无法修改/etc/resolv.conf文件
chattr -i /etc/resolv.conf   //删除文件的隐藏权限,现在可以删除和修改文件中的内容
chattr +a /etc/tesolv.conf   //此时只能追加文件内容,不能删除,不能改名

lsattr /etc/resolv.conf  //显示文件的隐藏权限
----i-------- /etc/resolv.conf

5.5 文件访问控制列表

  扩展ACL是一种特殊权限,它是文件系统上功能,用于解决所有者、所属组和其他这三个权限位无法合理设置单个用户权限的问题。所以,扩展ACL可以针对单一使用者,单一档案或目录里的默认权限进行r,w,x的权限规范。
查看文件系统是否开启了ACL功能。4
  可以直接通过使用dumpe2fs命令查看对应文件系统中挂载时是否默认有acl功能,如果没有可以直接通过mount -o acl,给文件系统添加ACL功能。
  通过使用setfacl以及getfacl这两个命令修改文件的扩展的ACL。

5.5.1 setfacl

  • 语法:
    • setfacl [options] u:[用户列表]:[rwx] 目录/文件名 # 对用户设置使用u
    • setfacl [options] g:[组列表]:[rwx] 目录/文件名 # 对组设置使用g
  • OPTIONS
    • -m:设定ACL权限(modify)
    • -x:删除指定的ACL权限,可以指定用户、组和文件来删除(remove)
    • -M:写了ACL条目的文件,将从此文件中读取ACL条目,需要配合-m,所以-M指定的是modify file 文件中写的内容就是u:wang:rwx。 这样的权限内容
    • -X:写了ACL条目的文件,将从此文件中读取ACL条目,需要配合-x,所以-X指定的是remove file
    • -n:不重置mask
    • -b:删除所有的ACL权限
    • -d:设定默认ACL权限,只对目录有效,设置后子目录(文件)继承默认ACL,只对未来文件 有效
    • -k:删除默认ACL权限
    • -R:递归设定ACL权限,只对目录有效,只对已有文件有效
mount -o acl  /idrectory  
getfacl file | directory  
setfacl -m u:wang:rwx file|directory   // 设置用户权限
setfacl -Rm g:sales:rwX directory    // 递归设置对应目录的组用户权限
setfacl -M file.acl file|direcory     // 通过文件设置对应的文件目录权限
setfacl -m g:salesgroup:rw file|directory     //  设置对应的组权限
setfacl -m d:u:wang:rx  directory   //  设置对应目录的用户权限  前面加d  表示默认权限,即在对应目录中新建文件目录同样拥有对应的用户权限
setfacl -x u:wang file|directory    //  删除对应用户的acl权限
setfacl -X file.acl directroy   //通过文件删除目录的ACl权限
setfacl -b file  //删除文件中所有的acl权限  
setfacl -k //删除文件的默认权限 
getfacl file1 | setfacl --set-file=- f2  //将file1的权限直接复制给file2
setfacl --set  u:rw,u:wang:rw,g::r,o::-  f2   //这个命令类似于重新覆盖原来的所有权限。

如果使用用户属于多个组,则累加权限
系统会默认从上往下读取权限, 如果是组成员则累加权限

5.5.2 getfacl

使用getfacl可以直接查看文件的acl的值

5.5.3 umask

[root@localhost app]# getfacl f1
# file: f1
# owner: root
# group: root
user::rw-
user:xiong:rw-   #effective:r--
group::r--
mask::r-
other::r--

mask 这个值除了user:rw- 以及other::r–不会影响到之外其他均会受到影响,mask值决定了中间这些人的最大权限。 默认每次设置文件的acl都会重置mask为给当前设置用户的值。 可以使用-n ,表示默认不修改mask的值

有两种方法可以修改mask的值
1. chmod g=r f1
2. setfacl -m mask::r f1 
3. setfacl -m m::r f1

5.5.4 备份还原ACL

有些工具在复制文件时会丢失acl ,备份以及还原ACl的方法
主要的文件操作命令cp 和mv都支持ACl,只是cp命令需要加上-p 参数,但是tar 等常见的备份工具是不会保留目录和文件的ACL信息的

getfacl -R /tmp/dir1 > acl.txt  
setfacl -R -b /tmp/dir1  
setfacl -R --set-file=acl.txt /tmp/dir1  
setfacl --restore acl.txt 
getfcal -R /tmp/dir1

在这个命令中第三条以及第四条均是回复ACl的操作,任选一条就好了, 但是–restore 这条命令在运行时,在相对路径上执行的,所以对于使用者需要在复制目录的前一个目录执行此命令


  1. CSDN:Linux下/etc/skel框架目录的简介与使用 ↩︎

  2. 博客园-骏马金龙:第2章 细说Linux系统用户/组管理(1) ↩︎

  3. linux命令大全:umask ↩︎

  4. 博客园-骏马金龙:第3章 Linux上文件的权限管理 ↩︎

你可能感兴趣的:(基础linux学习)