quale autorizzazione per scrivere il file PID in / var / run


51

Ubuntu

touch: impossibile toccare `/var/run/test.pid ': autorizzazione negata

Sto avviando start-stop-daemon e mi piace scrivere il file PID in / var / run start-stop-daemon viene eseguito come my-program-user

L'impostazione / var / run è radice root drwxr-xr-x 9

Mi piace evitare di inserire il mio utente del programma nel gruppo principale.

Risposte:


71

Per impostazione predefinita, è possibile scrivere solo in / var / run come utente con un ID utente effettivo pari a 0 (ovvero come root). Questo per buoni motivi, quindi qualunque cosa tu faccia, non andare e cambiare i permessi di / var / run ... Invece, come root, crea una directory in / var / run:

# mkdir /var/run/mydaemon

Quindi modificare la proprietà dell'utente / gruppo in base al quale si desidera eseguire il processo:

# chown myuser:myuser /var/run/mydaemon

Ora specifica di usare / var / run / mydaemon anziché / var / run.

Puoi sempre testarlo eseguendo un test come utente in questione.


5
Questo ha funzionato bene per me, ma quando ho riavviato il mio server la /var/run/mydaemondirectory era sparita.
myborobudur,

17
Questa non è una risposta completa, / var / run è tmpfs di default su Ubuntu. Ogni volta che il server viene avviato, è necessario rieseguire il comando mkdir e chown.
Tim

1
@Tim come modificare la risposta e completarla?
Kaiser

Se hai a che fare con un demone, una soluzione pulita sarebbe quella di aggiungere il percorso / var / run / mydaemon al file dell'unità systemd come descritto qui . Una soluzione più semplice potrebbe essere quella di aggiungere i comandi mkdir e chown allo script init.d (se presente)
odedfos

1
Una risposta estesa e migliore è qui: superuser.com/a/1127720/71795 una risposta sbagliata che sembra molto elegante è qui: stackoverflow.com/a/5174433 . Riepilogo: utilizzare /tmpo ~.
Tim

13
mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon

questo non funzionerà, poiché andrà perso al prossimo riavvio ( /var/runè un tmpfs su Ubuntu).

L'unica soluzione possibile è eseguire mkdir e chmod come parte degli script di avvio.


3

Puoi provare questo. Creare una directory / var / run / test / e quindi modificare l'autorizzazione di questa directory per lo stesso utente durante l'esecuzione del programma. "chown / var / run / test /". Ora nella tua applicazione cambia la posizione del file PID in /var/run/test/test.pid. Questo dovrebbe far funzionare le cose per te.


2

Che ne dici di usare il bit "appiccicoso" su / var / run?

chmod + t / var / run?

Probabilmente confondere alcune altre app, ma sembra che sarebbe un'altra soluzione.

Per ora, continuerò a creare una cartella / var / run separata.


1

Le voci nel /etc/permissionssono permanenti. Immettere una voce lì per rendere permanenti la proprietà e le autorizzazioni per una directory.


-6

Per evitare di inserire l'utente del programma nel gruppo principale, consentire ad altri utenti l'accesso in scrittura:

# chmod 757

3
Non eseguire mai un chmod 757 su / var / run! Ciò causerebbe un grave problema di sicurezza
michel

1
Questa è un'idea terribile. Ciò causerebbe un problema di sicurezza potenzialmente enorme
Tom O'Connor il

Anche se ignoriamo il problema di sicurezza, chmod 757funzionerà solo fino al prossimo riavvio. Siamo spiacenti di creare una nuova risposta, ma sembra che non ci sia modo di rispondere all'altro commento.
Vladimir Nicolici,

@michel, l'autore non ha mai detto di fare un chmodon /var/run. L'autore potrebbe averlo inteso per la sottodirectory dell'applicazione. Non sono sicuro di cosa sia tutto il clamore.
Acumenus,
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.