用户可以通过服务器上传/删除/重命名文件vsftp
,一切正常,除了他们还可以跨目录移动文件。
是否可以允许重命名文件但不允许移动它们?
例子,
/ftp/work/xls/list.xls # can be deleted/renamed but should not moved to ie. 'doc'
/ftp/work/doc/list.doc # same thing, should not be moved elsewhere
答案1
你可以尝试玩:
允许的cmds
此选项指定允许的 FTP 命令的逗号分隔列表(登录后。USER、PASS 和 QUIT 等始终允许登录前)。其他命令被拒绝。这是真正锁定 FTP 服务器的强大方法。示例:cmds_allowed=PASV,RETR,QUIT 默认值:(无)
cmds_拒绝
此选项指定拒绝的 FTP 命令的逗号分隔列表(登录后。USER、PASS、QUIT 等始终允许登录前)。如果命令同时出现在 this 和 cmds_allowed 上,则拒绝优先。 (在 v2.1.0 中添加)。
例如,阻止 RNTO 命令。
答案2
我想说的是,unix 模型允许写入您想要的目录,ue /home/mpapec,并禁止根据需要访问特定目录。
答案3
如果您有readlink
支持-e
路径规范化开关的开关,我建议您完全阻止您的用户使用mv
并编写自己的开关mv
作为替代品。也许是这样的:
#!/bin/bash
[ $# -ne 2 ] && echo "Only a two-argument mv is allowed" && exit 1
src="$1"
dst="$2"
srcdir="$(readlink -e "$(dirname "$src")")"
dstdir="$(readlink -e "$(dirname "$dst")")"
[ "$srcdir" != "$dstdir ] && echo "Cross-directory mv is forbidden" && exit 2
[ "$(basename "$src")" = "$(basename "$dst")" ] && echo "Source and destination are the same. Nothing to do." && exit 3
cp -p "$src" "$dst" && rm -f "$src"
请注意,这(显然)会导致移动文件的索引节点号发生变化,这与常规mv
.
答案4
您确定要将文件移动到的目录启用了 +rw 权限吗?
试试:
根模式
mount -o remount,rw dir (dir 是要将文件移动到的目录)