如何在 CentOS 7/8/9 中创建新的用户帐户
CentOS Linux 用户帐户旨在为各种应用程序和系统的其他用户提供安全屏障。例如,Apache 或 Nginx 服务器以 www-data 用户身份运行。网站管理员可以使用另一个名为 ftp 的用户上传文件。通过将它们分开,您可以提高系统的安全性。本页介绍如何在 CentOS Linux 7/8 服务器上创建、修改和删除用户帐户。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | CentOS 7/8/9 |
类别 | 用户管理 |
操作系统兼容性 | Alma • RHEL • Rocky • Stream |
预计阅读时间 | 9 分钟 |
在 CentOS Linux 7/8/9 中创建新的用户帐户
在 CentOS Linux 上创建新用户帐户的步骤如下:
- 用于useradd command在 CentOS 7 或 8 或 9 上添加新用户帐户。
- 运行passwd command设置或更改用户密码。
- 在 CentOS 中输入 来删除用户帐户userdel command。
- 修改用户帐户使用usermod command。
- 要查看用户帐户信息,请使用id command。
重要文件
上述命令修改以下文件来创建或删除用户账户:
请勿使用 vim 或 nano 等文本编辑器修改以下文件,以避免配置错误。
- /etc/passwd – 密码文件为每个用户帐户包含一行。
- /etc/shadow – 系统账户的加密格式的密码和可选的老化(密码到期日期)信息。
- /etc/group – 用户组信息。
让我们详细了解所有命令和示例。
显示所有 Linux 用户账户列表
/etc/passwd文件为每个用户帐户包含一行,其中有七个字段以冒号分隔。输入cat 命令列出用户:
$ cat /etc/passwd
如何在 Linux 中列出用户
$ id
$ id userNameHere
$ id root
$ id vivek
uid=1000(vivek) gid=1000(vivek) groups=1000(vivek),4(adm),24(cdrom),27(sudo)
最后,使用 ls 命令查看名为 /etc/hosts 的文件的所有者和组:
运行 ps 命令/top 命令查看进程的所有者:输出:
$ ls -l /path/to/file
$ ls -l /home/vivek/Documents/resume.pdf
$ ls -l /etc/hosts
$ ps
$ top
$ htop
$ top -u vivek
$ ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND gdm 1732 0.0 0.0 163872 6516 tty1 Ssl+ 12:34 0:00 /usr/lib/gdm3/gdm-x-session gnome-session --autostart /usr/share/gdm/greeter/autostart root 1734 0.0 0.2 253836 86628 tty1 Sl+ 12:34 0:03 /usr/lib/xorg/Xorg vt1 -displayfd 3 -auth /run/user/126/gdm/Xauthority -background none -noreset -keeptty -verbose 3 gdm 1825 0.0 0.0 263512 14224 tty1 Sl+ 12:34 0:00 /usr/lib/gnome-session/gnome-session-binary --systemd --autostart /usr/share/gdm/greeter/autostart vivek 2128 0.0 0.0 163872 6468 tty2 Ssl+ 12:35 0:00 /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu /usr/bin/gnome-session --systemd --session=ubuntu root 2130 1.5 0.4 307212 138348 tty2 Sl+ 12:35 8:38 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3 vivek 5052 0.0 0.0 19752 12936 pts/1 Ss+ 12:39 0:06 /usr/bin/ssh -oForwardX11 no -oForwardAgent no -oPermitLocalCommand no -oClearAllForwardings yes -oProtocol 2 -oNoHostAuthenticationForLocalhost y vivek 24020 0.0 0.0 11144 5732 pts/4 Ss 21:13 0:00 bash vivek 24961 0.0 0.0 14648 6784 pts/4 S+ 21:17 0:00 ssh aws-ls.laws-v-zone-a-www-001 vivek 24995 0.0 0.0 14672 6896 pts/5 S+ 21:18 0:00 ssh vivek@do-de.public vivek 25204 0.0 0.0 11012 5156 pts/2 Ss 21:20 0:00 bash vivek 25210 0.0 0.1 414796 40568 pts/2 Sl+ 21:20 0:00 gpass
请参阅如何“使用 ps/htop 命令显示 Linux 中所有正在运行的进程”以了解更多信息。
从命令行创建新的 CentOS 用户帐户
语法是:
$ sudo useradd userName
$ sudo useradd [options] userName
示例
创建 vivek 用户帐户,运行:使用id 命令
$ sudo adduser vivek
验证:
或者使用grep 命令,如下所示:
最后,通过键入以下 passwd 命令设置或更改 vivek 用户的密码:
已创建新用户帐户。 接下来,通过使用 ssh 命令登录进行验证:
$ id vivek
$ grep -w '^vivek' /etc/passwd
$ grep -w '^vivek' /etc/group
$ sudo passwd vivek
$ ssh vivek@your-centos-8-server-ip
在 CentOS Linux 7/8 中删除用户帐户
语法是:
选项删除给定用户帐户的主目录和邮件池。因此,如果您需要用户数据,请进行备份。让我们删除 vivek 用户及其所有个人数据:
验证用户 vivek 是否已从 CentOS 服务器成功删除:
$ sudo userdel {userName}
$ sudo userdel -r {UserName}
-r
$ sudo userdel -r vivek
$ id vivek
$ grep -w '^vivek' /etc/passwd
$ grep -w '^vivek' /etc/group
先进示例
让我们创建一个名为 www-files 的新帐户,如下所示:
其中,
$ sudo useradd -d /home/www-files -m \
-c "Nginx file and sftp user" \
-s /bin/bash www-files
# Set the password and verify it #
$ sudo passwd www-files
$ id www-files
- -d /home/www-files:新账户的主目录为/home/www-files
- -m:创建用户的主目录
- -c "Nginx file and sftp user":设置新账户的GECOS字段(注释)
- -s /bin/bash:设置新账户的登录shell
- www-files: 登录名/用户名
如何修改用户账户
您需要按如下方式进行 usermod:
$ usermod [options] {username}
请注意,用户帐户必须存在才能使用 usermod。让我们看一些常见示例。
设置 GECOS 字段的新值(注释
$ sudo usermod -c "Vivek Gite" vivek
## verification ##
$ grep -w 'vivek' /etc/passwd
更新用户帐户的主目录位置
将 /home/vivek 更改为 /home/ftpvivek,运行:
$ sudo usermod -d /home/ftpvivek -m vivek
锁定用户账户
$ sudo usermod -L vivek
$解锁用户账户
$ sudo usermod -U vivek
在 CentOS 上创建 Sudo 用户
wheel 组的所有成员都具有 sudo 访问权限。因此,您所要做的就是将用户帐户附加到 wheel 组,如下所示:
接下来,以 vivek 用户身份登录并测试 sudo 访问权限:有关更多信息,
请参阅“ Linux 将用户添加到组”。
$ sudo usermod -aG wheel {username}
##
## add vivek user to wheel group for sudo access ##
##
$ sudo usermod -aG wheel vivek
$ id vivek
{vivek@my-centos8-box:~ }$ sudo ls /root/
{vivek@my-centos8-box:~ }$ sudo -s
{root@my-centos8-box:~ }#
Linux 更改或重命名用户名和 UID (user-id)
$ sudo usermod -l login-name old-name
# rename 'vivekg' user to 'vivek' #
$ sudo usermod -l vivek vivekg
请参阅“如何在 Linux 上更改所有拥有文件的用户和组 ID ”以了解更多信息。
获取帮助
使用 man 命令或传递--help(更多信息请参阅帮助命令)如下:
usermod 命令
跑步:
$ man 8 usermod
$ usermod --help
选项 | 描述 |
---|---|
-c或者--comment | COMMENT GECOS 字段的新值 |
-d或者--home | HOME_DIR 用户账户的新主目录 |
-e或者--expiredate | EXPIRE_DATE 将帐户到期日期设置为 EXPIRE_DATE |
-f或者--inactive | INACTIVE 将密码过期后设置为 INACTIVE |
-g或者--gid | GROUP 强制使用 GROUP 作为新的主要组 |
-G或者--groups | 群组 新的补充群组列表 |
-a或者--append | 将用户附加到 -G 选项提到的补充组,但不将用户从其他组中删除 |
-h或者--help | 显示此帮助消息并退出 |
-l或者--login | NEW_LOGIN 登录名的新值 |
-L或者--lock | 锁定用户账户 |
-m或者--move-home | 将主目录的内容移动到新位置(仅与 -d 一起使用) |
-o或者--non-unique | 允许使用重复的(非唯一)UID |
-p或者--password | PASSWORD 使用加密密码作为新密码 |
-R或者--root | 要 chroot 到的 CHROOT_DIR 目录 |
-P或者--prefix | PREFIX_DIR /etc/* 文件所在的前缀目录 |
-s或者--shell | SHELL 用户账户的新登录 shell |
-u或者--uid | UID 用户账户的新 UID |
-U或者--unlock | 解锁用户账户 |
-v或者--add-subuids | FIRST-LAST 添加下属 uid 的范围 |
-V或者--del-subuids | FIRST-LAST 删除下属 uid 的范围 |
-w或者--add-subgids | FIRST-LAST 添加下属 gid 的范围 |
-W或者--del-subgids | FIRST-LAST 删除下属 gid 范围 |
-Z或者--selinux-user | SEUSER 为用户账户提供新的 SELinux 用户映射 |
passwd 命令
执行:
$ man 8 passwd
$ passwd --help
选项 | 描述 |
---|---|
-k或者--keep-tokens | 保留未过期的身份验证令牌 |
-d或者--delete | 删除指定帐户的密码(仅限 root);如果有密码锁,也删除该密码锁 |
-l或者--lock | 锁定指定账户的密码(仅限 root) |
-u或者--unlock | 解锁指定账户的密码(仅限 root) |
-e或者--expire | 使指定帐户的密码过期(仅限 root) |
-f或者--force | 强制操作 |
-x或者--maximum=DAYS | 最长密码有效期(仅限 root) |
-n或者--minimum=DAYS | 最短密码有效期(仅限 root) |
-w或者--warning=DAYS | 密码过期前警告用户的天数(仅限 root) |
-i或者--inactive=DAYS | 密码过期后多少天帐户会被禁用(仅限 root) |
-S或者--status | 报告指定帐户的密码状态(仅限 root) |
--stdin或者read | 来自 stdin 的新令牌(仅限 root) |
useradd 命令
类型:
$ man 8 useradd
$ useradd --help
选项 | 描述 |
---|---|
-b或者--base-dir | BASE_DIR 新账户主目录的基本目录 |
-c或者--comment | 新帐户的 COMMENT GECOS 字段 |
-d或者--home-dir | HOME_DIR 新帐户的主目录 |
-D或者--defaults | 打印或更改默认的 useradd 配置 |
-e或者--expiredate | EXPIRE_DATE 新帐户的到期日期 |
-f或者--inactive | INACTIVE 新账户密码不活动期限 |
-g或者--gid | 新账户主组的 GROUP 名称或 ID |
-G或者--groups | GROUPS 新账户的补充群组列表 |
-h或者--help | 显示此帮助消息并退出 |
-k或者--skel | SKEL_DIR 使用此替代骨架目录 |
-K或者--key | KEY=VALUE 覆盖 /etc/login.defs 默认值 |
-l或者--no-log-init | 不要将用户添加到 lastlog 和 faillog 数据库 |
-m或者--create-home | 创建用户的主目录 |
-M或者--no-create-home | 不创建用户的主目录 |
-N或者--no-user-group | 不要创建与用户同名的组 |
-o或者--non-unique | 允许创建具有重复(非唯一)UID 的用户 |
-p或者--password | PASSWORD 新账户的加密密码 |
-r或者--system | 创建系统账户 |
-R或者--root | 要 chroot 到的 CHROOT_DIR 目录 |
-P或者--prefix | PREFIX_DIR /etc/* 文件所在的前缀目录 |
-s或者--shell | 新账户的SHELL登录shell |
-u或者--uid | 新账户的UID用户ID |
-U或者--user-group | 创建与用户同名的组 |
-Z或者--selinux-user | SEUSER 使用特定的 SEUSER 进行 SELinux 用户映射 |
结论
您学习了如何在 CentOS Enterprise Linux 7 或 8 上创建新的用户帐户以及修改或删除用户。有关更多信息,请参阅此处的 CentOS/RHEL 8 文档。