今天,以普通用户(非 root 用户)的身份,我的 Ubuntu 机器上发生了一些奇怪的事情:
- 一旦我登录,我就可以
sudo
不用输入密码(通常,我相信我总是必须输入密码才能sudo
?) - 当我输入时
cd ~
,它告诉我,我没有权限访问/root
。 - 类似地,我的 bash 提示符显示类似的内容:
user@host:/home/username
而不是user@host:~
我所熟悉的提示。 - 我的所有配置文件似乎都没有正确设置,一切似乎都认为我的主目录是
/root
。 - 由于前面的问题,我无法执行诸如运行之类的操作,
screen
因为它无法在/root
目录中写入新的配置文件。
知道cat
ing/etc/passwd
表明我的用户的家是/home/user
而不是可能会很有用/root
。
我刚刚做了一个大apt-get upgrade
动作,这是我软件新版本的正常行为吗? rkhunter
报告了一些可疑文件,但它们似乎已经存在了一段时间,而且似乎是合法的(它们看起来是与请求跟踪器相关的文件)。如果这对任何人有帮助并且是谨慎的,我可以发布 rkhunter 日志。并且什么chkrootkit
都没有出现。似乎也unhide
没有注意到任何事情。唯一似乎rkhunter
关心的是我的版本openssl
,,,。但是做一个openssh
php
GnPG
sudo apt-get update; sudo apt-get upgrade; sudo apt-get dist-upgrade
没有给我任何可升级的软件包。
有人能建议如何解决这个问题吗?如果谁能确定我的问题原因,我将获得加分。
更新:正如我上面所说,我的/etc/passwd
显示我的主目录是正确的(/home/username
),但是当我echo $HOME
它显示/root
。这是输出:
user@hostname:/home/user$ getent passwd $USER
user:x:1000:1000:user,,,:/home/user:/bin/bash
user@hostname:/home/user$ echo $HOME
/root
更新 更新:感谢这里的建议,我发现有一个.profile
正在/home/user
将我的 HOME 导出为/root
。虽然我猜这是一些奇怪的软件的工作,但我apt-get
删除它似乎已经解决了我的大部分问题。
感谢大家!
答案1
$ id
$ echo $HOME
$ getent passwd $USER
听起来 $HOME 不正确,这很有趣。如果登录时发生这种情况,请查看系统帐户数据库中您的帐户的内容,这是第二个命令的作用。通常/历史上,这个数据库是 /etc/passwd,在现代 Linux 上,也会有 /etc/shadow。
部分原因是,sudo 听起来像是您的 uid 已设置为 0,这很奇怪。不要这样做,这意味着您的帐户是 root,只是名称不同,如果滥用,这会让您的帐户同样危险。如果发生这种情况,那么您将需要进行一些清理工作。请不是执行 { sudo vipw },因为您可能会面临无法再次使用 sudo 的风险,这取决于各种配置的所有权,因此您无法修复权限。相反,使用 { sudo -i } 有效地以 root 身份登录,然后使用 { vipw },然后使用 { chown -R ... } 重置所有权。
答案2
我可能错了,但我的想法是 1) 使用 sudo 时不需要输入密码:您的默认 shell 可能是 sudo,而不是 bash。请在 /etc/passwd 中检查;2) 无法转到 /root:请检查该文件夹的权限,如果需要,请 chmod u+x;3) 在 sudo 模式下,这很正常;4) 它与 1) 有关
正如我所写,这只是建议。但这里有一些原因的解释。uid 和 gid 不是有效 uid 和有效 gid。当你使用 sudo 时,你只会更改 uid/gid,而不会更改有效 uid/gid。另一个能够转到 /root 的建议:尝试sudo bash
答案3
您可以在部署时编辑 visudo 以恢复 sudo 密码请求
在终端:visudo
您应该编辑此行:
%sudo ALL=NOPASSWD: ALL
和
ALL=NOPASSWD:ALL