修复用户登录更改为 root 的问题

修复用户登录更改为 root 的问题

我这里有一个运行 Ubuntu 14.04.2 LTS(GNU/Linux 3.16.0-30-generic x86_64)的虚拟机,我们可以通过一个用户访问它,userx我们每次通过如下方式登录到该虚拟机时都可以ssh这样调用它:

ssh -p 22 [email protected]

它会自动将用户更改为因此它进入机器时为:

root@machinename:~#

如果我运行它,pwd它会显示我在userx文件夹中/home/userx。如果我运行su userx它,再次以 root 身份登录。

那么我该如何改变这种情况,以便当我使用 登录时,我实际上可以像一样userx登录?userxuserx@machinename:~#

编辑根据评论的要求:

root@machinename:~# grep userx /etc/passwd
userx:x:0:0:somename,,,:/home/userx:/bin/bash

我更改了值以somename保护隐私。我认为它是群组,对吗?

root@machinename:~# ls -l /home
total 4
drwxr-xr-x 10 1000 userx 4096 Nov  8 11:10 userx

答案1

问题是“userx”是 root。root 的 UID 为 0,如 /etc/passwd 中所示

userx:x:0:0:somename,,,:/home/userx:/bin/bash

https://www.cyberciti.biz/faq/understanding-etcpasswd-file-format/以理解输出。

因此,您可以做的是,尽管这具有中等程度的侵入性,但所有这一切都可以从 root shell 中完成 !!!

在你的情况下,你需要手动编辑etc/passwd/etc/groups

nano /etc/passwd

编辑 userx 行

userx:x:1000:1000:somename,,,:/home/userx:/bin/bash

然后 /etc/groups

至少

userx:x:1000:

到达那里后,您可以根据需要将 userx 添加到其他组。在行尾添加 userx,如果需要,请用逗号分隔(从桌面安装中发布此列表)。您可以根据需要将自己添加到其他组(www-data?)

adm:x:4:syslog,userx
cdrom:x:24:userx
sudo:x:27:userx
dip:x:30:userx
plugdev:x:46:userx
lpadmin:x:118:userx
userx:x:1000:
sambashare:x:128:userx

然后设置 ssh(如果需要)

cp -R /root/.ssh /home/userx
chown -R userx:userx /home/userx

退出 root shell 之前,从客户端测试 ssh 和 sudo

ssh [email protected] #you do not need to specify the port if it is the default

现在假设你可以通过 ssh 登陆,测试 sudo

sudo -i

只要您可以通过 ssh 登录并获取 root shell,就可以开始了。

如果您遇到问题,需要回复,我们可能需要配置 ssh 和/或 sudo

答案2

您的用户userxID 和组 ID 为 0,这意味着它自动成为 root 用户。您可能需要创建具有不同 ID 的用户,最佳做法是从 1000 开始,因为之前的 ID 应该为系统帐户保留。

用户x:x:00:somename,,,:/home/userx:/bin/bash

更改用户 ID 的语法是:

usermod -u UID userx

举例来说

usermod -u 1000 userx

并更改主要组

usermod -g groupx userx

例如,让用户成为具有相同组的成员(Linux 中的默认行为)。

groupadd userx # < Command useless for you as group userx already exists
usermod -g userx userx

相关内容