O grupo varia ao criar o subdiretório:
drwxrwx---+ 28 admin sftponly 4.0K Oct 22 15:19 ..
dr-xrwx---+ 2 admin *users* 4.0K Oct 22 22:41 subdir
Criação de diretório aninhado possivelmente restrita pelo grupo distinto do subdiretório.
Estou usando o sftp com o interno-sftp para o debian. O que estou tentando fazer é prender todos os usuários em uma pasta específica que está funcionando bem. Eu também preciso ter um único usuário que tenha direitos "admin" no sftp, mas não seja um usuário root. O usuário admin colocará os arquivos nos diretórios dos usuários do sftp, para que eles possam acessá-los. O usuário admin será uma pessoa "não técnica" usando o winscp ou outro cliente para fazer coisas. Não há como forçá-lo a usar o bash.
Eu criei a seguinte solução:
Usando o sshd_config eu configurei isto:
Match group users
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -d %u
Match group sftponly
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp -d admin/sftp/%u
Então, meu usuário 'admin' tem todos os usuários do sftp em sua casa. 'admin' também está no grupo de usuários. todos os outros usuários são criados no grupo sftponly. 'admin' também está no grupo sftponly.
A configuração do diretório é a seguinte:
-/
-home
-admin
-sftp
-user1
-user2
Eu criei um script para criar os usuários do sftp que realizam o seguinte:
adicione o usuário $ U:
useradd -d / -g 1000 -M -N -s /usr/sbin/nologin $U
defina a senha do usuário $ U
echo "$U:$P" | chpasswd
crie o diretório / home / admin / sftp / $ U
mkdir $SFTP_PATH/$U
definir a propriedade
chown $U:sftponly $SFTP_PATH/$U
definir permissões
chmod u=rx,go= -R $SFTP_PATH/$U
chmod g+s $SFTP_PATH/$U
Configurar ACL
setfacl -Rm u:admin:rwx,u:$U:r-x,g::--- $SFTP_PATH/$U
setfacl -d -Rm u:admin:rwx,u:$U:r-x,g::--- $SFTP_PATH/$U
Até aí tudo bem.
Agora, o que eu quero ter no item 6 é uma configuração que permitirá ao administrador do usuário criar um subdiretório no $SFTP_PATH/$U
que será acessível ao próprio $ U. Isso funciona bem para o primeiro diretório criado (user tester ):
# pwd
/home/admin/sftp/tester
# ls -alh
dr-xrwx---+ 2 tester sftponly 4.0K Oct 22 16:06 tester
# su admin
$ cd /home/admin/sftp/tester
$ mkdir subdir
$ ls -alh
admin@server:/home/admin/sftp/tester$ ls -alh
total 20K
dr-xrwx---+ 3 tester sftponly 4.0K Oct 22 22:41 .
drwxrwx---+ 28 admin sftponly 4.0K Oct 22 15:19 ..
dr-xrwx---+ 2 admin users 4.0K Oct 22 22:41 subdir
$ cd subdir
admin@storage:/home/admin/sftp/tester/subdir$ mkdir nesteddir
mkdir: cannot create directory ‘nesteddir’: Permission denied
Quando eu testo o acl eu recebo:
admin@storage:/home/admin/sftp/tester$ getfacl subdir/
# file: subdir/
# owner: admin
# group: users
user::r-x
user:admin:rwx
user:tester:r-x
group::---
mask::rwx
other::---
default:user::r-x
default:user:admin:rwx
default:user:tester:r-x
default:group::---
default:mask::rwx
default:other::---
Então minha pergunta é: Sendo administrador e tendo setfacl para admin como rwx, por que eu posso criar o diretório subdir mas não posso criar o diretório aninhado ?
Há algo que eu estou sentindo falta aqui? Eu conheço proftpd e pureftp mas, se possível, eu gostaria de usar o caminho ssh . Se não há como fazer isso, eu gostaria de me apontar na direção certa e recomendar um software que seria capaz de obter essa configuração pronta para uso.
Por favor, note: user admin tem seu próprio diretório em / home / admin / sharedfiles /, onde ele armazena arquivos que são então compartilhados com os usuários do sftp. Os arquivos são compartilhados usando links físicos em suas pastas. Por exemplo, se o administrador quiser compartilhar um arquivo (os arquivos são muito grandes como 500 GB) com três usuários, ele apenas coloca hardlinks em suas pastas nesses arquivos e pode baixá-los sem precisar copiar os arquivos grandes para a pasta de cada usuário.
O problema ocorreu quando o administrador quis colocar categorias diferentes de compartilhamentos em diferentes pastas para os usuários.
EDITAR:
Percebi que, se eu alterar a propriedade da pasta recém-criada para 'tester', a criação de diretórios aninhados é possível para o usuário admin. No entanto, ainda tenho que alterar a propriedade do diretório aninhado para permitir mais aninhamento de diretório.
# chown tester:sftponly subdir
# su admin
$ cd /home/admin/sftp/tester/subdir
$ mkdir nested # <----- works fine
$ cd nested
$ mkdir deepdir
mkdir: cannot create directory ‘deepdir’: Permission denied
Então, se eu quisesse criar o próximo diretório aninhado, eu teria que chown tester:sftponly nested
e, como usuário admin, eu poderia criar o diretório deepdir
.
Por favor, note que a ACL é herdada e, teoricamente, o usuário admin tem permissões rwx para todos os arquivos e diretórios sob a primeira pasta, que é subdir
.
Talvez isso ajude a encontrar o motivo da falha no setfacl?
Tags permissions sftp mkdir acl linux