Bir sistem kullanıcısı için umask nasıl ayarlanır?


14

umaskSistem kullanıcısı (ile oluşturulmuş useradd --system username) için ayarlanabilir mi?

Yanıtlar:


14

Bir kullanıcının umaskını ayarlamanın üç normal yolu vardır.

  1. Set UMASKiçinde/etc/login.defs
  2. pam_umask.soİçindeki PAM yapılandırmanıza ekleyin/etc/pam.d
  3. Kabuk başlangıç ​​dosyalarına ayarlayın, ör. /etc/profile

Bu konuda sistem kullanıcıları ile normal kullanıcılar arasında fark yoktur.

Ama özel bir umask ile bir arka plan programı başlatmaya çalıştığınızı varsayıyorum?

Sorun: yukarıdaki seçeneklerin tümü bir kullanıcı oturum açtığında gerçekleşir. Bir arka plan programı çalıştırıyorsanız, hiçbir zaman oturum açmaz. İnit tarafından başlatılır, sonra root olarak çalışır veya setuidbelirttiğiniz sistem kullanıcısı olarak çalıştırılması için çağrılar yapılır .

Ana seçenekleriniz:

  1. umaskinit betiğinizi koyun ( grep umask /etc/init.d/*örnek için a yapın )
  2. init'i programı özel bir umask ile başlatacak şekilde yapılandır ( systemd.exec upstart umask )
  3. kullanıyorsanız start-stop-daemon, umask seçeneğini geçin
  4. umask işlevini veya sistem çağrısını çağırmak için programın kendisini değiştirme

Arch Linux'ta (systemd kullanan) SSHFS (sftp-server) için bir umask ayarlamayı biliyor musunuz? Belirttiğiniz gibi, listelediğiniz ilk 3 seçeneğin herhangi bir etkisi yoktur.
MountainX

2

Sistem kullanıcıları 'normal' olanlardan üç şekilde farklıdır: parola geçerlilik süresi, ana dizin (sistem kullanıcılarının bir tane yok) ve UID (sistem kullanıcıları genellikle rastgele eşiğin altındadır).

Genel durumda, neredeyse tamamen şanssızsınız. Umask'ı ayarlamak için PAM kullanabilirsiniz, ancak PAM bu üç fark dışındaki şeylere dayalı davranışları seçer.

Başka bir deyişle, PAM'ı bir 'sistem' ve 'sistem olmayan' kullanıcılar arasında ayrım yapamazsınız. Bu size iki seçenek sunar:

  • Ya herkes için umask ayarlamak (örneğin check-in /etc/login.defs) için PAM kullanın , sonra /etc/bash.bashrc(veya benzeri) sistem olmayan kullanıcılar için umask açıkça ayarlayın ;

  • Veya bunu yapmak için kendi PAM modülünüzü yazabilirsiniz. Ben umask ayarı ortak bir istek olduğundan, bu birçok kişi tarafından memnuniyetle olacağını düşünüyorum.

Lütfen bu cevabı bol miktarda tuzla alın. Bu tür bir talep oldukça yaygındır ve şimdi daha iyi / uygun bir yol varsa şaşırmam.


1
Pam_umask adında bir PAM modülü zaten var . Sorun sadece giriş zamanında çalışıyor olmasıdır.
Mikel

Ah, bence biliyordun pam_umask, ama belki hakkında değil pam_succeed_if. İle pam_succeed_if , başka modülü yalnızca belirli bir kullanıcı veya grubu için geçerli yapabilirsiniz. Ama hala PAM'ın burada yardımcı olacağını düşünmüyorum.
Mikel

1

@Mikel'in önerdiği gibi, bir daemon olan bir sistem hesabını yapılandırmaya çalışıyorsanız, daemon'un kendisini yapılandırmayı deneyin.

Bu soruya MacOS'ta _www hesabı için umask'ı nasıl ayarlayacağımı araştırdım. Yukarıdaki cevapların önerdiği gibi bu zor olsa da, ben (bu durumda) kullanıcı == bir daemon olarak apache hizmetini yapılandırarak çözebilir bulundu.

Garip bir şekilde başlangıç ​​komut dosyasını bulamadım (normalde /etc/init.d/ içinde ama Library / LaunchDaemons / içindeki bir mac'ta), ancak şu adresten yardım alarak: http://krypted.com/mac-security/apache2-umasks / apache'nin kendine özgü bir ortam betiği olduğunu keşfetti.

$ sudo vim /usr/sbin/envvars
    umask 002

Muhtemelen diğer cinler, belirli durumlarda yardımcı olabilecek benzer yöntemlere sahiptir.


Ancak bu dosyaya "umask 002" yazmayı nasıl başardınız?!?!? Kök / sudo ve hatta
Apple'a
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.