看起来这应该很容易,但我在这里真的很挣扎。我不太精通Linux,但我可以四处走动。我只是设置了一个新的Ubuntu v20.04.2 Server
并在上面安装了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登录时,我就无法对其进行写入。
如何让我的remote
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_enable
和anon_mkdir_write_enable
设置为YES
。如果未设置这些权限,则上载的文件将应用700
权限,这没有任何价值。
file_open_mode
选项设置文件的默认设置。即使该值为777
,022
的local_umask
设置也确保为文件提供755
。
设置好后,您可以重新启动FTP服务器,使所有内容生效。
对于用户帐户,通常最简单的方法是将其主目录设置为Apache根目录,并将其添加到www-data
组中。
sudo adduser ftpuser
sudo usermod -d /var/www -m ftpuser
sudo usermod -a -G www-data ftpuser
登录到web服务器时,请确保将ftpuser
更改为您希望人员或服务使用的任何内容。
从这里我们可以确保在/var/www
目录中设置正确的权限:
sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www
接下来,我们可以将该目录及其下面的所有子目录设置为";设置GID";,意味着在CCD_ 23下创建的所有新文件和目录都由CCD_。第二个命令将确保文件正确设置:
sudo find /var/www -type d -exec chmod 2775 {} ;
sudo find /var/www -type f -exec chmod ug+rw {} ;
这就是