我在 Slicehost 上运行一个 Web 服务器,并决定删除未使用/不必要的用户。但我真的不知道哪些用户对于系统运行是必要的
我将它用作带有 mysql、php、memcached、ssh 和 proftpd 的 apache 网络服务器。
这是 /etc/passwd 中的用户列表。
我如何决定删除哪些用户?
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin
MYUSER:x:1000:1000:,,,:/home/MYUSER:/bin/bash
mysql:x:102:105:MySQL Server,,,:/var/lib/mysql:/bin/false
Debian-exim:x:103:106::/var/spool/exim4:/bin/false
ftp:x:104:65534::/home/ftp:/bin/false
logcheck:x:105:107:logcheck system account,,,:/var/lib/logcheck:/bin/false
proftpd:x:107:65534::/var/run/proftpd:/bin/false
答案1
以下是旧版本的 Debian 文档对此事的评论:https://web.archive.org/web/20200415045431/https://www.debian.org/doc/manuals/securing-debian-howto/ch12.en.html#s12.1.12.1
较新的手册中已删除该部分。查看其中存在的用户,getent passwd
几乎所有用户都具有/usr/sbin/nologin
shell。有些用户的存在只是为了让文件归他们所有。我认为您不再需要删除用户。
答案2
手动创建的用户最终会得到一个刚好超过 1000 的 uid(除非您指定了 uid)。只要不要手动触碰 1000 以上范围内的任何其他用户即可。
100 多个范围内的某些帐户是与您正在运行的程序(Apache、MySQL、ProFTPd)关联的用户。通常,您应该让软件包处理这些用户,而不是尝试手动管理它们。
答案3
很难说,所有用户都在那里是因为守护进程和 cron 作业需要它。
但我可以告诉你哪些是不能删除的。
创建top
、ps -aux
或类似的东西,然后检查用户;如果有一个由“nobody”用户启动的进程,则无法删除它。如果您认为这些进程不应该存在,请停止守护进程并卸载其软件包,然后删除用户。
另外,请检查 crontab 和 cron.d,如果您删除了启动 cron 作业所需的用户,则该作业将不再起作用。
对于用作管理用户的其他用户,如果您不确定是否要删除它,可以将其 shell 设置为 /bin/false。用户将保留在那里,但没有人会从中获取 shell。