如何在Linux中更改用户
在Linux中,“更改用户”这个短语可以描述几种不同的操作——有些是临时和基于会话的,有些是永久和系统范围的。由于Linux是一个多用户操作系统,它提供了多种切换身份和权限的方法,具体取决于您想要实现的目标:管理服务器、以有限权限运行应用程序、修复文件访问问题或重组用户帐户。
在Linux中更改“用户”根据上下文可能意味着几种不同的事情:
- 在shell中切换到另一个帐户(例如,从john切换到root)
当您需要以另一个用户的身份进行交互式终端会话时使用——通常用于系统管理或测试某些内容在不同帐户环境下的行为。 - 以另一个用户身份运行单个命令
当您只需要提升权限或不同身份来执行一项任务(如重新启动服务或运行数据库命令)而不完全切换会话时,这是理想的选择。
- 在shell中切换到另一个帐户(例如,从john切换到root)
- 更改服务/进程的默认登录用户
服务(Web服务器、数据库、应用程序)通常应在专用的非root用户下运行以确保安全。更改服务用户会影响进程的运行方式及其可以访问的内容。 - 更改文件和目录的所有者
文件所有权控制访问。如果权限错误——在迁移、恢复或部署后很常见——您可以通过重新分配所有权来“更改用户”,以便正确的帐户可以读取/写入文件。 - 更改用户身份属性(用户名、UID、组)
这属于帐户管理:重命名用户、更改其UID或调整组成员资格(如授予sudo访问权限)。这些更改可能会影响登录、权限和服务访问。
本指南涵盖所有这些场景,展示何时使用每种方法,如何安全地执行,以及应避免哪些错误——以便您可以自信地更改用户,而不会破坏权限、服务或访问。
切换到另一个用户(交互式shell)
su(切换用户)
-(或-l)加载目标用户的完整登录环境:主目录、PATH、shell配置文件。
不带-,您将保留当前环境的大部分(可能会令人困惑)。
切换到root:
安全提示:在许多发行版中,su需要目标用户的密码(例如,root密码),这通常是禁用的。
sudo -i(适用于root/admin shell)
为您提供一个root登录shell(类似于su -),使用您的sudo权限而不是root密码。
使用登录shell切换到另一个用户:
以另一个用户身份运行单个命令(非交互式)
sudo -u
以干净的登录类环境运行:
以root身份运行命令
更改正在运行的进程的“有效用户”(高级现实)
Linux不允许您在大多数实际场景中“更改用户”已在运行的进程。相反,您通常:
在正确的用户下重新启动进程
或使用服务管理器(systemd)来定义用户
要检查哪个用户正在运行进程:
或:
更改服务运行的用户(systemd)
大多数生产Linux使用systemd。服务应作为专用的、无特权的用户运行。
检查服务配置:
查找:
User=Group=
示例覆盖(安全方法):
添加:
应用:
验证:
更改文件所有权(更改文件的“用户”)
chown(所有者更改)
更改所有者:
更改所有者和组:
递归(小心):
保留符号链接(避免更改链接目标):
高级提示:对于大的树,先预览:
更改您当前的shell身份与更改帐户本身
确认您是谁
确认谁已登录
查看哪个用户通过sudo运行当前shell
更改用户名、UID、组(帐户修改)
重命名用户(用户名)
还移动/重命名主目录:
更新组名(可选):
更改UID
更改UID后,修复文件所有权:
将用户添加到组中(例如,sudo)
验证:
快速“备忘单”
切换用户:
以另一个用户身份运行命令:
运行root shell:
更改文件所有者:
更改帐户详细信息:
