Sudo'ya 0022 umask ile dosya yazmasını nasıl söyleyebilirim?


11

Geçenlerde Snow Leopard'a geçtim. MacPorts tarafından yazılan bazı dosyaların yanlış izinle yüklendiğini fark ettim - 0077 umask ile yazılmışlar. Bence sorunu daralttım:

  1. portKomut üzerinden çağrıldığında sudo.
  2. Benim .bashrcdosyam 0077 umask belirtir.
  3. OS X'in eski sürümlerinde (10.5 ve altı), sudo kök kullanıcının umaskını kullandı (0022 idi); Ancak, şimdi benim 0077 umask kullanıyor .

sudoEski davranışı kullanmak için yine de var mı? Ben kullanmak zorunda çünkü Şu anda, tür can sıkıcı bir var sudogibi basit komutları çalıştırmak için port installed, port outdatedvb

(Sorun bu MacPorts biletinde daha ayrıntılı olarak açıklanmaktadır .)

Düzenle

umaskSudo seçeneğini keşfettim ve içine /etc/sudoersaşağıdaki satırı ekledim:

Defaults umask=0022

Ancak bu, çünkü istendiği şekilde işlev vermedi gerçek kullandığı umask'ı sudoolan birlik bu varsayılan maske ile kullanıcı maske. sudoKullanıcısının umask davranışını geçersiz kılmak ve varsayılanı doğrudan kullanmak için (yani, kullanıcının birleşimi ve varsayılan sudo maskesi değil), aşağıdakiler eklenebilir:

Defaults umask_override

Yanıtlar:


7

Mac OS X 10.7 (Lion) nihayet umask_override'ı destekleyen bir sudo sürümüne sahip. Kayıt için, bu benim için çalışıyor:

Defaults umask_override
Defaults umask=0022

1
Bu işlemi komut başına yapabilir misiniz? Normalde 0022 umask yapmak istiyorum, ama sonra tek bir durumda umask 0006'yı çağırıyorum, ancak yukarıdakiler bunu görmezden geliyor.
Michael

6

.bashrcKonfigürasyon betiğime aşağıdakileri ekledim:

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

3

nasıl:

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

2

.Bashrc ile

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

2
İyi bir fikir! Ne yazık ki, küçük bir araştırma, Snow Leopard'ın sudoaslında kaynağı (yeniden) .bashrcdeğil, mevcut ayarı sudo'yu çağıran kullanıcıdan devraldı.
mipadi

İşlev çözümünü diğer yanıtta listelendiği gibi kullanmanız gerekir.
Darren Hall

2

Kayıt için: sudo'nun yeni bir seçenek olan umask_override 'nın mevcut sürümü, umask'ın birleştirilmesini engellemeli, bu yüzden umask'ı da azaltabilirsiniz. Ne yazık ki, Mac OS X 10.6.6 sudo'nun bu sürümünü spor yapmıyor ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.