假设我创建了系统,我创建了一个用户名提斯托.我基本上有根, 和提斯托作为我直接操作的用户。
然后当我安装 Apache 时,它添加了第三个用户 -www-数据。
当我跑步时ps aux | egrep '(apache|httpd)'
我得到:
root 3192 0.0 1.4 327668 30364 ? Ss Nov23 0:04 /usr/sbin/apache2 -k start
www-data 28806 0.0 2.1 335512 43696 ? S 06:25 0:01 /usr/sbin/apache2 -k start
www-data 28808 0.0 1.8 335196 37412 ? S 06:25 0:00 /usr/sbin/apache2 -k start
www-data 28809 0.0 2.0 337408 41280 ? S 06:25 0:00 /usr/sbin/apache2 -k start
www-data 28811 0.0 2.3 333112 49148 ? S 06:25 0:00 /usr/sbin/apache2 -k start
www-data 32351 0.2 2.3 341040 49028 ? S 06:50 0:01 /usr/sbin/apache2 -k start
www-data 32480 0.0 0.5 328160 10844 ? S 06:58 0:00 /usr/sbin/apache2 -k start
www-data 32481 0.0 0.5 328280 11128 ? S 06:58 0:00 /usr/sbin/apache2 -k start
www-data 32482 0.2 1.8 335116 37428 ? S 06:58 0:00 /usr/sbin/apache2 -k start
www-data 32483 0.0 1.7 334784 36040 ? S 06:58 0:00 /usr/sbin/apache2 -k start
www-data 32484 0.0 0.4 327716 8812 ? S 06:59 0:00 /usr/sbin/apache2 -k start
tiesto 32586 0.0 0.0 14512 1032 pts/0 S+ 07:01 0:00 grep -E --color=auto (apache|httpd)
我的问题:
嗯,我的问题可以由以下两个问题组成:
- 为什么当我这样做时
su www-data
,我得到:
此帐户目前不可用。
- 我该如何合并提斯托和www-数据?(例如目录 inode、cron 任务等)?我只想获取用户名以外的所有内容提斯托,并代入www-数据,然后删除提斯托... 我想www-数据成为我的工作用户,与我合作的用户
sudo anything
,而不是提斯托.我可以称之为合并 提斯托---> 进入www-数据。
答案1
www-data
是一个系统帐户,旨在用作 Apache HTTP Server 运行时的帐户。它是不是旨在用于交互式工作。
su www-data
为何不起作用的问题的直接技术答案是,该帐户www-data
被设置nologin
为其登录 shell ( man nologin
)。默认情况下这样做是为了阻止使用该帐户进行交互式工作。当然,sudo -u www-data bash
如果您绝对必须这样做,您可以随时这样做;但我不明白为什么有必要这样做。
在从 Debian 派生的系统上,Apache 默认在用户 下运行www-data
。要使其在另一个用户帐户下运行,您必须编辑文件/etc/apache2/envvars
。查找export APACHE_RUN_USER=www-data
和export APACHE_RUN_GROUP=www-data
并更改它们以满足您的要求。
根据具体设置,在您的帐户下运行 Web 服务器可能会或可能不会产生安全隐患。更好的方法可能是让 Apache 在其下运行www-data
(以限制其权限),并将 Apache 所提供服务的目录的所有权更改为您的帐户。可以将 Apache 应具有写访问权限的目录设为由用户www-data
和您的组拥有,同时设置 set-group-id 位并为该组授予写访问权限。
现在,如果你仍然坚持你想要你的交互的www-data
最简单的方法是获取帐户www-data
或组所拥有的所有文件的所有权www-data
,删除帐户和组www-data
,然后重命名您的帐户和主组。我不会www-data
详细解释如何执行这个无用、复杂且容易出错的过程。