Jak mam powiedzieć sudo, aby zapisywało pliki z umaską 0022?


11

Niedawno uaktualniłem do Snow Leopard. Zauważyłem, że niektóre pliki napisane przez MacPorts są instalowane z niewłaściwym pozwoleniem - są zapisywane z umaską 0077. Wydaje mi się, że zawęziłem problem:

  1. portKomenda jest wywoływana poprzez sudo.
  2. Mój .bashrcplik określa umask 0077.
  3. W starszych wersjach OS X (10.5 i niższych) sudo używał umask użytkownika root (który był 0022); jednak teraz używa mojego umask 0077.

Czy w ogóle można sudoskorzystać ze starego zachowania? Teraz, to trochę denerwujące bo muszę użyć sudodo uruchomienia prostych poleceń, takich jak port installed, port outdateditp

(Problem opisano bardziej szczegółowo w tym bilecie MacPorts .)

Edytować

Odkryłem umaskopcję sudo i /etc/sudoersdodałem następujący wiersz:

Defaults umask=0022

Jednak nie działało to zgodnie z oczekiwaniami, ponieważ prawdziwym umask jest używane sudopołączenie unii maski użytkownika z tą domyślną maską. Aby zastąpić zachowanie sudoumask i użyć domyślnej wartości domyślnej (tj. Nie zjednoczenia użytkownika i domyślnej maski sudo), można dodać:

Defaults umask_override

Odpowiedzi:


7

Mac OS X 10.7 (Lion) ma wreszcie wersję sudo, która obsługuje umask_override. Dla przypomnienia, to działa dla mnie:

Defaults umask_override
Defaults umask=0022

1
Czy możesz sprawić, by działało to na zasadzie polecenia? Chciałbym umaskować 0022 normalnie, ale następnie przywołać umask 0006 w jednym przypadku, ale powyższe to ignoruje.
Michael

6

Skończyło się na dodaniu do mojego .bashrcskryptu konfiguracji:

# Mimic old behavior of `sudo` on OS X Snow Leopard
sudo() {
    old=$(umask)
    umask 0022
    command sudo "$@"
    umask $old
}

3

Co powiesz na:

sudo22() {
   local UMASK=`umask`;
   umask 22;
   sudo "$@";
   umask $UMASK
}

2

Z Twoim .bashrc

if [[ $EUID -eq 0 ]]; then
   umask 0022
else
   umask 0077
fi

2
Dobry pomysł! Niestety, małe dochodzenie pokazuje, że Snow Leopard sudofaktycznie nie (re) źródła .bashrc, ale dziedziczy bieżące ustawienia od użytkownika, który wywołał sudo.
mipadi

Będziesz wtedy musiał skorzystać z obejścia funkcji wymienionego w drugiej odpowiedzi.
Darren Hall,

2

Dla przypomnienia: aktualna wersja sudo jako nowa opcja „umask_override”, która powinna uniemożliwić scalenie umask, więc powinieneś być w stanie obniżyć umask. Niestety, Mac OS X 10.6.6 nie wydaje się mieć tej wersji sudo ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.