允许重命名但不允许移动到其他目录

允许重命名但不允许移动到其他目录

用户可以通过服务器上传/删除/重命名文件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 权限吗?

试试:

  1. 根模式

  2. mount -o remount,rw dir (dir 是要将文件移动到的目录)

相关内容