Jak ustawić umask dla użytkownika systemu?


14

Czy jest możliwe ustawienie umaskdla użytkownika systemu (utworzonego za pomocą useradd --system username)?

Odpowiedzi:


14

Istnieją trzy normalne sposoby ustawiania umask użytkownika.

  1. Ustawiony UMASKw/etc/login.defs
  2. Dodaj pam_umask.sodo konfiguracji PAM w/etc/pam.d
  3. Ustaw go w plikach startowych powłoki, np /etc/profile

Pod tym względem nie ma różnicy między użytkownikami systemu a zwykłymi użytkownikami.

Ale zakładam, że próbujesz uruchomić demona z niestandardowym umask?

Problem polega na tym, że wszystkie powyższe opcje występują, gdy użytkownik loguje się. Jeśli używasz demona, nigdy się nie loguje. Jest uruchamiany przez init, albo działa jako root, albo wywołuje setuidsię jako użytkownik systemu, który określisz .

Twoje główne opcje to:

  1. umieść umaskw skrypcie init (zrób grep umask /etc/init.d/*przykład)
  2. skonfiguruj init, aby uruchamiał program z niestandardowym umask ( systemd.exec upstart umask )
  3. jeśli używasz start-stop-daemon, przekaż opcję umask
  4. zmodyfikuj sam program, aby wywoływał funkcję umask lub wywołanie systemowe

Czy wiesz, jak ustawić umask dla SSHFS (sftp-server) na Arch Linux (który używa systemd)? Jak wskazałeś, pierwsze 3 wymienione opcje nie mają żadnego efektu.
MountainX

2

Użytkownicy systemu różnią się od „normalnych” na trzy sposoby: wygaśnięcie hasła, katalog domowy (użytkownicy systemu nie mają takiego konta) i UID (użytkownicy systemu są zwykle poniżej pewnego arbitralnego progu).

W ogólnym przypadku prawie nie masz szczęścia. Możesz użyć PAM do ustawienia umask, ale PAM wybiera zachowania na podstawie rzeczy innych niż te trzy różnice.

Innymi słowy, nie można zmusić PAM do rozróżnienia użytkowników „systemowych” i „niesystemowych”. To pozostawia dwie opcje:

  • Albo użyjesz PAM, aby ustawić umask dla wszystkich (np. Odprawa /etc/login.defs), a następnie jawnie ustaw umask dla użytkowników niesystemowych w /etc/bash.bashrc(lub podobnych);

  • Możesz też napisać własny moduł PAM, aby to zrobić. Myślę, że byłoby to mile widziane przez wiele osób, ponieważ ustawianie umask jest powszechną prośbą.

Proszę, odpowiedzcie na to obficie szczyptą soli. Tego rodzaju prośby są dość powszechne i nie byłbym zaskoczony, gdyby istniał teraz lepszy / właściwy sposób.


1
Istnieje już moduł PAM o nazwie pam_umask . Problem polega na tym, że działa tylko podczas logowania.
Mikel

Ach, myślę, że wiedziałeś o pam_umask, ale może nie o pam_succeed_if. Za pomocą pam_succeed_if możesz sprawić, że dowolny inny moduł będzie miał zastosowanie tylko do danego użytkownika lub grupy. Ale nadal nie sądzę, że PAM tutaj pomoże.
Mikel

1

Jak sugeruje @Mikel, jeśli próbujesz skonfigurować konto systemowe, które jest demonem, spróbuj skonfigurować samego demona.

Przyszedłem do tego pytania, szukając sposobu ustawienia umask dla konta _www na MacOS. Chociaż jest to trudne, jak sugerują powyższe odpowiedzi, znalazłem, że mogę to rozwiązać, konfigurując usługę apache jako (w tym przypadku) użytkownik == demon.

Dziwnie nie mogłem znaleźć skryptu uruchamiania (zwykle w /etc/init.d/, ale na komputerze Mac w bibliotece / LaunchDaemons /), ale z pomocą: http://krypted.com/mac-security/apache2-umasks / odkryłem, że apache ma własny skrypt środowiska.

$ sudo vim /usr/sbin/envvars
    umask 002

Możliwe, że inne demony mają podobne metody, które mogą pomóc w określonych przypadkach.


Ale jak udało ci się napisać „umask 002” do tego pliku?!?!? Dostaję błąd odmowy uprawnień nawet jako root / sudo i według Apple nawet
rootom
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.