文件权限和用户组管理

一、文件通配符

所谓通配符glob,即使用特定的字符(称之为元字符),可实现对文件的匹配,实现快速引用多个文件的功能。详细介绍请参考帮助:man 7 glob

通配符相关的元字符如下:

:匹配任意长度的任意字符,例如,p\可匹配p开头的所有文件。

?:匹配任意单个字符,例如,p?可匹配p后面有一个字符的文件。

[]:中括号匹配指定集合内的任意单个字符。

例如:

[liuy]:表示l,i,u,y中的任意一个字符。

[0-9]:表示匹配单个数字。

[[:upper:]]:匹配任意单个大写字母。

[[:lower:]]:匹配任意单个小写字母。

[[:digit:]]:匹配任意单个数字,等价于[0-9]。

扫描二维码关注公众号,回复: 12603047 查看本文章

[[:alpha:]]:匹配任意一个大小写字母。

[[:alnum:]]:匹配任意一个大小写字母或数字。

[[:space:]]:匹配单个空白字符。

[[:punctl:]]:匹配单个标点符号。

[^]:匹配指定集合外的任意单个字符。

实操:

  1. 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    文件权限和用户组管理

  2. 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

    文件权限和用户组管理

二、用户和组管理类命令

常用的用户管理命令

  1. useradd:创建新用户

    格式:useradd [options] LOGIN

    常见选项:

    选项 说明
    -u UID 指定创建用户的UID
    -o 配合-u选项,不检查UID的唯一性
    -g GID 指明用户所属主要组,可为组的名称,也可以是GID
    -c COMMENT 用户的注释信息
    -d HOME_DIR 以指定的路径为家目录
    -s SHELL 指明用户默认的shell程序(可用列表 在/etc/shells文件中)
    -G GROUP 为用户指明附加组,组须事先存在
    -N 不创建和用户同名的私用组做主组
    -r 创建系统用户。CentOS 6:UID<500,CentOS 7:UID<1000
    -m 创建家目录,一般用于系统用户
    -M 不创建家目录,一般用于非系统用户
  2. usermod:修改用户属性

    格式:usermod [options] LOGIN

    常见选项:

    选项 说明
    -u UID 新UID
    -g GID 新主组
    -G GROUP 新附加组,原来的组会被覆盖,若想保留原有,则要同时使用-a选项
    -s shell 新的默认shell
    -c COMMENT 新的注释信息
    -d HOME 新家目录不会自动创建,若要创建新家目录并移动原家目录数据,要同时使用-m选项
    -L USERNAME lock指定用户(在/etc/shadow密码栏加!)
    -U USERNAME unlock指定用户(将/etc/shadow密码栏的!拿掉)
  3. userdel:删除用户

    格式:userdel [options] LOGIN

    常见选项:

    选项 说明
    -f --force 强制删除
    -r --remove 删除对应用户的家目录以及邮箱文件
  4. id:查看用户的UID、GID等信息

    格式:id [OPTION]... [USER]

    常见选项:

    选项 说明
    -u 显示UID
    -g 显示GID
  5. su:即switch user,可以切换用户身份,并且以指定用户的身份执行命令

    格式:su [options] [-] [<user> [<argument>...]]

    常见选项:

    选项 说明
    -,-l --login 开启loginshell,如果后面没有指定用户,默认为root
    -c --command< command> 使用目标用户身份执行一次命令

    切换用户的方式:

    • su username:非登录式切换,即不会读取目标用户的配置文件,不会改变当前工作目录,即不完全切换
    • su - username:登录式切换,会读取目标用户的配置文件,切换至目标用户家目录,即完全切换

    注意:

    • root切换至其他用户无需密码,非root用户切换时需要密码。
    • su切换新用户后,使用exit退回至旧用户,而不要再用su切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。
  6. passwd:设置用户密码

    格式:passwd [OPTION...] <accountName>

    常见选项:

    选项 说明
    -d 删除指定用户密码
    -l 锁定指定用户,同usermod命令的-L选项效果一样
    -u 解锁指定用户,同usermod命令的-U选项效果一样
    -e 强制用户下次登录修改密码(修改shadow文件第三个字段为0)
    -f 强制操作
    -n mindays 密码最短使用期限(shadow文件第四字段)
    -x maxdays 密码最大使用期限(shadow文件第五字段)
    -w warndays 密码过期前的警告天数(shadow文件第六字段)
    -i inactivedays 密码过期后的宽限天数(shadow文件第七字段)
    --stdin 从标准输入接收用户密码,Ubuntu无此选项
  7. chage:修改用户密码策略

    格式:chage [options] LOGIN

    常见选项:

    选项 说明
    -d 修改shadow文件第三个字段,最后一次修改密码时间,格式为YYYY-MM-DD
    -m 修改shadow文件第四个字段,密码最短使用期限
    -M 修改shadow文件第五个字段,密码最长使用期限
    -W 修改shadow文件第六个字段,密码失效前的警告天数
    -I(大写I字母) 修改shadow文件第七个字段,密码失效后的宽限天数
    -E 修改shadow文件第八个字段,账号的有效期限
    -l(小写L字母) 显示用户的密码策略

常用的组管理命令

  1. groupadd:创建组

    格式:groupadd [options] GROUP_NAME

    常见选项:

    选项 说明
    -g 指明GID
    -r 创建系统组,CentOS 6之前:GID<500;CentOS 7以后:GID<1000
  2. groupmod:组属性修改

    格式:groupmod [options] GROUP

    常见选项:

    选项 说明
    -n 指定新组名
    -g 指定新GID
  3. groupdel:删除组

    格式:groupdel [options] GROUP

    常见选项:

    选项 说明
    -f 强制删除,即使是用户的主组也删除
  4. gpasswd:可以更改组密码,也可以修改附加组的成员关系

    格式:gpasswd [option] GROUP

    常用选项:

    选项 说明
    -a user 将user添加至指定组中
    -d user 从指定组中删除user
    -A user1,user2,... 设置有管理权限的用户列表
  5. newgrp:临时切换主组,如果用户本不属于此组,则需要组密码

    格式:newgrp [-] [group]

    如果使用 - 选项,可以初始化用户环境。

实例:

  1. 创建组distro,其ID为2019。

    文件权限和用户组管理

  2. 创建用户mandriva,其ID号为1005,基本组为distro。

    文件权限和用户组管理

  3. 创建用户mageia,其ID号为1100,家目录为/home/linux。

    文件权限和用户组管理

  4. 给用户mageia添加密码,密码为mage,并设置用户密码7天后过期。

    文件权限和用户组管理

  5. 删除mandriva,但保留其家目录。

    文件权限和用户组管理

  6. 创建用户slackware,其ID号为2002,基本组为distro,附加组为peguin。

    文件权限和用户组管理

  7. 修改slackware的默认shell为/bin/tcsh。

    文件权限和用户组管理

  8. 为用户slackware新增附加组admins,并设置不可登录。

    文件权限和用户组管理

三、文件权限管理

文件权限介绍

文件的权限主要针对三类对象进行定义:owner(属主,u)、group(属组,g)、other(其他,o)。文件的常用权限有三种:r(readable)、w(writable)、x(excutable)。

字符表示 权限 对文件的含义 对目录的含义
r 读权限 可以查看文件内容 可以查看目录中文件列表
w 写权限 可以修改文件内容 可以在目录中创建、修改文件
x 执行权限 可以执行文件(须为可执行文件) 可以进入目录

文件的三种特殊权限:SUID、SGID、Sticky

SUID:当设有SUID权限的可执行二进制程序被执行时,这个程序的进程所有者为程序文件的所有者身份。也就是说当其他用户执行这个程序时,会暂时获得程序的所有者身份,当然,这个身份只在程序执行过程中有效。SUID只对二进制可执行文件有效,设置在目录上没有意义。

文件权限和用户组管理

其中passwd文件的属主执行权限位是s,代表passwd属主有执行权限,同时具有SUID权限。假如一个文件没有可执行权限,但是设置了SUID权限,属主的可执行权限位显示为大写的字母S。

SGID:

  • 设置在目录上时,用户在这个目录中创建的新文件的属组将自动继承此目录的属组。
  • 设置在二进制文件上时,功能和SUID类似,运行这个二进制程序时,其他用户会得到这个程序的所属组的权限。

文件权限和用户组管理

其中locate文件的属组执行权限位是s,属组是slocate,代表属主外的其他用户执行这个程序时,会暂时获得slocate组权限。

Sticky:只对目录有效,权限用t表示。设置有Sticky权限的目录,用户在该目录下创建的文件只有这个用户和root用户可以进行删除操作。利用此权限可以防止普通用户删除其他人的文件。系统中/tmp目录就是有Sticky权限的目录。

文件权限和用户组管理

文件的特殊属性

通过文件的特殊属性,可以增加对文件的操作限制,设置了特殊属性的文件即使root这样的超级用户也会被限制。文件特殊属性通过chattr命令来实现,也可以通过lsattr查看到这些属性。

chattr:改变文件特殊属性

格式:chattr [-RVf] [-+=ia] files...

常用选项:

选项 说明
-R 递归处理,将目录及目录下的子目录和文件一起处理
-V 显示版本信息和设置的权限
-f 隐藏大部分错误信息
- 表示去掉属性
+ 表示添加属性
= 表示重设属性
i 表示不能删除、修改、重命名和创建硬链接
a 表示不能删除、修改和创建硬链接,但是可以追加内容

lsattr:查看文件的特殊属性

格式:lsattr [-Rad] [files...]

常用选项:

选项 说明
-a 显示所有文件和目录,包括以“.”开头的文件
-d 显示目录,而非其内容
-R 递归处理

文件的FACL

FACL:File Access Control List

前面介绍的权限,只能针对所有者、所属组、其他人三种不同的用户群体分别设置相应权限,当需要对更多的用户设置不同权限时,传统的方式已经无法实现,利用FACL可以实现更加灵活的权限控制。管理FACL的两个常见命令setfacl和getfacl,其中setfacl可设置FACL权限,getfacl可查看FACL权限。

setfacl:设置FACL权限

格式:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

常用选项:

选项 说明
-m, --modify=acl 更改文件的访问控制列表
-M, --modify-file=file 从文件读取访问控制列表来设置
-x, --remove=acl 删除文件访问控制列表条目
-X, --remove-file=file 从文件读取访问控制列表并删除
-b, --remove-all 清除所有FACL
-R, --recursive 递归操作目录及子目录

getfacl:查看FACL权限

格式:getfacl [-aceEsRLPtpndvh] file ...

常用选项:

选项 说明
-a, --access 显示文件访问控制列表
-e, --all-effective 显示所有有效的权限
-E, --no-effective 显示无效的权限

实例:

创建用户user1、user2、user3。在/data/下创建目录test

  1. 目录/data/test属主、属组为user1。

    文件权限和用户组管理

  2. 在目录属主、属组不变的情况下,user2对目录有读写权限。

    文件权限和用户组管理

  3. user1在/data/test目录下创建文件a1.sh、a2.sh、a3.sh、a4.sh,设置所有用户都不可删除a1.sh、a2.sh文件,除了user1及root之外,所有用户都不可删除a3.sh、a4.sh。

    文件权限和用户组管理

    上图可以看到,给a1.sh、a2.sh两个文件设置文件特殊属性后,任何用户都无法删除文件。

    文件权限和用户组管理

    给/data/test目录设置Sticky权限后,root和user1用户可以删除这个目录下的文件,但是root和user1以外的用户不能删除这个目录下的文件,所以user2用户不能删除a3.sh、a4.sh。

  4. user3增加附加组user1,同时要求user3不能访问/data/test目录及其下所有文件。

    文件权限和用户组管理

  5. 清理/data/test目录及其下所有文件的acl权限。

    文件权限和用户组管理

猜你喜欢

转载自blog.51cto.com/15092752/2642147