
Estou tentando criar um script de shell Bash que permita a transferência de arquivos de um dispositivo flash para um arquivo especificado pelo usuário. Embora eu queira impedir que este usuário possa criar nenhum subdiretório neste diretório de arquivo.
OBSERVAÇÃO:Então, em essência, quero que o diretório de arquivo que o usuário cria/especifica seja uma estrutura plana de um nível.
Não tenho a menor ideia de como conseguir isso e agradeceria qualquer ajuda que pudesse obter.
Responder1
Não existe nenhum mecanismo nativo para alcançá-lo facilmente. O sistema de permissões do Linux não pode especificar permissões separadas para a criação de arquivos e diretórios porque os diretórios são, na verdade, arquivos. Mas tente desta forma:
- Faça com que todos os diretórios de arquivo pertençam a um (ou poucos) usuários diferentes, criados apenas para esse propósito. Vamos assumir seu nome archiveuser.
Faça com que todos os diretórios de arquivo (acho que você tenha muitos) sejam propriedade deste usuário, in.ex .:
$ chown archiveuser:archiveuser /somedir/archivedir1 $ chown archiveuser:archiveuser /somedir/archivedir2 $ chown archiveuser:archiveuser /somedir/archivedir3
Restrinja o acesso aos diretórios de arquivo para serem acessados apenas pelo proprietário:
$ chmod 700 /somedir/archivedir1 $ chmod 700 /somedir/archivedir2 $ chmod 700 /somedir/archivedir3
Use
sudo
o mecanismo para concedercp
acesso de comando aos diretórios de arquivo:adicionar à
/etc/sudoers
:someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/* someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
Claro que é conveniente criar um grupo adequado para todos os usuários que devem ter permissão para usar este comando. Leia
sudo
o tutorial :-).Isso é tudo. Os usuários devem usar:
$ sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
Você pode criar algum alias para torná-lo mais conveniente de usar (ou seja, alias cpt='sudo -u archiveuser cp'
). Observe também que cp -r
a necessidade de copiar um diretório não é permitida sudo
neste caso. Além disso, mkdir
o comando é impedido por permissões. Assim seu objetivo é alcançado.