Originariamente inviato da
UnixMan
hai ragione, ho visto anche io. Deve essere cambiato qualcosa dopo qualche aggiornamento... il pacchetto che contiene il comando "service" (essendo probabilmente considerato obsoleto e "deprecated" dopo la migrazione a systemd) non viene più installato di default. Al suo posto si potrebbe convenientemente utilizzare l'apposito comando di systemd (systemctl), ma per il momento preferirei evitare di "dipendere" da systemd e mantenere la compatibilità con sistemi basati su Init diversi, per cui ora ho incluso l'installazione di quel pacchetto nello script.
è normale e giusto che sia così: se un utente non è nel gruppo audio, non può accedere in alcun modo (neanche in sola lettura) all'hardware audio (questioni di sicurezza e di privacy... ricorda che i sistemi Unix/Linux sono multiutente).
quella è una cosa di cui normalmente in Linux si occupa "
logrotate"...
Logrotate: configurare la rotazione automatica dei log - Guide@Debianizzati.Org
Per gestire tale funzione la procedura "standard" in Debian (e derivate) consiste banalmente nell'aggiungere un semplice file di configurazione nella directory /etc/logrotate.d/ (cosa di cui normalmente si occupa il pacchetto debian del software di cui si devono gestire i log).
sostanzialmente sì. È una delle cose di cui si deve occupare il pacchetto deb. Il modo migliore è aggiungere un apposito file di configurazione nella directory /etc/sudoers.d/ (ad es. /etc/sudoers.d/squeezelite-web-gui).
come mai?
OK, fin qui mi pare tutto giusto.
la cosa si dovrebbe risolvere banalmente utilizzando "sudo" per tutti i comandi che richiedono l'accesso "all'hardware" e/o a files che non sono accessibili direttamente dall'utente "www-data" (ovviamente previa opportuna configurazione di sudo come detto).
come mai poi hai optato per apache (che mi sembra overkill...) anziché lighttpd?
per esserne certo dovrei provare, ma ad occhio e croce mi sembra corretto.
utilizzare "su" (e/o sudo) è esattamente la cosa da fare ogni qual volta si ha la necessità di impersonare un utente "speciale", però mi pare che continui ad utilizzare sintassi sbagliate per "su":
* il comando "su" non prevede una opzione "-u";
* il comando "su"
non accetta altri comandi da eseguire se non attraverso l'opzione "-c"!
Di solito, la sequenza di comandi può essere banalmente:
codice:
su -
su nome_utente
(cioè prima acquisisci una shell come utente "root" e poi da quella usi i privilegi di root per impersonare un altro utente qualsiasi). Poiché però di solito all'utente "www-data" (così come ad altri utenti "speciali) non è consentito il login e quindi non ha una shell di default valida (come "shell" di default spesso c'è il comando "/usr/sbin/nologin", oppure "/bin/false", ecc) non puoi ottenere direttamente una shell in quel modo. Puoi farlo però ad es. sfruttando l'opzione "-s" di su, così:
codice:
su -
su -s /bin/bash www-data
a quel punto ottieni una shell dalla quale puoi dare qualsiasi comando (come utente "www-data").
N.B.: se invece vuoi dare direttamente un singolo comando, devi fare qualcosa del genere:
codice:
su -
su -s /bin/bash -c "/usr/bin/squeezelite -l" www-data
Incidentalmente l'opzione "-s" esiste, con il medesimo significato, anche in "sudo". Se lo configuri opportunamente, puoi usare "sudo" anziché "su" anche per diventare "www-data" (o qualsiasi altro utente); la cosa più semplice e comoda da fare è aggiungere il tuo utente al gruppo "sudo", ad es. dando (come root) il comando "adduser marco sudo":
La configurazione di default di sudo (/etc/sudoers) dovrebbe già includere una riga come questa:
che consente a tutti gli utenti membri del gruppo "sudo" di eseguire qualsiasi comando impersonando qualsiasi altro utente (fornendo la propria password, non quella dell'utente da impersonare che potrebbe non esistere).
Così facendo puoi diventare "www-data" direttamente dal tuo utente, semplicemente con il comando:
codice:
sudo -s -u www-data
sì.
?? a differenza di Debian (dove sudo di default non c'è e per averlo bisogna mettercelo esplicitamente) in Ubuntu (e derivate) sudo è sempre installato di default, quindi non vedo proprio quale sarebbe la limitazione (casomai è il contrario, è in Debian che obblighi all'installazione di sudo).
Tra parentesi, se la tua web-gui è scritta interamente in Perl (e/o php, o altri linguaggi interpretati), l'eventuale pacchetto deb risulterebbe utilizzabile non solo in Debian ma anche nelle sue derivate, incluse le *buntu (e sarebbe anche del tipo "noarch", cioè indipendente dall'architettura... quindi utilizzabile sia su sistemi i386 ed amd64 che su tutti gli altri quali ARM, ecc).