use ls -l -d /tmp/
e você verá que as permissões estão definidas como drwxrwxrwt
, ou seja, d
: um diretório, rwx
: leia, grave e execute as permissões permitidas para proprietário, grupo e outros (nesta ordem ), t
sticky bit, ou seja, somente os proprietários de arquivos têm permissão para excluir arquivos (não o grupo, apesar das permissões). Vamos deixar a parte pegajosa de lado por um momento e mencionar que um diretório precisa ser executável para ser acessível.
Agora, se você quiser restringir a permissão de gravação para outras pessoas (proprietário e grupo é root), use chmod o-w /tmp/
(como raiz, ou seja, usando sudo
)
NO ENTANTO: /tmp/
é bastante importante para processos que podem precisar de dados temporários, por isso sugiro não restringir permissões para essa pasta!
Como você está indo para uma pasta específica, o mais simples seria criar manualmente essa pasta (como root) e, em seguida, restringir a permissão para ela:
sudo mkdir /tmp/badfolder
sudo chmod -R o-w /tmp/badfolder/
Nota lateral sobre chmod: -R
do recursivamente, u, g, o: usuário, grupo, outro, + - adiciona / remove permissão para r, w, x ler, escrever, executar. Ou seja para permitir que membros do grupo escrevam em um arquivo, use chmod g+w file
.
Atualização:
Caso o processo esteja sendo executado como root, você também precisa definir o atributo 'i'. De man chattr
A file with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file. Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.
Isso também se aplicaria se a pasta não fosse de propriedade de root. Simplesmente use
chattr +i /tmp/badfolder
Use chattr -i /tmp/badfolder
para removê-lo e -R
para fazer recursivamente.