Skip to content

07. 用户与权限管理

Linux 是多用户系统。文件权限、用户、用户组和 sudo 是服务器管理的基础。

1. 查看当前用户

whoami

bash
whoami

显示当前用户名。

id

bash
id
id alice

显示用户 ID、组 ID 和所属用户组。

常见字段:

字段说明
uid用户 ID
gid主组 ID
groups用户所属组

groups

bash
groups
groups alice

查看用户所属组。

2. 查看登录用户

who

bash
who

显示当前登录系统的用户。

w

bash
w

显示登录用户及其正在运行的命令。

last

bash
last

查看历史登录记录。

3. 用户管理

用户管理通常需要管理员权限。

添加用户:useradd

bash
sudo useradd alice
sudo useradd -m -s /bin/bash alice

常用参数:

参数说明
-m创建 home 目录
-s指定登录 shell
-g指定主组
-G指定附加组

更适合交互式创建用户的命令:

bash
sudo adduser alice

adduser 通常会提示设置密码、用户信息,并自动创建 home 目录。

设置密码:passwd

bash
passwd
sudo passwd alice

说明:

命令说明
passwd修改当前用户密码
sudo passwd alice修改 alice 的密码

删除用户:userdel

bash
sudo userdel alice
sudo userdel -r alice

常用参数:

参数说明
-r同时删除用户 home 目录和邮件目录,慎用

4. 用户组管理

添加组:groupadd

bash
sudo groupadd research

删除组:groupdel

bash
sudo groupdel research

修改用户组:usermod

bash
sudo usermod -aG research alice
sudo usermod -aG sudo alice

常用参数:

参数说明
-aG将用户追加到附加组
-g修改用户主组
-s修改用户 shell
-d修改 home 目录

注意:把用户加入附加组时,应使用 -aG。如果只用 -G,可能覆盖原有附加组。

5. 文件权限基础

使用 ls -l 查看权限:

bash
ls -l file.txt

示例:

text
-rw-r--r-- 1 alice research 1024 Sep 11 10:00 file.txt

含义:

部分说明
-文件类型,d 表示目录
rw-文件所有者权限
r--所属组权限
r--其他用户权限
alice所有者
research所属组

权限字符:

字符对文件对目录
r读取文件内容列出目录内容
w修改文件内容在目录中新建、删除、重命名文件
x执行文件进入目录

6. 修改权限:chmod

符号方式

bash
chmod u+x script.sh
chmod g+w data.txt
chmod o-r secret.txt
chmod a+r public.txt

对象:

符号说明
u所有者
g所属组
o其他用户
a所有人

操作:

符号说明
+增加权限
-移除权限
=设置为指定权限

数字方式

bash
chmod 644 file.txt
chmod 755 script.sh
chmod -R 755 mydir

数字含义:

数字权限
4
2
1执行

常见组合:

权限含义
600只有所有者可读写
644所有者可读写,其他人只读
700只有所有者可读写执行
755所有者可读写执行,其他人可读执行
777所有人可读写执行,通常不推荐

递归修改目录权限:

bash
chmod -R 755 project

-R 会影响目录下所有文件,执行前要确认路径。

7. 修改所有者和所属组

chown

bash
sudo chown alice file.txt
sudo chown alice:research file.txt
sudo chown -R alice:research project

常用参数:

参数说明
用户修改文件所有者
用户:组同时修改所有者和所属组
-R递归修改

chgrp

bash
sudo chgrp research file.txt
sudo chgrp -R research project

用于只修改所属组。

8. sudo 权限

临时以管理员权限运行命令

bash
sudo apt update
sudo systemctl restart ssh

切换到 root shell

bash
sudo -i

退出 root shell:

bash
exit

查看 sudo 权限

bash
sudo -l

9. 特殊权限简介

SUID

让可执行文件以文件所有者身份运行。

bash
chmod u+s file

SGID

对目录设置 SGID 后,新建文件默认继承目录所属组。

bash
chmod g+s shared_dir

共享目录常用:

bash
sudo chgrp research shared_dir
chmod 2775 shared_dir

Sticky Bit

常用于公共可写目录,用户只能删除自己的文件。

bash
chmod +t shared_tmp

/tmp 通常就是 sticky bit 目录。

10. umask

umask 决定新建文件和目录的默认权限。

bash
umask
umask 022
umask 077

常见值:

umask效果
022文件通常为 644,目录通常为 755
077文件通常为 600,目录通常为 700,更私密

11. 权限排查示例

无法执行脚本:

bash
ls -l run.sh
chmod u+x run.sh
./run.sh

无法进入目录:

bash
ls -ld data
chmod u+x data

共享目录让组成员可写:

bash
sudo chgrp -R research project
chmod -R g+rw project
find project -type d -exec chmod g+x {} \;

说明:目录需要 x 权限才能进入。