如何修改服务器管理员账号名和密码(1)

发布于:2025-05-19 ⋅ 阅读:(20) ⋅ 点赞:(0)

命令解析sudo useradd -m -s /bin/bash 新用户名

1. sudo

作用:以超级用户(root)权限执行命令
为什么需要:创建用户需要修改系统文件(/etc/passwd, /etc/shadow等),普通用户没有这个权限
替代方案:如果已经是root用户,可以不加sudo

2. useradd

作用:Linux系统添加用户的核心命令
相关命令:
adduser:某些发行版(如Debian)提供的更友好的交互式工具
newusers:批量创建用户的工具

3. -m 选项

全称:–create-home
作用:为用户创建家目录(home directory)
目录位置:通常在/home/用户名
包含的文件:会从/etc/skel目录复制默认配置文件(bashrc、profile等)
如果不加:用户将没有家目录,登录后可能遇到问题

4. -s /bin/bash 选项

全称:–shell
作用:指定用户的默认登录shell
/bin/bash:Bourne-Again Shell,功能最丰富的常用shell
其他常见shell:
/bin/sh:Bourne Shell,更轻量
/bin/zsh:Z Shell,功能更强大
/sbin/nologin:禁止登录的shell(常用于系统账户)

5. 新用户名

命名规则:
通常小写字母开头
可以包含数字和下划线
长度一般不超过32字符
避免使用特殊字符和空格
系统保留名:避免使用root、daemon、bin等系统保留名称

命令执行后的系统变化
/etc/passwd:添加一行用户记录
新用户名❌UID:GID:用户描述:/home/新用户名:/bin/bash
/etc/shadow:创建密码记录(初始无密码)
/etc/group:创建与用户名相同的私有组
文件系统:创建/home/新用户名目录
完整用户创建流程示例

1. 创建用户

sudo useradd -m -s /bin/bash john

2. 设置密码(会提示输入两次)

sudo passwd john

谨慎操作!!!!!!

3. 可选:将用户加入sudo组(授予管理员权限)

sudo usermod -aG sudo john

4. 验证用户

id john

应显示类似: uid=1001(john) gid=1001(john) groups=1001(john),27(sudo)

5. 常见问题解决

(1)用户已存在错误:

useradd: user 'john' already exists

解决方案:先删除旧用户sudo userdel -r john,或选择其他用户名

(2)家目录未创建:
检查是否遗漏了-m选项,可以手动创建:
sudo mkdir /home/john
sudo cp -r /etc/skel/. /home/john
sudo chown -R john:john /home/john
(3)shell不可用:
确保指定的shell存在于/etc/shells文件中

6. 安全建议

创建用户后立即设置强密码
对于不需要登录的账户(如服务账户),使用-s /sbin/nologin
定期审查用户列表cat /etc/passwd
考虑使用-u选项明确指定用户ID,避免自动分配冲突
这条命令是Linux系统管理中最基础也是最重要的命令之一,掌握它可以有效管理系统用户权限。

命令解析sudo usermod -aG sudo 新用户名

1. usermod

全称:user modify(用户修改)
功能:修改现有用户账户属性
相关命令:
useradd:创建新用户
userdel:删除用户
passwd:修改密码

2. -aG 选项组合

-a (append):
保持用户现有的所属组不变
只追加新的组关系
如果不加此选项,用户会被移出其他所有次要组
-G (groups):
指定要修改的附加组(secondary groups)
可以同时指定多个组,用逗号分隔

3. sudo

目标组名:通常指管理员权限组
不同发行版差异:
Ubuntu/Debian:sudo组
RHEL/CentOS:wheel组
其他发行版可能使用admin或operators

4. 新用户名

要求:必须是已存在的用户账户
验证方法:id 新用户名 或 grep 新用户名 /etc/passwd

5. 命令执行效果

(1)/etc/group文件修改:
sudo❌27:user1,user2,新用户名
在sudo组的用户列表末尾追加新用户名
(2)用户权限变化:
获得使用sudo命令的权限
可以执行需要root权限的操作
(3)立即生效:
修改后不需要重启或重新登录即可使用新权限

完整示例流程

1. 创建用户(如果不存在)

sudo useradd -m -s /bin/bash testuser

2. 授予sudo权限

sudo usermod -aG sudo testuser

3. 验证权限

sudo -l -U testuser
#应显示:User testuser may run the following commands on this host:
#   (ALL : ALL) ALL

4. 检查组成员

groups testuser
# 应显示:testuser : testuser sudo

5. 常见问题解决

(1)"group ‘sudo’ does not exist"错误:
CentOS/RHEL系统应使用wheel组:
sudo usermod -aG wheel 新用户名
或者创建sudo组:sudo groupadd sudo
(2)权限不生效:
检查/etc/sudoers文件是否允许该组:
sudo grep '%sudo' /etc/sudoers
应有类似:%sudo ALL=(ALL:ALL) ALL
(3)误移除其他组:
确保使用了-a选项,否则用户会被移出其他所有次要组

6. 安全最佳实践

(1)最小权限原则:只给真正需要管理员权限的用户sudo权限
(2)定期审计:检查sudo权限用户列表:grep '^%sudo' /etc/group
(3)使用visudo:修改sudoers文件时永远使用:sudo visudo而不是直接编辑/etc/sudoers
(4)限制sudo权限:可以为特定用户限制可执行的命令:
新用户名 ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl
这条命令是Linux系统管理中赋予用户管理员权限的标准方法,正确使用可以既保证系统安全又提供必要的管理灵活性。

[root@localhost home]# ls
user  wulu1  XAlab_F16_1
[root@localhost home]# cd XAlab_F16_1/
[root@localhost XAlab_F16_1]# ls
[root@localhost XAlab_F16_1]# cd ../
[root@localhost home]# ls
user  wulu1  XAlab_F16_1
[root@localhost home]# rm -rf XAlab_F16_1/
[root@localhost home]# ls
user  wulu1
[root@localhost home]# sudo whoami
root
[root@localhost home]# cd ~
[root@localhost ~]# visudo
visudo: /etc/sudoers.tmp 未更改

只有root用户可以访问home目录下的所有文件夹

[root@localhost ~]# sudo useradd -m -s /bin/bash yhm #添加用户
[root@localhost ~]# sudo passwd yhm
更改用户 yhm 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 不包括足够不同的字符
重新输入新的 密码:
抱歉,密码不匹配。
passwd: 鉴定令牌操作错误
[root@localhost ~]# sudo passwd yhm
更改用户 yhm 的密码 。
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
passwd: 鉴定令牌操作错误
[root@localhost ~]# sudo passwd yhm
更改用户 yhm 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 它基于一个字典中的词
重新输入新的 密码:
[root@localhost ~]# sudo whoami
root
[root@localhost ~]# sudo passwd yhm
更改用户 yhm 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# sudo whoami
root
[root@localhost ~]# sudo useradd -m -s /bin/bash XAlab_F16_1
useradd:用户“XAlab_F16_1”已存在
[root@localhost ~]# sudo passwd XAlab_F16_1
更改用户 XAlab_F16_1 的密码 。
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
passwd: 鉴定令牌操作错误
[root@localhost ~]# sudo passwd XAlab_F16_1
更改用户 XAlab_F16_1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# sudo usermod -aG sudo XAlab_F16_1
usermod:“sudo”组不存在
[root@localhost ~]# sudo usermod -aG sudo yhm
usermod:“sudo”组不存在
[root@localhost ~]# sudo visudo
visudo: /etc/sudoers.tmp 未更改
[root@localhost ~]# sudo usermod -aG sudo XAlab_F16_1
usermod:“sudo”组不存在
[root@localhost ~]# lsb_release -a
bash: lsb_release: 未找到命令...
安装软件包“redhat-lsb-core”以提供命令“lsb_release”? [N/y] y


 * 正在队列中等待... 
下列软件包必须安装:
 mailx-12.5-29.el8.x86_64	Enhanced implementation of the mailx command
 ncurses-compat-libs-6.1-10.20180224.el8.x86_64	Ncurses compatibility libraries
 redhat-lsb-core-4.1-47.el8.x86_64	LSB Core module support
 redhat-lsb-submod-security-4.1-47.el8.x86_64	LSB Security submodule support
 spax-1.5.3-13.el8.x86_64	Portable archive exchange
下列软件包必须更新:
 ncurses-6.1-10.20180224.el8.x86_64	Ncurses support utilities
 ncurses-base-6.1-10.20180224.el8.noarch	Descriptions of common terminals
 ncurses-libs-6.1-10.20180224.el8.x86_64	Ncurses libraries
继续更改? [N/y] y


 * 正在队列中等待... 
 * 正在等待认证... 
 * 正在队列中等待... 
 * 正在下载软件包... 
 * 正在请求数据... 
 * 正在测试更改... 
 * 正在安装更新... 
 * 正在安装软件包... 
 * 正在安装更新... 
 * 正在安装软件包... 
 * 正在安装更新... 
 * 正在清理软件包... 
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Rocky
Description:	Rocky Linux release 8.7 (Green Obsidian)
Release:	8.7
Codename:	GreenObsidian
[root@localhost ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Rocky
Description:	Rocky Linux release 8.7 (Green Obsidian)
Release:	8.7
Codename:	GreenObsidian
[root@localhost ~]# sudo usermod -l yhm XAlab_F16_1
usermod:用户“yhm”已存在
[root@localhost ~]# sudo usermod -l XAlab_F16_1 yhm
usermod:用户“XAlab_F16_1”已存在
[root@localhost ~]# sudo userdel -r XAlab_F16_1
userdel:未找到 XAlab_F16_1 的主目录“/home/XAlab_F16_1”
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
usermod: user user is currently used by process 9912
[root@localhost ~]# [root@localhost ~]# sudo usermod -l XAlab_F16_1 user
bash: [root@localhost: 未找到命令...
[root@localhost ~]# usermod: user user is currently used by process 9912
bash: usermod:: 未找到命令...
相似命令是: 'usermod'
[root@localhost ~]# [root@localhost ~]# sudo pkill -u user
bash: [root@localhost: 未找到命令...
[root@localhost ~]# [root@localhost ~]# sudo pkill -9 -u user
bash: [root@localhost: 未找到命令...
[root@localhost ~]# ps -u user
    PID TTY          TIME CMD
   9912 ?        00:00:01 systemd
   9916 ?        00:00:00 (sd-pam)
   9932 ?        00:00:00 pulseaudio
   9937 ?        00:00:00 gnome-keyring-d
   9946 tty2     00:00:00 gdm-x-session
   9977 ?        00:00:32 dbus-daemon
  10033 tty2     00:00:02 gnome-session-b
  10133 ?        00:00:00 at-spi-bus-laun
  10138 ?        00:00:00 dbus-daemon
  10141 ?        00:00:00 at-spi2-registr
  10224 tty2     00:29:03 gnome-shell
  10263 ?        00:00:00 gvfsd
  10268 ?        00:00:00 gvfsd-fuse
  10285 tty2     00:00:33 ibus-daemon
  10289 tty2     00:00:00 ibus-dconf
  10290 tty2     00:00:00 ibus-extension-
  10292 tty2     00:00:00 ibus-x11
  10295 ?        00:00:00 ibus-portal
  10299 ?        00:00:00 xdg-permission-
  10312 ?        00:00:00 gnome-shell-cal
  10317 ?        00:00:00 evolution-sourc
  10324 ?        00:00:30 goa-daemon
  10336 ?        00:00:00 gvfs-udisks2-vo
  10345 ?        00:00:00 gvfs-mtp-volume
  10349 ?        00:00:00 gvfs-gphoto2-vo
  10353 ?        00:00:00 gvfs-goa-volume
  10361 ?        00:02:25 goa-identity-se
  10368 ?        00:00:00 gvfs-afc-volume
  10381 tty2     00:00:25 gsd-power
  10383 tty2     00:00:00 gsd-print-notif
  10384 tty2     00:00:11 gsd-rfkill
  10385 tty2     00:00:00 gsd-screensaver
  10386 tty2     00:00:40 gsd-sharing
  10388 tty2     00:00:00 gsd-sound
  10395 tty2     00:00:00 gsd-xsettings
  10396 tty2     00:00:00 gsd-wacom
  10398 tty2     00:02:00 gsd-smartcard
  10401 tty2     00:00:02 gsd-account
  10415 tty2     00:00:00 gsd-a11y-settin
  10416 tty2     00:00:00 gsd-clipboard
  10417 tty2     00:00:22 gsd-color
  10421 tty2     00:00:00 gsd-datetime
  10424 tty2     00:01:25 gsd-housekeepin
  10426 tty2     00:00:00 gsd-keyboard
  10429 tty2     00:00:00 gsd-media-keys
  10431 ?        00:00:00 evolution-calen
  10434 tty2     00:00:00 gsd-mouse
  10479 tty2     00:00:00 gsd-disk-utilit
  10484 tty2     01:57:19 gnome-software
  10495 ?        00:00:00 tracker-store
  10509 tty2     00:00:00 ibus-engine-sim
  10516 tty2     00:00:00 tracker-miner-a
  10522 tty2     00:00:00 tracker-miner-f
  10546 ?        00:00:32 evolution-calen
  10583 ?        00:00:31 dconf-service
  10588 ?        00:00:00 evolution-addre
  10607 ?        00:00:33 evolution-addre
  10634 tty2     00:00:00 gsd-printer
  10829 tty2     00:00:00 ibus-engine-lib
  11288 ?        00:00:00 gvfsd-metadata
  11432 ?        00:01:28 xdg-desktop-por
  11436 ?        00:00:00 xdg-document-po
  11445 ?        00:00:03 xdg-desktop-por
  11456 ?        00:00:00 pipewire
  11458 ?        00:00:00 pipewire-media-
3418164 ?        00:00:00 sshd
3418176 pts/1    00:00:00 bash
3418244 ?        00:00:00 dbus-daemon
3418247 ?        00:00:00 dbus-kill-proce
3418253 ?        00:00:00 gio
3418262 ?        00:00:00 gvfsd
3425019 ?        00:00:00 sshd
3425031 pts/3    00:00:00 bash
3425104 ?        00:00:00 dbus-daemon
3425107 ?        00:00:00 dbus-kill-proce
3425114 ?        00:00:00 gio
3425122 ?        00:00:00 gvfsd
[root@localhost ~]# sudo kill -9 9912
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
usermod: user user is currently used by process 3418164
[root@localhost ~]# sudo kill -9 3418164
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(翔安) at 17:50:17.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.26.248.239:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu May 15 05:35:32 2025 from 10.26.255.81
(base) [user@localhost ~]$ su -
密码:
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
usermod: user user is currently used by process 3425019
[root@localhost ~]# sudo pkill -u user
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(翔安) at 17:53:38.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 
Connecting to 10.26.248.239:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu May 15 05:51:17 2025 from 10.26.255.81
(base) [user@localhost ~]$ sudo pkill -u user
[sudo] user 的密码:
user 不在 sudoers 文件中。此事将被报告。
(base) [user@localhost ~]$ su -
密码:
[root@localhost ~]# sudo pkill -u user
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(翔安) at 18:41:52.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 
Connecting to 10.26.248.239:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu May 15 06:40:01 2025 from 10.26.255.81
(base) [user@localhost ~]$ su -
密码:
su: 鉴定故障
(base) [user@localhost ~]$ su -
密码:
[root@localhost ~]# nohup sudo pkill -u user &
[1] 3469106
[root@localhost ~]# nohup: 忽略输入并把输出追加到'nohup.out'
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(翔安) at 18:46:13.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.26.248.239:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu May 15 06:42:30 2025 from 10.26.255.81
(base) [user@localhost ~]$ who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
user     pts/1        2025-05-15 06:46 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
(base) [user@localhost ~]$ su -
密码:
[root@localhost ~]# who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
user     pts/1        2025-05-15 06:46 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
[root@localhost ~]# sudo pkill -u user
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(翔安) at 18:48:56.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ ssh root@10.26.248.239

Connecting to 10.26.248.239:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu May 15 06:48:04 2025
/usr/bin/xauth:  file /root/.Xauthority does not exist
[root@localhost ~]# sudo pkill -u user
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
usermod: user user is currently used by process 3469143
[root@localhost ~]# sudo pkill -u user
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
usermod: user user is currently used by process 3469143
[root@localhost ~]# sudo kill -9 3469143
[root@localhost ~]# sudo usermod -l XAlab_F16_1 user
[root@localhost ~]# who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
root     pts/1        2025-05-15 06:49 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
[root@localhost ~]# sudo passwd XAlab_F16_1
更改用户 XAlab_F16_1 的密码 。
新的 密码:
重新输入新的 密码:
抱歉,密码不匹配。
passwd: 鉴定令牌操作错误
[root@localhost ~]# sudo passwd XAlab_F16_1
更改用户 XAlab_F16_1 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
root     pts/1        2025-05-15 06:49 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
[root@localhost ~]# who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
root     pts/1        2025-05-15 06:49 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
XAlab_F16_1 pts/3        2025-05-15 07:05 (10.26.255.81)
XAlab_F16_1 pts/4        2025-05-15 07:20 (10.26.255.81)
[root@localhost ~]# who
wulu1    pts/0        2025-05-15 03:47 (10.26.248.44)
root     pts/1        2025-05-15 06:49 (10.26.255.81)
yhm      pts/2        2025-05-15 05:24 (10.26.255.81)
XAlab_F16_1 pts/3        2025-05-15 07:05 (10.26.255.81)
XAlab_F16_1 pts/4        2025-05-15 07:20 (10.26.255.81)
[root@localhost ~]# sudo visudo
visudo: /etc/sudoers.tmp 未更改
[root@localhost ~]# 


网站公告

今日签到

点亮在社区的每一天
去签到