我需要允许通过vsftpd进行广泛的匿名下载,但是只能将上传限制在一个path上。 有没有办法做到这一点是与文件系统的权限?
试图locking文件系统有两个主要问题:
现在#2是更大的关注点,所以我们实际上只将只读区域挂载为只读文件系统,但是这造成了它自己的问题。
您可以使用bind挂载选项将文件系统层次结构的已安装部分映射/重新挂载到其他位置。 假设你有一个与video共享的samba,另一个与图像库有共享,你想把它们作为只读的FTP下载。
mkdir -p /var/ftp/Videos /var/ftp/Images mount --bind /share/Videos /var/ftp/Videos mount --bind /share/Images /var/ftp/Images
然后使这些文件系统为只读:
mount -o remount,ro /var/ftp/Videos mount -o remount,ro /var/ftp/Images
文件系统权限保持不变,但video和图像下的所有内容现在都是只读的。 因此,FTP用户不能访问drwx------的子目录,但FTP用户也不能写入具有drwxrwxrwx权限的drwxrwxrwx 。
绑定挂载不采取选项,所以实现一个只读挂载需要重新挂载,因此我认为你不能使用fstab使这个持久化,需要脚本,而不是。
接下来设置上传目录:
mkdir -p /var/ftp/Upload chmod 700 /var/ftp/Upload chown ftp.ftp /var/ftp/Upload
然后正确configurationvsftpd进行匿名下载,并将匿名FTP用户chroot()configuration为/ var / ftp。 自从我这样做以来已经有一段时间了,但大致没有经过testing:
# /etc/vsftpd/vsftpd.conf listen=YES #The following directives prevent local users from logging in and enables anonymous access respectively. local_enable=NO anonymous_enable=YES #The following directive enables write access to the ftp server's filesystem. write_enable=Yes anon_upload_enable=Yes # Sets the root directory for anonymous connections. anon_root=/var/ftp
当然还有更多的相关选项可供select。
你可以很容易地得到你想要的与proftpd
<VirtualHost anonymous.example.net> ServerName "ANONYMOUS" Protocols ftp Port 21 DefaultRoot /var/ftp/pub/ <Anonymous /var/ftp/pub/> User ftp Group ftp UserAlias anonymous ftp MaxStoreFileSize 100 Mb user ftp <Directory /var/ftp/pub/> <Limit RMD MKD XMKD XRMD> DenyAll </Limit> </Directory> </Anonymous> </VirtualHost>