Permitir renomear, mas não mover para outro diretório

5

Os usuários podem fazer upload / excluir / renomear arquivos via vsftp server e tudo funciona bem, exceto que eles também podem mover arquivos entre diretórios.

É possível permitir renomear arquivos, mas não permitir a movimentação deles?

Exemplo,

/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
    
por mpapec 27.10.2013 / 10:15

4 respostas

2

você pode tentar jogar com:

  • cmds_allowed

    This options specifies a comma separated list of allowed FTP commands (post login. USER, PASS and QUIT and others are always allowed pre-login). Other commands are rejected. This is a powerful method of really locking down an FTP server. Example: cmds_allowed=PASV,RETR,QUIT Default: (none)

  • cmds_denied

    This options specifies a comma separated list of denied FTP commands (post login. USER, PASS, QUIT and others are always allowed pre-login). If a command appears on both this and cmds_allowed then the denial takes precedence. (Added in v2.1.0).

e bloqueie o comando RNTO, por exemplo.

    
por 29.10.2013 / 00:54
0

Eu diria que o modelo unix é permitir escrever nos diretórios que você quer, por exemplo. / home / mpapec e para não permitir o acesso a diretórios específicos, conforme desejado.

    
por 28.10.2013 / 03:56
0

Se você tiver um readlink que suporte a opção -e para canonização de caminho, sugiro que você impeça os usuários de usar mv e escreva seu próprio mv como substituto. Algo assim talvez:

#!/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"

Note que isso (obviamente) fará com que o número de inode do arquivo movido seja diferente de um mv normal.

    
por 29.10.2013 / 00:28
-1

Tem certeza de que os diretórios para os quais deseja mover os arquivos está habilitado para a competência + rw?

Tente:

  1. modo raiz

  2. mount -o remount, rw dir (dir são os diretórios para os quais você deseja mover os arquivos)

por 27.10.2013 / 10:30