ubuntu - 设置 VSFTPD 用户对 apache2 的 html 目录具有写入权限

标签 ubuntu apache2 vsftpd

看起来这应该很容易,但我真的很挣扎。我不太精通 Linux,但我可以四处走走。我刚刚设置了一个新的 Ubuntu v20.04.2 服务器 并在上面安装了 Apache2。然后我也在上面安装了 VSFTPD

现在我正在尝试获取它,以便当我使用“远程”用户登录时,我被锁定在/var/www/html/目录中,但对其中的任何内容都有写入权限。

我的 vsftpd.conf 文件具有以下未注释的设置:

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
local_root=/var/www/html
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

当我在 /var/www/html 目录上设置 chown 时,现在 vsftpd 拒绝连接,因为根目录是可写的。如果我将它设置为默认所有权(root),那么在使用 remote 登录通过 FTP 登录时我无法写入它。

如何让我的远程 ftp 登录具有对/var/www/html 目录的完全访问权限,但仅限于该目录(及其子目录),始终保持安全?

最佳答案

您可能需要为 vsftpd.conf 添加更多选项文件。这通常是我过去使用的设置:

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=0022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
file_open_mode=0777

这允许本地帐户为上传的文件设置默认权限(umask)。为了口罩正常工作anon_upload_enableanon_mkdir_write_enable需要设置为YES .如果未设置这些,则上传的文件将看到 700已应用权限,但没有任何值(value)。

file_open_mode选项设置文件的默认设置。即使值为 777 , local_umask 022 的设置确保文件被赋予 755 .

设置完成后,您可以重新启动 FTP 服务器以使一切生效。

对于用户帐户,通常最简单的方法是将他们的主目录设置为 Apache 根目录,并将它们添加到 www-data组。

sudo adduser ftpuser
sudo usermod -d /var/www -m ftpuser
sudo usermod -a -G www-data ftpuser

一定要改ftpuser登录网络服务器时您希望人们或服务使用的任何内容。

从这里我们可以确保在 /var/www 中设置了适当的权限目录:

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

接下来我们可以将目录及其下的所有子目录设置为“设置GID”,即在/var/www下创建的所有新文件和目录。属于 www-data团体。第二个命令将确保正确设置文件:

sudo find /var/www -type d -exec chmod 2775 {} \;
sudo find /var/www -type f -exec chmod ug+rw {} \;

就是这样👍🏻

关于ubuntu - 设置 VSFTPD 用户对 apache2 的 html 目录具有写入权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67696484/

相关文章:

linux - 如何在 bash 的每个子目录中创建相同的目录?

.htaccess - 使用.htaccess时如何使mod_rewrite *不*执行主目录扩展

linux - vsftpd无法同时启动两个副本

python - 结束程序后发生的奇怪的键盘中断错误

php - 如何在 nginx 上从/file.php 重定向到/file?

tomcat - 如何使用 ADFS 2.0 和 SAML/SSO 保护 Tomcat 的 Web 应用程序?

php - file_get_contents() 在 httpd 中通过代理

amazon-ec2 - vsftpd 错误列出目录

ftp - VSFTPD 和 Centos 6.2 的写入权限

c++ - 在 GCC 中编译 C++ 文件时出错