名前の変更は許可しますが、別のディレクトリに移動しない

名前の変更は許可しますが、別のディレクトリに移動しない

ユーザーはサーバーを介してファイルをアップロード/削除/名前変更でき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

次のようにプレイしてみることができます。

  • 許可されたcmd

    このオプションは、許可されるFTPコマンドのカンマ区切りリストを指定します(ログイン後。USER、PASS、QUITなどはログイン前に常に許可されます)。その他の注文は拒否されます。これはFTPサーバーをロックする本当に強力な方法です。例: cmds_allowed=PASV,RETR,QUIT デフォルト: (なし)

  • cmds_deny

    このオプションは、拒否するFTPコマンドのカンマ区切りリストを指定します(ログイン後、USER、PASS、QUITなどはログイン前に常に許可されます)。このコマンドとcmds_allowedの両方にコマンドが表示された場合、拒否は優先されます。 (v2.1.0に追加されました)。

たとえば、RNTO コマンドをブロックします。

答え2

私が言いたいのは、Unixモデルは、あなたが望むディレクトリ(/ home / mpaecなど)への書き込みを許可し、必要に応じて特定のディレクトリへのアクセスを無効にすることです。

答え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"

通常とは異なり、移動したファイルのinode番号が変更されることに注意してくださいmv

答え4

ファイルを移動するディレクトリに+rw権限が有効になっていますか?

努力する:

  1. ルートモード

  2. mount -o remount、rw dir(dirはファイルを移動するディレクトリです)

関連情報