Como eu digo ao sudo para gravar arquivos com uma máscara de 0022?

9

Eu recentemente atualizei para o Snow Leopard. Tenho notado que alguns arquivos escritos por MacPorts são instalados com a permissão errada - eles são escritos com uma máscara de 0077. Acho que reduzi o problema:

  1. O comando port é chamado por sudo .
  2. Meu arquivo .bashrc especifica uma máscara de 0077.
  3. Em versões mais antigas do OS X (10.5 e abaixo), o sudo usava o umask do usuário root (que era 0022); no entanto, agora ele usa meu umask de 0077.

Existe alguma maneira de ter sudo usando o comportamento antigo? Agora, é meio chato porque eu tenho que usar sudo para executar comandos simples como port installed , port outdated , etc.

(O problema é descrito com mais detalhes neste tíquete MacPorts .)

Editar

Eu descobri a opção umask para o sudo e, em /etc/sudoers , adicionei a seguinte linha:

Defaults umask=0022

No entanto, isso não funcionou como desejado, porque o real umask usado por sudo é a union da máscara do usuário com essa máscara padrão. Para sobrescrever o comportamento do umask de sudo e usar o padrão diretamente (isto é, não a união do usuário e a máscara sudo padrão), pode-se adicionar o seguinte:

Defaults umask_override
    
por mipadi 07.12.2009 / 17:19

5 respostas

6

Acabei de adicionar o seguinte ao meu script de configuração .bashrc :

# Mimic old behavior of 'sudo' on OS X Snow Leopard
sudo() {
    old=$(umask)
    umask 0022
    command sudo "$@"
    umask $old
}
    
por 09.12.2009 / 21:58
5

O Mac OS X 10.7 (Lion) finalmente tem uma versão do sudo que suporta umask_override. Para o registro, isso funciona para mim:

Defaults umask_override
Defaults umask=0022
    
por 26.07.2011 / 06:49
3

que tal:

sudo22() {
   local UMASK='umask';
   umask 22;
   sudo "$@";
   umask $UMASK
}
    
por 07.12.2009 / 17:25
2

Com o seu .bashrc

if [[ $EUID -eq 0 ]]; then
   umask 0022
else
   umask 0077
fi
    
por 07.12.2009 / 19:13
2

Para o registro: a versão atual do sudo como uma nova opção 'umask_override', que deve impedir que o umask seja mesclado, então você deve ser capaz de reduzir o umask também. Infelizmente, o Mac OS X 10.6.6 não parece ostentar esta versão do sudo ...

    
por 22.02.2011 / 18:52