用户与权限管理

用户与权限管理

Linux 是多用户系统,用户和权限管理是它的核心概念之一。这一篇我们来学习如何管理用户、组和文件权限。

用户和权限的基本概念

用户

在 Linux 系统中,不论本机还是远程登录,每个用户都必须拥有一个账号,并且对不同的系统资源拥有不同的使用权限。Linux 可以指定每一个用户针对不同文件或目录的不同权限。

对文件/目录的权限包括三种:

权限 英文 缩写 数字代号
读 read r 4
写 write w 2
执行 execute x 1

组

为了方便用户管理,Linux 提出了「组」的概念。可以预先针对组设置好权限,然后把不同的用户添加到对应的组中,就不用依次为每个用户设置权限了。

超级用户 root

Linux 系统中的 root 账号通常用于系统的维护和管理,对操作系统的所有资源具有所有访问权限。在大多数版本的 Linux 中,都不推荐直接使用 root 账号登录系统。

安装 Linux 时,系统会自动创建一个用户账号,这个默认用户称为「标准用户」。

sudo

  • su 是 substitute user 的缩写,表示使用另一个用户的身份
  • sudo 命令用来以其他身份执行命令,预设身份为 root
  • 用户使用 sudo 时,必须先输入密码,之后有 5 分钟的有效期限

若未经授权的用户企图使用 sudo,系统会发出警告邮件给管理员。

组管理命令

创建组、删除组的命令都需要通过 sudo 执行。

命令 作用
groupadd 组名 添加组
groupdel 组名 删除组
cat /etc/group 确认组信息
chgrp -R 组名 文件/目录名 递归修改文件/目录的所属组

组信息保存在 /etc/group 文件中。/etc 目录是专门保存系统配置信息的目录。

用户管理命令

创建用户、删除用户、修改其他用户密码的命令都需要通过 sudo 执行。

创建用户、设置密码、删除用户

命令 作用 说明
useradd -m -g 组 新建用户名 添加新用户 -m 自动建立用户家目录;-g 指定用户所在组
passwd 用户名 设置用户密码 普通用户直接用 passwd 修改自己的密码
userdel -r 用户名 删除用户 -r 选项自动删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息 用户信息保存在 /etc/passwd 文件中

提示

  • 创建用户时如果忘记加 -m 选项,最简单的方法是删除用户重新创建
  • 创建用户时默认会创建一个和用户名同名的组
  • 用户信息保存在 /etc/passwd 文件中

查看用户信息

命令 作用
id [用户名] 查看用户 UID 和 GID 信息
who 查看当前所有登录的用户列表
whoami 查看当前登录用户的账户名

passwd 文件

/etc/passwd 文件存放用户信息,由 7 个字段组成:

  1. 用户名
  2. 密码(x,表示加密的密码)
  3. UID(用户标识)
  4. GID(组标识)
  5. 用户全名或本地账号
  6. 家目录
  7. 登录使用的 Shell

usermod 修改用户

usermod 可以设置用户的主组、附加组和登录 Shell。

1
2
3
4
5
6
7
8
# 修改用户的主组
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登录 Shell
usermod -s /bin/bash 用户名

注意:默认使用 useradd 添加的用户没有权限使用 sudo,可以用以下命令将用户添加到 sudo 附加组:

1
usermod -G sudo 用户名

which 查看命令位置

which 命令可以查看执行命令所在的位置:

1
2
3
$ which ls
# 输出
# /bin/ls

cd 命令是内置在系统内核中的,没有独立文件,因此用 which 无法找到它。

切换用户

命令 作用
su - 用户名 切换用户,并且切换目录
exit 退出当前登录账户

su 不接用户名可以切换到 root,但不推荐,因为不安全。

修改文件权限

命令 作用
chown 修改拥有者
chgrp 修改组
chmod 修改权限

命令格式:

1
2
3
4
5
6
7
8
# 修改文件/目录的拥有者
chown 用户名 文件名|目录名

# 递归修改文件/目录的组
chgrp -R 组名 文件名|目录名

# 递归修改文件权限
chmod -R 755 文件名|目录名

chmod 数字表示法

chmod 设置权限时,可以用三个数字分别对应拥有者、组和其他用户的权限。每个数字是 r(4)、w(2)、x(1) 的和。

常见数字组合(u 表示用户,g 表示组,o 表示其他):

  • 777 ===> u=rwx, g=rwx, o=rwx(所有人完全权限)
  • 755 ===> u=rwx, g=rx, o=rx(拥有者可读写执行,其他人只读执行)
  • 644 ===> u=rw, g=r, o=r(拥有者可读写,其他人只读)

理解权限数字

比如 755:第一个 7 是拥有者权限(4+2+1=7,即 rwx),第二个 5 是组权限(4+1=5,即 rx),第三个 5 是其他用户权限(rx)。这是最常见的文件权限设置。

chmod 符号表示法

也可以直接用符号修改:

1
chmod +/-rwx 文件名|目录名

这种方式会一次性修改拥有者、组权限,但不能精确到某个对象。

小结

这一篇我们学习了用户、组和权限管理。下一篇学习系统信息查看命令。

上一篇:远程管理与 SSH

下一篇:系统信息与进程管理