Impedindo um usuário de apagar arquivos, apesar de poder gravá-los
Dica publicada em Linux / FTP
Impedindo um usuário de apagar arquivos, apesar de poder gravá-los
Esta dica tem por base utilizar o servidor ProFTPd rodando sobre Slackware Linux 10.1. O objetivo desse pequeno HOWTO é que criemos um usuário determinado que ocupe uma pasta no servidor FTP e possa gravar quaisquer arquivos nela (fazer upload), porém, não possa apagá-los, o que pode ser muito útil no caso de você desejar liberar um usuário padrão para vários clientes e que eles possam apagar os arquivos. Bem, vamos lá. Suponhamos que o usuário que você queira criar chame-se USER.
Passo 1) Crie o usuário. Aqui as possibilidades são inúmeras, com centenas de sintaxes possíveis. Isso deve resolver:
# useradd USER -g ftp -d /home/USER
# mkdir /home/USER
# chown USER:ftp /home/USER
Antes de utilizar o exemplo acima, tenha certeza de que seu ProFTPd está configurado para aceitar logins de usuários sem shell, caso contrário, você deverá acrescentar a shell utilizando-se do parâmetro "-s /caminho/para_a_shell". A primeira linha deverá ser modificada da seguinte maneira:
# useradd USER -g ftp -d /home/USER -s /bin/sh
As outras duas permanecem iguais.
Passo 2) Edite o arquivo /etc/proftpd.conf (use o editor de sua preferência):
# mcedit /etc/proftpd.conf
Vá até o final do arquivo e acrescente:
Passo 1) Crie o usuário. Aqui as possibilidades são inúmeras, com centenas de sintaxes possíveis. Isso deve resolver:
# useradd USER -g ftp -d /home/USER
# mkdir /home/USER
# chown USER:ftp /home/USER
Antes de utilizar o exemplo acima, tenha certeza de que seu ProFTPd está configurado para aceitar logins de usuários sem shell, caso contrário, você deverá acrescentar a shell utilizando-se do parâmetro "-s /caminho/para_a_shell". A primeira linha deverá ser modificada da seguinte maneira:
# useradd USER -g ftp -d /home/USER -s /bin/sh
As outras duas permanecem iguais.
Passo 2) Edite o arquivo /etc/proftpd.conf (use o editor de sua preferência):
# mcedit /etc/proftpd.conf
Vá até o final do arquivo e acrescente:
<Directory /home/USER/*>
<Limit DELE>
Denyall
</Limit>
</Directory>
<Limit DELE>
Denyall
</Limit>
</Directory>
Passo 4) Reinicie o serviço e pronto!
Pelo inetd:
# /etc/rc.d/rc.inetd restart
Caso esteja rodando standalone, os comandos seriam:
# killall -9 proftpd
# proftpd
Desse modo, apesar do usuário ser o dono da pasta, ele encontra-se proibido de apagar quaisquer arquivos aí contidos, mesmo sendo também dono dos arquivos. O inconveniente é que a única pessoa capaz de apagar os arquivos será o root, por meio de SSH ou equivalente.
Espero ter ajudado alguém.
Valeu!