Як сказати sudo писати файли з umask 0022?


11

Я нещодавно модернізувався до Snow Leopard. Я помітив, що деякі файли, написані MacPorts, встановлені з неправильним дозволом - вони написані umask 0077. Я думаю, що я звузив проблему:

  1. portКоманда викликається з допомогою sudo.
  2. Мій .bashrcфайл вказує umask 0077.
  3. У старих версіях OS X (10.5 і нижче) sudo використовував umask кореневого користувача (який був 0022); проте зараз він використовує мій umask 0077.

Чи все-таки варто sudoвикористовувати стару поведінку? Зараз це щось дратує, тому що мені доводиться використовувати sudoдля запуску простих команд, наприклад port installed, port outdatedі т.д.

(Проблема більш докладно описана в цьому квитку на MacPorts .)

Редагувати

Я виявив umaskваріант для судо, і в цьому /etc/sudoersдодав наступний рядок:

Defaults umask=0022

Однак це функціонувало не так, як бажано, тому що справжній umask, який використовується, sudo- це об'єднання маски користувача з цією маскою за замовчуванням. Для того, щоб змінити поведінку sudo'umask' та використовувати за замовчуванням безпосередньо (тобто не об'єднання користувача та маску sudo за замовчуванням), можна додати наступне:

Defaults umask_override

Відповіді:


7

Mac OS X 10.7 (Lion) нарешті має версію sudo, яка підтримує umask_override. Для запису це працює для мене:

Defaults umask_override
Defaults umask=0022

1
Чи можете ви зробити цю роботу за командною ознакою? Я хотів би нормально встановити umask 0022, але потім посилатись на umask 0006 за однієї обставини, але вище це ігнорує.
Майкл

6

Я в кінцевому підсумку додав у свій .bashrcсценарій конфігурації таке:

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


2

З вашим .bashrc

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

2
Гарна ідея! На жаль, невелике розслідування показує, що Snow Leopard's sudoне є фактично (повторним) джерелом .bashrc, але успадковує поточну настройку від користувача, який викликав sudo.
mipadi

Вам доведеться скористатися способом вирішення, як зазначено в іншій відповіді.
Зал Даррена

2

Для запису: поточна версія sudo як нова опція 'umask_override', яка повинна запобігти злиття umask, тому ви також зможете опустити umask. На жаль, Mac OS X 10.6.6, схоже, не є такою версією судо ...

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.