Linux更改或重命名用户名和UID

时间:2020-01-09 10:40:03  来源:igfitidea点击:

如何使用命令行工具在Linux操作系统下更改用户名(重命名用户名)或UID?
如何在Linux中更改或重命名用户名?
您需要在Linux操作系统下使用usermod命令更改用户名。
此命令修改系统帐户文件以反映在命令行上指定的更改。
请勿手动或使用文本编辑器(例如vi)编辑/etc/passwd文件。
本教程说明如何使用usermod命令在Linux中更改或重命名用户名。

Linux更改或重命名用户命令语法

通过用户名重命名的语法如下:usermod -l login-name old-name

  • 我们在Linux中使用usermod命令重命名用户帐户。用户名将从旧名更改为login_name。什么都没改变。特别是,用户的主目录名称可能应该更改为反映新的登录名。

用UID(用户ID)重命名的语法如下:usermod -u UID用户名

  • 用户ID(UID)的数值。除非使用-o选项,否则该值必须唯一。该值必须为非负数。通常为系统帐户保留0到99之间的值。用户拥有并位于用户主目录根目录树中的所有文件都会自动更改文件用户ID。用户主目录之外的文件必须手动更改。

列出Linux系统中的所有用户

执行以下cat命令:

cat /etc/passwd

可以使用grep命令仅过滤出用户名:

grep -w '^username' /etc/passwd
grep -w '^jerry' /etc/passwd

另一种选择是使用cut命令:

cut -d: -f1 /etc/passwd

输出示例:

daemon
bin
sys
sync
games
man
lp
mail

如何在Linux中更改或重命名用户名和UID

让我们看看如何重命名用户登录名。
首先,请确保没有将用户名登录到服务器中,并且其他任何进程都未使用该用户名运行。
我还建议您在更改用户名之前备份所有数据或服务器文件。

查看名为tom的用户的当前用户和组成员身份

首先使用id命令获取用户身份:

id tom

接下来,使用grep命令从/etc/passwd文件中获取有关名为tom的用户的登录信息。

grep '^tom:' /etc/passwd

使用groups命令查看有关名为tom的用户的组信息:

grep 'tom' /etc/group
groups tom

查找名为tom的用户的主目录权限,运行以下ls命令:

ls -ld /home/tom/

最后,使用ps命令查看用户和名为tom的组所拥有的所有Linux进程:

ps aux | grep tom
ps -u tom

在基于Linux的系统上获取有关名为tom的用户的信息

在Linux上将用户名从tom重命名并更改为jerry

执行usermod命令,如下所示:

# id tom
# usermod -l jerry tom
## Verify ###
# id tom
# id jerry
# ls -ld /home/tom

关于运行过程的说明

如果tom登录并正在运行作业,您可能会看到以下错误:

# usermod -l jerry tom
`usermod: user tom is currently used by process 6886`

您需要杀死用户tom拥有的所有Linux进程,并强制将其注销到系统之外:

# pkill -u tom pid
# pkill -9 -u tom
# usermod -l jerry tom

重命名主组名并将其从tom更改为jerry

执行usermod命令,如下所示:

# id tom
# groupmod -n jerry tom
## Verify it ###
# id tom
# ls -ld /home/tom

如何将用户主目录从/home/tom /更改为/home/jerry

语法如下:

# usermod -d /home/jerry -m jerry
# id jerry
# ls -ld /home/jerry

输出示例:

uid=1001(jerry) gid=1001(jerry) groups=1001(jerry)
drwxr-xr-x 2 jerry jerry 4096 Apr 21 15:53 /home/jerry/

如何将用户tom UID从5001更改为10000

执行usermod命令,如下所示:

# id tom
# usermod -u 10000 tom
# id tom

获取有关usermod命令的帮助

您可以将--help选项传递给usermod命令。
例如,在Linux中的shell提示符下执行以下命令:

usermod --help
选项描述
-c--comment注释GECOS字段的新值
-d--homeHOME_DIR用户帐户的新主目录
-e--expiredateEXPIRE_DATE将帐户的到期日期设置为EXPIRE_DATE
-f--inactiveINACTIVE将密码过期后设置为INACTIVE
-g--gid组将GROUP用作新的主组
-G--groups组新的补充GROUPS列表
-a--append将用户添加到-G选项提到的补充GROUPS上,而不会从其他组中删除用户
-h--help显示此帮助消息并退出
-l--loginNEW_LOGIN登录名的新值
-L--lock锁定用户帐户
-m--move-home将主目录的内容移动到新位置(仅与-d一起使用)
-o--non-unique允许使用重复的(非唯一)UID
-p--password密码对新密码使用加密的密码
-R--rootCHROOT_DIR目录chroot进入
-P--prefixPREFIX_DIR前缀目录,位于/etc/*文件
-s--shell为用户帐户设置新的登录shell
-u--uidUID用户帐户的新UID
-U--unlock解锁用户帐户
-v--add-subuidsFIRST-LAST添加下级uids的范围
-V--del-subuidsFIRST-LAST删除下级uid的范围
-w--add-subgidsFIRST-LAST添加下级对象的范围
-W--del-subgidsFIRST-LAST删除下级对象的范围
-Z--selinux-userSEUSER用户帐户的新SELinux用户映射