用户管理:命令 adduser
, usermod
, passwd
1. 为什么理解用户管理很重要?
今天我们深入探讨用户管理,因为这是 Linux 管理的重要部分。创建用户,为他们设置环境并管理密码 —— 这些都将成为你工作中的重要工具。开始吧!
通常在 Linux 上的服务器会有很多用户。系统会为每个用户提供特定的权限,以保护数据并避免混乱。你需要知道如何添加新用户(例如团队中的开发者)、设置他们的环境(例如更改 shell),并在必要时限制访问。
2. 使用 adduser
创建用户
Linux 提供了一个命令 adduser
,它是命令 useradd
的友好变体。这个命令让你可以轻松快捷地创建新用户:
基本语法
adduser 用户名
创建用户时会发生什么?
- 在文件
/etc/passwd
中为用户创建一个新记录。 - 生成一个主目录(例如
/home/用户名
)。 - 设置基础参数(例如默认 shell)。
- 系统会要求你输入密码和其他信息(例如姓名、电话号码——这些信息是可选的)。
示例
让我们创建一个新用户 dev_user
:
sudo adduser dev_user
输入这个命令后,系统会提示你:
- 为用户设置密码。
- 输入其他信息,可以直接按
Enter
跳过。
验证
为了确保用户已创建,可以查看文件 /etc/passwd
:
cat /etc/passwd | grep dev_user
你会看到包含用户 dev_user
信息的行。
3. 使用 usermod
配置用户
当用户已经被创建时,可能需要更改其参数。例如,更改用户名,指定其他的 shell 或添加到某个组。
更改用户名
首先确保用户没有登录系统。然后执行以下命令:
sudo usermod -l 新用户名 旧用户名
示例:
sudo usermod -l developer dev_user
现在用户 dev_user
将被重命名为 developer
。不过他的主目录暂时还没有改变。
更改默认 shell
假设你需要把用户的 shell 改为 /bin/zsh
。可以执行以下命令:
sudo usermod --shell /bin/zsh developer
用以下命令检查 shell 是否已经更改:
cat /etc/passwd | grep developer
更改主目录
如果你希望新的用户在另一个主目录工作,请执行以下操作:
sudo usermod -d /新路径 developer
如果目录还不存在,请使用选项 -m
,以便创建目录并将旧目录的内容移动过去:
sudo usermod -d /home/new_developer -m developer
4. 使用passwd
管理密码
设置和更改密码
要设置(或更改)用户密码,可以使用命令:
sudo passwd 用户名
例如:
sudo passwd developer
系统会要求你输入新密码两次,以确保你没有输错。
强制用户下次登录时更改密码
如果你创建了用户并希望他们首次登录时自己设置密码,这种方法就很有用了:
sudo passwd -e developer
之后,用户developer
登录系统时,会看到需要更改密码的提示。
5. 实践
任务 1: 创建一个新用户
添加用户
tester
:sudo adduser tester
确认用户已经创建:
cat /etc/passwd | grep tester
任务 2: 配置用户参数
更改用户名:
sudo usermod -l test_user tester
更改用户主目录:
sudo usermod -d /home/test_user -m test_user
确认修改已生效:
ls -l /home/
修改用户的 shell:
sudo usermod --shell /bin/zsh test_user
检查更新后的用户数据:
cat /etc/passwd | grep test_user
任务 3: 为用户设置新密码
为用户设置密码:
sudo passwd test_user
强制用户下次登录时更改密码:
sudo passwd -e test_user
6. 认识 Linux 中的管道符 |
管道符 |
是 Unix/Linux 中的一种机制,用来将一个命令的输出 (stdout) 作为另一个命令的输入 (stdin)。这是一个非常强大的工具,可以通过"流水线"方式,将多个命令结合起来处理数据。
它是怎么工作的?
当你在命令之间使用管道符时,Linux 会将第一个命令的标准输出传递到下一个命令的标准输入。这种方式可以高效处理大量数据而无需使用临时文件。
语法:
命令1 | 命令2 | 命令3
命令1
生成数据。命令2
处理接收到的数据。命令3
执行进一步处理或保存结果。
案例:
显示文件列表并按模式过滤:
ls -l | grep ".txt"
这里 ls -l
显示文件列表,grep
只筛选扩展名为 .txt
的文件。
统计包含特定单词的行数:
cat file.txt | grep "Linux" | wc -l
依次显示文件内容,查找包含"Linux"的行,然后统计这些行的数量。
管道符的优点:
- 简化复杂操作。
- 减少临时文件的使用。
- 可以结合 Linux 的强大工具来实现任务自动化。
7. 初识Linux中的grep
grep
(Global Regular Expression Print) 是一个Unix/Linux中的命令行工具,用于在文件中搜索符合指定模式的行。由于支持正则表达式和灵活的设置,它被广泛用于筛选和查找数据。
grep
是怎么工作的?
grep
接收一个文本文件(或标准输入)作为输入,搜索符合所指定模式的行,然后输出这些行。- 如果没有找到符合的模式,命令不会输出任何东西。
例子
列出文件并根据模式筛选:
ls -l | grep ".txt"
- 首先执行命令
ls -l
,它会列出当前目录下的文件列表。 - 第一个命令
ls
的输出通过管道|
作为第二个命令grep
的输入。 - 第二个命令筛选传递给它的行,并仅输出包含“.txt”的行。
统计包含特定单词的行:
cat file.txt | grep "Linux" | wc -l
- 首先执行命令
cat file.txt
,它会在屏幕上输出file.txt文件的内容。 - 第一个命令
cat
的输出通过管道|
作为第二个命令grep
的输入。 - 第二个命令筛选传递给它的行,并仅输出包含Linux的行。
- 然后第二个命令
grep
的输出通过管道|
作为第三个命令wc
的输入。 - 第三个命令统计传递给它的行数并显示。
8. 常见错误和注意事项
更改用户名时出现 "user is currently logged in" 错误。 如果用户已登录到系统,你不能更改他的用户名。确保用户已退出。
更改主目录时的错误。 如果忘记指定
-m
,旧目录的内容将不会转移到新目录。用户可能会丢失数据。忘记为用户设置密码。 在通过
adduser
创建用户后,一定要检查该用户是否设置了密码。没有密码,他将无法登录。UID
和GID
的值。 有时管理员想在创建用户时指定UID
(用户标识符)和GID
(组标识符)。可以使用命令useradd
来完成,但这是更深入学习 Linux 的主题。
9. 实际应用
想象一下:你是公司服务器的管理员。开发人员来找你,他们每个人都需要系统访问权,并要求个性化设置。你会能够:
- 创建用户并分配他们所需的访问权限。
- 根据他们的偏好配置环境(例如,shell)。
- 管理密码并保障安全性。
这些命令在你面试 DevOps 或系统管理员职位时也会派上用场。可能会问到如何创建和配置用户,或者让你实际完成这个任务。
备忘单: 基本命令
命令 | 描述 |
---|---|
sudo adduser 用户名 |
创建新用户。 |
sudo usermod -l 新旧 |
修改用户名。 |
sudo usermod --shell 路径 名称 |
设置默认 shell。 |
sudo usermod -d 路径 名称 |
修改主目录。 |
sudo passwd 名称 |
设置新密码。 |
sudo passwd -e 名称 |
强制下次登录更改密码。 |
多多练习!Linux 总是需要动手操作。你尝试命令越多,处理真实系统就越轻松。
GO TO FULL VERSION