目录

5.3 用户权限管理

Linux 用户与组管理命令

/images/linux_mt/linux_mt.jpg

本节我们将学习用户权限以及权限管理。包括以下内容:

  1. Linux 的权限模型
  2. Linux 权限管理
  3. Linux 属主属组管理
  4. umask 文件权限的遮罩码设置

1. Linux权限模型

Linux 权限模型包括:

  1. Linux 按照属主,属组,其他三类用户,分别设置了r(读),w(写),x(执行) 三个权限
  2. 进程对文件的访问权限,取决于进程的发起者
  3. 权限的匹配按照属主,属组,其他的顺序,如果进程的发起者是文件的属主,则进程对此文件具有属主权限
1
2
3
4
5
6
> ls /etc/passwd

# rwxrwxrwx
	# 左三位:定义user(owner)的权限
	# 中三位:定义group的权限;
	# 右三位:定义other的权限

1.1 文件与目录权限的含义

权限 文件 目录
r 可获取文件的数据 可使用ls命令获取其下的所有文件列表
w 可修改文件的数据 可修改此目录下的文件列表;即创建或删除文件
x 可将此文件运行为进程 可cd至此目录中,且可使用ls -l来获取所有文件的详细属性信息

1.2 权限的数字标识

rwx 权限分别对应数字 421。这种以 2 的幂次递增的表示方式可以使得,任一一个总数都可以唯一表示一种权限类型。比如 5 表示 r-x

2.权限管理命令

chmod 命令中用户可以使用如下代号表示

  • u:属主
  • g:属组
  • o:其它
  • a: 所有

chmod [OPTION]... MODE[,MODE]... FILE...

  • 赋权表示法,直接操作一类用户的所有权限位rwx;
1
2
3
4
5
6
> chmod ug=rwx /etc/fstab
> chmod ug=rwx,o= /etc/fstab
> chmod go= /etc/fstab

# 数字权限设置,每个用户的权限不能省略
> chmod 666 /etc/fstab

chmod [OPTION]... OCTAL-MODE FILE...

  • 授权表示法:直接操作一类用户的一个权限位r,w,x;
    • u+, u-
    • g+, g-
    • o+, o-
    • a+, a-
1
2
3
4
5
> chmod ug+x /etc/fstab
> chmod u-w  /etc/fstab
> chmod +x /etc/fstab == chmod a+x /etc/fstab
> chmod +w /etc/fstab == /chmod u+w /etc/fstab  # w 权限比较特殊
> chmod u+x,g+w /etc/fstab

chmod [OPTION]... --reference=RFILE FILE...

  • 引用表示法: 引用其他文件的权限为目标设置权限
  • --reference: 参考的文件
1
chmod --reference=/var/log/message /etc/fstab

chmod 的可用选项如下:

  • 选项:
    • -R, --recursive: 递归修改
  • 注意:用户仅能修改属主为自己的那些文件的权限;

install

install

  • 作用: copy files and set attributes
  • 用法:
    • 单源复制:
      • install [OPTION]... [-T] SOURCE DEST
    • 多源复制:
      • install [OPTION]... SOURCE... DIRECTORY
      • install [OPTION]... -t DIRECTORY SOURCE...
    • 创建目录:
      • install [OPTION]... -d DIRECTORY...
  • 常用选项:
    • -m, --mode=MODE:设定目标文件权限,默认为755;
    • -o, --owner=OWNER:设定目标文件属主;
    • -g, --group=GROUP:设定目标文件属组;

mktemp

mktemp [OPTION]... [TEMPLATE]

  • 作用: create a temporary file or directory
  • 常用选项:
    • -d:创建临时目录
  • 注意:mktemp会将创建的临时文件名直接返回,因此,可直接通过命令引用保存起来;
1
> mktemp /tmp/mytext.XXXXXX # 有几个 X 就有几个随机字符

3. 从属关系管理命令

chown命令:

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

  • 作用: 修改文件的属主属组
  • 选项:
    • -R:递归修改
  • 注意:仅管理员可修改文件的属主和属组;
1
2
3
4
5
> chown -R tao:tao /etc/fstab # 同时更改属主属组
> chown -R tao.tao /etc/fstab # 同时更改属主属组
> chown -R tao /etc/fstab # 仅更改属主
> chown -R :tao /etc/fstab # 仅更改属组,.与: 均可
> chown -R --reference=/var/log/message /etc/fstab

chgrp

chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...

4. umask

umask [MASK]

  • 作用:
    • 查看或设置文件的权限反向掩码,遮罩码;
    • 默认查看当前 umask
    • 后跟 MASK 设置 umask
  • 效果:
    • 文件默认权限 = 666-umask
    • 目录默认权限 = 777-umask
  • 注意:
    • 文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,需要将其加1;
    • 此类设定仅对当前shell进程有效;
1
2
3
umask: 023
666-023=644
777-023=754

练习

1
2
3
4
5
6
# 新建系统组mariadb, 新建系统用户mariadb, 属于mariadb组,要求其没有家目录,且shell为/sbin/nologin;尝试root切换至用户,查看其命令提示符;
# 新建GID为5000的组mageedu,新建用户gentoo,要求其家目录为/users/gentoo,密码同用户名;
# 新建用户fedora,其家目录为/users/fedora,密码同用户名;
# 新建用户www, 其家目录为/users/www;删除www用户,但保留其家目录;
# 为用户gentoo和fedora新增附加组mageedu;
# 复制目录/var/log至/tmp/目录,修改/tmp/log及其内部的所有文件的属组为mageedu,并让属组对目录本身拥有写权限;