Modi per impostare umask su Ubuntu per i processi daemon


8

Ho un processo server demone http (imbardate) che vorrei che il server scrivesse qualsiasi nuovo file con un umask di 002, in modo che un altro utente dello stesso gruppo possa modificare, spostare o eliminare i file creati dal processo demone. Questo è su Ubuntu 10.04.

A differenza di Apache, yaws non ha un'opzione di configurazione per umask, quindi quali metodi ci sono per impostare l'umask di qualsiasi processo daemon?

Ho trovato questa risposta sulla modifica dello script init da aggiungere umask 002. Questo ha funzionato, ma non sono sicuro che modificare lo script di init sia il modo migliore per semplificare la documentazione e la configurazione su più macchine.

Ho anche trovato un riferimento al modulo pam_umask qui . Sembra che ciò consenta di configurare le impostazioni per utente di umask nel campo GECOS di / etc / passwd.

Esistono altri modi per impostare umask per i processi daemon? E quale sarebbe il modo raccomandato?

Risposte:


2

Crea un .profilefile nella home directory del demone:

#!/bin/sh
umask 002

Puoi trovare la home directory del demone eseguendo:

getent passwd daemon | awk -F':' '{ print $6; }'

Se non funziona, l'unica altra soluzione a cui riesco a pensare sarebbe quella di modificare lo /etc/init.dscript.


2
demone getent passwd | awk -F ':' {stampa $ 6; } funziona anche.
Janne Pikkarainen,

1
Non è necessario utilizzare sudoper leggere /etc/passwd. O del catresto ( grepaccetterà un nome di file come argomento o semplicemente userà getentcome ha sottolineato Janne).
In pausa fino a nuovo avviso.

Questo non funziona con Ubuntu 10.04. Ciò potrebbe essere dovuto al fatto che / bin / sh è collegato a / bin / dash, ma ho modificato la shell predefinita dei demoni in / bin / bash e ancora non ha funzionato. Penso che ciò sia dovuto al fatto che $ HOME / .profile non viene letto da shell bash o dash non interattive e non di accesso. Non sono riuscito a trovare un modo semplice per dimostrarlo dalla riga di comando. Umask shell interattiva può essere mostrato con sudo -u daemon bash -c umask. Ho provato non interattivo modificando le impostazioni e riavviando il demone e guardando le autorizzazioni sui file che crea.
mp3foley,

@ mp3foley: non ho familiarità con dash, ma umaskdovrebbe lavorarci sopra.
Zaz,

Ho anche posto delle domande sulla mailing list dei demoni (imbardate). Il modo migliore è aggiungere l'impostazione umask nello script di avvio del demone in /etc/init.d/. Qualcuno sta persino correggendo il codice sorgente dei demoni.
mp3foley,

5

Su Ubuntu 10.04 le impostazioni globali umask predefinite possono essere controllate con il modulo pam_umask.

Alcuni dettagli sono stati trovati su questo blog relativi a Debian in generale: http://muzso.hu/2008/01/22/default-permissions-with-libpam-umask

Il modulo pam_umask è installato di default su Ubuntu 10.04, ma deve essere configurato.

Modifica /etc/pam.d/common-session, aggiungendo la riga:

session optional pam_umask.so umask=022

Quindi è possibile modificare le impostazioni per utente eseguendo il comando:

sudo chfn -o "umask=002" daemon_username

per aggiungere un'impostazione umask al campo GECOS in / etc / passwd.

Funziona solo con shell non interattive e non di accesso come quando uno script di avvio daemon viene eseguito all'avvio.

Per le shell di login, le impostazioni di umask devono essere rimosse da altri file di configurazione della shell come / etc / profile, /etc/login.defs o dalla directory home dell'utente .profile, .bashrc, ecc. Altrimenti le impostazioni di pam_umask vengono sovrascritte. Vedi la pagina man pam_umask per l'ordine di configurazione.


1

Se il servizio viene avviato tramite lo strumento "start-stop-daemon", umask può essere specificato a livello di riga di comando con il parametro "--umask", ad es .:

log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --oknodo --exec $DAEMON -b --chuid motion --umask 002 ; then
        log_end_msg 0
    else
        log_end_msg 1
        RET=1
    fi

La regolazione dello script di avvio per leggere tali dettagli da un file di configurazione potrebbe essere più trasparente dell'aggiunta di impostazioni basate sull'utente - questo ovviamente dipende dalla procedura di avvio utilizzata per il demone.

Maggiori informazioni possono essere recuperate da man-Page: man start-stop-daemon

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.