我刚刚在使用的 Debian 系统上遇到了一种奇怪的情况。
突然,一个程序抱怨说找不到它的运行组。经过一番搜索,似乎我的系统不再认为整个系统上存在任何用户或组,包括root
。
不过,它们仍然在/etc/passwd
、/etc/group
等处。
例如:
root@debian:/etc# getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:102:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:105::/nonexistent:/usr/sbin/nologin
unscd:x:105:109::/var/lib/unscd:/usr/sbin/nologin
ntp:x:106:112::/nonexistent:/usr/sbin/nologin
sshd:x:107:65534::/run/sshd:/usr/sbin/nologin
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
festival:x:108:29::/nonexistent:/usr/sbin/nologin
mysql:x:110:116:MySQL Server,,,:/nonexistent:/bin/false
Debian-exim:x:111:117::/var/spool/exim4:/usr/sbin/nologin
postfix:x:112:118::/var/spool/postfix:/usr/sbin/nologin
opendkim:x:113:120::/var/run/opendkim:/usr/sbin/nologin
telnetd:x:109:115::/nonexistent:/usr/sbin/nologin
com:x:1001:1001:,,,:/home/com:/bin/bash
asterisk:x:1004:1004:Asterisk,,,:/home/asterisk:/bin/bash
postgres:x:115:123:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
memcache:x:116:124:Memcached,,,:/nonexistent:/bin/false
do-agent:x:998:998::/home/do-agent:/bin/false
root@debian:/etc# su - root
su: user root does not exist
root@debian:/etc# su - asterisk
su: user asterisk does not exist
root@debian:/etc# su - com
su: user com does not exist
root@debian:/etc# ls -la /etc/passwd
-rw-r--r-- 1 0 0 2227 Jul 29 06:28 /etc/passwd
root@debian:/etc# ls -la /etc/group
-rw-r--r-- 1 0 0 1013 Jul 29 06:28 /etc/group
您可以看到另一件奇怪的事情是,它ls
不显示文件的用户名和组,而只显示文件的 uid 和 gid。
我可以对文件进行 cat 操作,并且所有用户和组的输出都可以正常显示。
所以现在当然各种事情都行不通了:我不能新的到服务器的 SSH 连接,但一些现有的连接仍然打开(telnet 等也是如此)
我有点害怕重新启动服务器并查看是否能解决问题,因为如果不行,那么继续操作将变得更加困难,因为我将不得不使用控制台登录(并且考虑到它认为 root 不是有效用户,我甚至对此有点谨慎。)
有人见过这种事情并且知道为什么会发生吗?
答案1
好的,我比预期的更快地明白了,但由于它不是直观的,所以才发布。
'/etc` 有 744 个权限。
chmod 755 /etc
使一切恢复正常。