O que são permissões corretas para / tmp? Eu, sem querer, defini tudo publicamente recursivamente

67

Eu abusei de sudo .

Eu criei um diretório temporário realmente muito curto que eu queria compartilhar entre alguns usuários por algumas horas ... e eu nomeei esse diretório /some/path/tmp

Infelizmente, lancei sudo chown 777 -R /tmp em vez de sudo chown 777 -R tmp , então meu arquivo /tmp agora é totalmente público.

Eu uso o comum /tmp com bastante frequência (todos os dias, quase todas as horas) pessoalmente para arquivos de vida curta, scripts, muitos scripts.

É uma preocupação de segurança agora que está completamente definida para público? Devo alterá-lo de volta para configurações mais seguras ou como configurações padrão comuns para uma distribuição Debian ou Ubuntu - (não sei quais eram)? Quais são as permissões corretas para /tmp ?

    
por Stephane Rolland 08.04.2013 / 02:38

3 respostas

107

As configurações normais para /tmp são 1777, que ls mostra como drwxrwxrwt . Ou seja: totalmente aberto, exceto pelo fato de que apenas o proprietário de um arquivo pode removê-lo (isso é o que esse t bit extra significa para um diretório).

O problema com um /tmp com o modo 777 é que outro usuário poderia remover um arquivo que você criou e substituir o conteúdo de sua escolha.

Se o seu /tmp é um sistema de arquivos tmpfs, uma reinicialização irá restaurar tudo. Caso contrário, execute chmod 1777 /tmp .

Além disso, muitos arquivos em /tmp precisam ser privados. No entanto, pelo menos um diretório precisa ser crítico em termos globais: /tmp/.X11-unix e possivelmente outros diretórios similares ( /tmp/.XIM-unix , etc.). O comando a seguir deve basicamente definir as coisas corretamente:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

Ou seja. Torne todos os arquivos e diretórios privados (remova todas as permissões para o grupo e outros), mas torne os sockets X11 acessíveis a todos. O controle de acesso nesses soquetes é imposto pelo servidor, não pelas permissões de arquivo. Pode haver outros soquetes que precisam estar disponíveis publicamente. Execute find /tmp -type s -user 0 para descobrir os soquetes de propriedade da raiz que podem ser necessários para tornar o mundo acessível. Podem existir também tomadas pertencentes a outros utilizadores do sistema (por exemplo, para comunicar com um barramento de sistema); explore com find /tmp -type s ! -user $UID (onde $UID é seu ID de usuário).

    
por 08.04.2013 / 02:47
10

/tmp e /var/tmp devem ter lido, escrito e executado direitos para todos; mas você normalmente também adicionaria o bit-sticky ( o+t ), para evitar que os usuários removessem arquivos / diretórios pertencentes a outros usuários. Então, chmod a=rwx,o+t /tmp deve funcionar.

Como para alterar as permissões recursivamente ... Contanto que o proprietário / grupo permaneça como está para os arquivos e diretórios, isso não deve ser um grande problema. Mas talvez você possa alterar a permissão de tudo em /tmp (não / tmp propriamente dito) para garantir a privacidade dos usuários, removendo os rx dos direitos dos outros e talvez do grupo.

Encontrar é uma boa maneira de fazer isso. Como root, faça:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})
    
por 08.04.2013 / 12:05
3
[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

De uma máquina do CentOS 5.9.

    
por 08.04.2013 / 02:46