cURLFTPFS仅能列出挂载目录,无法读写创建文件问题求助
解决curlftpfs挂载后仅能列目录无法读写的问题
我之前碰到过类似的curlftpfs权限异常情况,结合你提到的Pure-FTPd虚拟用户映射场景,给你几个针对性的排查和解决方向:
- 显式指定挂载参数匹配远程用户UID/GID
默认情况下,curlftpfs会用当前执行挂载命令的用户UID/GID来映射远程文件权限,这会导致远程www-data的权限无法在本地挂载点生效。你需要在挂载时强制指定与远程www-data一致的UID和GID,同时加上allow_other参数让其他用户也能访问挂载目录:
curlftpfs ftp://http:your-password@your-server/ /mnt/ftp-mount -o uid=$(id -u www-data),gid=$(id -g www-data),allow_other
记得替换命令里的密码、服务器地址和本地挂载点为实际值。
开启FUSE全局
user_allow_other配置
即使挂载时加了allow_other,如果FUSE的全局配置没开启这个选项,权限还是会被限制。编辑/etc/fuse.conf,找到#user_allow_other这一行,去掉前面的注释符号#,保存后重新执行挂载命令即可。验证Pure-FTPd虚拟用户的实际操作权限
先排除Pure-FTPd本身的配置问题:用原生ftp命令登录虚拟用户http,尝试执行读写操作:
ftp your-server # 输入用户名http和对应密码 put local-test.txt # 上传测试文件 get remote-test.txt # 下载测试文件 mkdir test-dir # 创建测试目录
如果这些操作失败,说明问题出在Pure-FTPd配置上,需要检查:
/etc/pure-ftpd.conf中的UserCanWrite是否设置为yes虚拟用户的专属配置(比如
/etc/pure-ftpd/pureftpd.passwd关联的权限项)是否限制了读写再次确认
/var/www/目录的权限确实归www-data所有,且权限位包含读写执行(比如chmod 755 /var/www/)确保挂载用户在FUSE用户组内
部分系统要求执行挂载FUSE文件系统的用户必须加入fuse组,否则无法使用allow_other参数。执行以下命令添加用户到组,然后重新登录生效:
usermod -aG fuse your-local-user
替换your-local-user为实际执行挂载命令的用户。
内容的提问来源于stack exchange,提问作者Emil Avramov
相关产品推荐
相关产品推荐

