我个人通常使用基于 Debian 的系统,但我对整个 *nix 系列操作系统提出以下问题。
用户www-data
通常使用 Apache/Nginx 吗,因为 Apache/Nginx 已经附带了一些 *nix 系统,或者通常是由给定的软件(即 Apache/Nginx)创建的?
如果它已经附带了一些系统(在我的例子中是 Debian),它将阻止我在安装可能自己创建它的 Apache/Nginx 之前为不同于 Apache/Nginx 的软件创建它,从而使自己避免一些可能的冲突。
顺便说一句,我正在考虑将它用于 Ansible 和become: yes
.
答案1
由于您使用的是 Ansible,因此您应该指定您希望www-data
用户存在,使用用户模块以及state=present
任何其他合适的属性(例如 system=yes
)。如果需要,这将创建用户,如果用户已经存在,则不会创建用户。这是配置管理的一般原则 - 描述您希望系统所处的情况,而不是到达那里的步骤。
在 Debian 以及大概大多数衍生产品上,www-data
用户是始终存在,它不是由特定包为其自身目的创建的(它是“由...制作base-passwd
,以及默认的所有其他条目/etc/passwd
)。我对其他系统一无所知。
答案2
在 Red Hat 发行版和衍生版本中,软件包安装程序通常在预安装脚本中包含一个“创建用户”命令。所以,在CentOS 7上,通过rpm -q --scripts httpd
我们可以看到
preinstall scriptlet (using /bin/sh):
# Add the "apache" group and user
/usr/sbin/groupadd -g 48 -r apache 2> /dev/null || :
/usr/sbin/useradd -c "Apache" -u 48 -g apache \
-s /sbin/nologin -r -d /usr/share/httpd apache 2> /dev/null || :
这告诉我们很多事情:
- 在 Red Hat 及其衍生产品上,用户称为
apache
- 它还试图创建一个名为
apache
- 它希望 userid 和 groupid 为 48
- 但如果用户或组已经存在,则安装将继续。