/var/www 目录中 Apache 的特定用户帐户

/var/www 目录中 Apache 的特定用户帐户

我会尽力解释。在我以前的服务器上,我的朋友设置了一个名为 webslave 的用户。

该用户的主目录是/var/www。当我使用 FISH 协议传输文件(使用 Krusader)时,用户以 webslave@host 身份登录。

例如,当该用户进行更改时,该组始终保持完整的 www-data。

在我的新服务器上,我使用我的用户名 name@host,文件通常归我和我的团队所有。

我想添加一个如上所述的用户,该用户将 www-data 作为主要组,并且无法访问 /var/www 之外的内容。

只是想确保我以正确的方式做到这一点。

很高兴澄清 - 感谢所有帮助 - 提前致谢!

答案1

您不需要新用户,只需确保该组始终为 www-data 即可。您 chmod 实际目录以具有 setgid 位,并且在该目录下创建的所有新文件都将具有 www-data 组。

因此,为了确保您是否需要将文件与您的用户一起放置在那里,它会保留正确的组、运行和 chmod 来设置目录的 setGID。

sudo chgrp www-data /var/www
sudo chmod +g /var/www

http://blog.superuser.com/2011/04/22/linux-permissions-demystified/

至于用户,创建用户后(如 nkts 建议),其中 M 表示不创建主目录,N 选项表示不创建与用户相同的默认组。

sudo useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user 

我会将其设置为 SFTP 而不是 FISH,因为它更安全、可靠且非常灵活。您还必须将其 chroot 到他的 home,以确保他无法访问文件系统的其余部分,并将其限制为内部 sftp。添加到/etc/ssh/sshd_config

Match User user
    ChrootDirectory /var/www
    ForceCommand internal-sftp

注意:FISH 更像是一种古老的好奇心,是在 SFTP 之前使用的 shell。

如果您仍想在 Ubuntu 中使用 FISH:

sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish

然后更改用户的shell

chsh -s /usr/bin/fish

我们还必须再次在 /etc/ssh/sshd_config 中强制使用 shell

Match User user
    ForceCommand /usr/bin/fish

本文还将为您提供 FISH 方面的帮助

https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/

用 Fish 对 homedir 进行限制应该是可能的,但设置起来更复杂,并且难以执行,因为如果 /var/www 的所有者是 www-data 会更容易。

要设置这样的限制,您至少需要将 /usr/bin/fish 复制到 /var/www 内部(这不是一个好主意),并且 /var/www 和 /usr/bin/fish 属于root(这也会使更改 /var/www 目录的 setGID 的建议无效。

如前所述,SFTP 是一种比 FISH 更现代、更安全的远程仅文件访问方式。

答案2

您可以使用以下命令创建新用户(我假设您使用的是 RHEL 兼容发行版):

# useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user

我不知道哪个应用程序通过鱼协议提供访问。

相关内容