web-dev-qa-db-ja.com

名前の変更は許可されますが、他のディレクトリへの移動は許可されません

ユーザーは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
5
mpapec

あなたは遊んでみることができます:

  • cmds_allowed

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

  • cmds_denied

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

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

2
Moti

UNIXモデルは、必要なディレクトリへの書き込みを許可することです。/home/mpapecおよび必要に応じて特定のディレクトリへのアクセスを禁止します。

0
Michael Durrant

パスの正規化のために-eスイッチをサポートするreadlinkがある場合は、ユーザーが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とは異なり、移動されたファイルのiノード番号が(明らかに)変更されることに注意してください。

0
Joseph R.