CodeGym /课程 /Docker SELF /用户管理:命令 adduser, usermod, passwd

用户管理:命令 adduser, usermod, passwd

Docker SELF
第 2 级 , 课程 1
可用

用户管理:命令 adduser, usermod, passwd

1. 为什么理解用户管理很重要?

今天我们深入探讨用户管理,因为这是 Linux 管理的重要部分。创建用户,为他们设置环境并管理密码 —— 这些都将成为你工作中的重要工具。开始吧!

通常在 Linux 上的服务器会有很多用户。系统会为每个用户提供特定的权限,以保护数据并避免混乱。你需要知道如何添加新用户(例如团队中的开发者)、设置他们的环境(例如更改 shell),并在必要时限制访问。


2. 使用 adduser 创建用户

Linux 提供了一个命令 adduser,它是命令 useradd 的友好变体。这个命令让你可以轻松快捷地创建新用户:

基本语法

adduser 用户名

创建用户时会发生什么?

  1. 在文件 /etc/passwd 中为用户创建一个新记录。
  2. 生成一个主目录(例如 /home/用户名)。
  3. 设置基础参数(例如默认 shell)。
  4. 系统会要求你输入密码和其他信息(例如姓名、电话号码——这些信息是可选的)。

示例

让我们创建一个新用户 dev_user

sudo adduser dev_user

输入这个命令后,系统会提示你:

  1. 为用户设置密码。
  2. 输入其他信息,可以直接按 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: 创建一个新用户

  1. 添加用户 tester:

    sudo adduser tester
    
  2. 确认用户已经创建:

    cat /etc/passwd | grep tester
    

任务 2: 配置用户参数

  1. 更改用户名:

    sudo usermod -l test_user tester
    
  2. 更改用户主目录:

    sudo usermod -d /home/test_user -m test_user
    
  3. 确认修改已生效:

    ls -l /home/
    
  4. 修改用户的 shell:

    sudo usermod --shell /bin/zsh test_user
    
  5. 检查更新后的用户数据:

    cat /etc/passwd | grep test_user
    

任务 3: 为用户设置新密码

  1. 为用户设置密码:

    sudo passwd test_user
    
  2. 强制用户下次登录时更改密码:

    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"
  1. 首先执行命令ls -l,它会列出当前目录下的文件列表。
  2. 第一个命令ls的输出通过管道|作为第二个命令grep的输入。
  3. 第二个命令筛选传递给它的行,并仅输出包含“.txt”的行。

统计包含特定单词的行:

cat file.txt | grep "Linux" | wc -l
  1. 首先执行命令cat file.txt,它会在屏幕上输出file.txt文件的内容。
  2. 第一个命令cat的输出通过管道|作为第二个命令grep的输入。
  3. 第二个命令筛选传递给它的行,并仅输出包含Linux的行。
  4. 然后第二个命令grep的输出通过管道|作为第三个命令wc的输入。
  5. 第三个命令统计传递给它的行数并显示。

8. 常见错误和注意事项

  1. 更改用户名时出现 "user is currently logged in" 错误。 如果用户已登录到系统,你不能更改他的用户名。确保用户已退出。

  2. 更改主目录时的错误。 如果忘记指定 -m,旧目录的内容将不会转移到新目录。用户可能会丢失数据。

  3. 忘记为用户设置密码。 在通过 adduser 创建用户后,一定要检查该用户是否设置了密码。没有密码,他将无法登录。

  4. UIDGID 的值。 有时管理员想在创建用户时指定 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 总是需要动手操作。你尝试命令越多,处理真实系统就越轻松。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION