我刚刚在我正在使用的 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。
我可以对文件进行分类,并且所有用户和组的输出都显示得很好。
所以当然现在各种事情都不起作用:我无法与服务器建立新的 SSH 连接,尽管一些现有的连接仍然是打开的(对于 telnet 等也是如此)
我有点害怕重新启动服务器并查看是否可以修复它,因为如果没有,那么这将使继续进行变得更加困难,因为我将不得不使用控制台登录(并且鉴于它没有不认为 root 是一个有效的用户,我什至对此有点警惕。)
有没有人以前见过这种事情并知道为什么会这样?
好的,我比我预期的要快,但是发布因为它不直观。
'/etc' 有 744 个权限。
chmod 755 /etc
使一切恢复正常。