如何让SFTP服务器中其他用户修改/删除指定用户上传的文件
如何让SFTP服务器中其他用户修改/删除指定用户上传的文件
你遇到的问题核心在于文件本身权限和文件所在文件夹权限的双重限制,我一步步给你拆解解决:
首先说你发现的文件夹组问题——/data/uploads的组是root确实是关键障碍:删除文件本质是修改文件夹的内容(移除文件条目),所以user2需要对这个文件夹有写入权限,而当前文件夹组是root,user2不在root组里,自然没权限操作。
第一步:调整上传文件夹的组和权限
- 把文件夹的组改成user1:
sudo chgrp user1 /data/uploads - 给user1组添加写入权限:
这样user2作为user1组的成员,就拥有了对这个文件夹的写入权限,至少能删除里面的文件了。sudo chmod g+w /data/uploads
第二步:处理文件权限(覆盖现有文件+确保新上传文件合规)
现在你已有的文件权限是-rw-r--r--,组权限只有只读,所以user2能删文件(依赖文件夹权限),但没法修改文件内容。我们需要同步调整现有文件,同时确保新上传的文件自动继承合适权限:
- 给已有的文件添加组读写权限:
sudo chmod g+rw /data/uploads/* - 设置文件夹的默认ACL,让新上传的文件自动给user1组分配读写权限:
这条命令会给文件夹设置默认访问控制列表,之后user1上传的所有新文件,都会自动让user1组的用户拥有读写权限。sudo setfacl -d -m g:user1:rw /data/uploads
关于SFTP影响的疑问
把文件夹组改成user1完全不会影响SFTP的正常使用:因为user1是文件夹的所有者,本身就拥有完整的读写执行权限,上传操作不受任何影响。
这样操作后,user2就能顺利修改和删除user1上传的文件了。
备注:内容来源于stack exchange,提问作者Muslimbek Abduganiev




