Pagina 1 di 2

Spegnere NAS con utente non root tramite script o batch

Inviato: venerdì 3 aprile 2020, 12:35
da Valle75
Buongiorno a tutti.
Ho questa necessità che , nonostante aver letto molte soluzioni proposte,sono arrivato molto vicino all'obbiettivo, ma mi mancano gli ultimi dettagli per completare l'operazione.
La mia necessità , che credo probabilmente interessante anche per altri utenti, è comandare lo spegnimento del NAS al termine del backup (es. con Veeam), ma usando un utente "standard" e abilitato comunque solo ed esclusivamente a fare questo spegnimento del nas, spegnimento "dolce" previo arresto di tutti i servizi del nas.
Ho quindi creato l'utente "yourspecialuser" sul nas e , accedendovi con Putty in SSL, riesco a fare lo spegnimento, ma purtroppo, quando digito il comando
sudo -i
per alzare i privilegi e rendere quindi utilizzabile il comando di SHUTDOWN, mi chiede di digitare la password, quindi non posso usarla all'interno di una command line.
Cercando soluzioni , l'unica che mi ha portato vicino all'obbiettivo , è stata di modificare il file

/etc/sudoers e aggiungere la stringa

yourspecialuser ALL = NOPASSWD: ALL

In questo modo non chiede piu' la password e il batch funziona correttamente, poi lanciandolo con il comando "PLINK.EXE", ma in questo modo pero' questo utente che voglio assegnare solo allo spegnimento, cosi' è a tutti gli effetti un utente ROOT, quindi puo' fare tutti i danni che vuole (dato che poi nel comando PLINK devo mettere in chiaro la sua password di accesso).
Mi servirebbe quindi che la configurazione ultima qui sopra nel file /etc/sudoers , permettesse di abilitare l'accesso solo al comando di SHUTDOWN con privilegi elevati, ma provando a usare la stringa modificata qui sotto, non funziona e mi da errore di mancati privilegi.

yourspecialuser ALL = NOPASSWD: /sbin/shutdown

Come si deve cambiare questa stringa per abilitare solo lo spegnimento??
Oppure ci sono altre soluzioni che permettano di risolvere quanto a me necessario, ribadisco usando pero' un utente limitato?

Poi risolto questo, mi servirebbe sapere come poter fermare in modo corretto tutti i servizi del Synology in modo da fare uno spegnimento "dolce", come quello fattibile dall'interno del DSM.

Grazie a tutti!

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: venerdì 3 aprile 2020, 13:30
da burghy86
Ma scusami una volta visto che il veeam finisce il.backup standard dopo 2 ore dal processo.
Presupponendo che il veeam fa il backup alle 23
Impostare da dsm che il nas si spenga alle 00.30 e si riaccenda alle 22.30

In più con i processori intel oramai uso active backup for business e fa tutto lui il backup

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: venerdì 3 aprile 2020, 14:05
da Valle75
Grazie per la risposta.
Già adesso faccio cosi', ma dato che non vorrei tenere acceso il NAS dei backup principale inutilmente e , dato che la dimensione dei backup e delle attività sul NAS di VEEAM non sono sempre cosi' temporaneamente rigide a livello di orario, con questa soluzione mi svincolo da qualunque possibile preimpostazione di spegnimento che puo' risultare o inutilmente lunga o addirittura prematura.

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: venerdì 3 aprile 2020, 17:56
da burghy86
Bo. Un nas è fatto per stare acceso per 24h. Ma capisco di tenerlo offline se lo usi come backup. Allarga la forbice. Fai una media. Veeam ci mette di solito 2/3 ore di media. Metti il riavvio per quella finestra. Sinceramente non mi vado a modificare ssh per questa cosa

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: venerdì 3 aprile 2020, 19:09
da llac
Premesso che per uso il metodo descritto da burghy86 .. probabilmente userei Python che dovrebbe essere è già installato sul tuo nas.

Riferimenti :
https://stackoverflow.com/questions/230 ... ing-python
https://stackoverflow.com/questions/130 ... hon-script

se vuoi archiviare la password in modo criptato sul server in file puoi vedere
https://pypi.org/project/pycrypto/

non sono cintura nera di Python ma con un po di pazienza e un po di "googolate" è possibile farsi degli script interessanti.

Spero di averti aiutato.
Ciao
Luca

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: domenica 5 aprile 2020, 3:15
da dMajo
Lo scedulatore del DSM è in grado di eseguire uno script con dentro il commando shutdown da root

Un workaround potrebbe essere quello di testare per la presenza di un file una specifica cartella. Se trovato lo script sul NAS prima cancella il file e poi esegue lo shutdown. La cartella potrebbe avere accesso al solo utente yourspecialuser e a backup finito è sufficiente copiare il/un file con nome predefinito nella cartella specifica.
Lo script sul NAS può esser schedulato es ogni minuto.

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: lunedì 6 aprile 2020, 15:11
da Valle75
Grazie a tutti per la risposta .

Il Workaround di dMajo è molto interessante e assolutamente utilizzabile, pena solo esporre in visibilità sullo script solo le credenziali dell'utente limitato che accederà alla cartella dove copiare il file DA VERIFICARE dal TAsk di spegnimento del NAS, ma soluzione molto valida.
Grazie mille!!

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: lunedì 6 aprile 2020, 17:21
da dMajo
Valle75 ha scritto: lunedì 6 aprile 2020, 15:11... pena solo esporre in visibilità sullo script solo le credenziali dell'utente limitato ...
Puoi anche creare una nuova condivisione "nascosta dalla rete" con diritto in scrittura a tutti (pubblica) così non necessiti di nessuna psw, nessun utente.
Il PC (task di backup) deve così conoscere l'esatto percorso (es \\NAS\LaMiaCartella) dove copiare o creare un file con nome predefinito (es Spegniti.ora) che farà arrestare il NAS, dopo esser stato prima cancellato ovviamente.
Ovviamente così chiunque abbia accesso in SMB (o tramite file station) al NAS e conosca percorso e nome file può spegnere il NAS

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: mercoledì 15 aprile 2020, 18:13
da Valle75
dMajo ha scritto: domenica 5 aprile 2020, 3:15 Lo scedulatore del DSM è in grado di eseguire uno script con dentro il commando shutdown da root

Un workaround potrebbe essere quello di testare per la presenza di un file una specifica cartella. Se trovato lo script sul NAS prima cancella il file e poi esegue lo shutdown. La cartella potrebbe avere accesso al solo utente yourspecialuser e a backup finito è sufficiente copiare il/un file con nome predefinito nella cartella specifica.
Lo script sul NAS può esser schedulato es ogni minuto.

Ho provato ad usare questa funzionalità, eseguita come utente "root", che ogni x minuti esegue uno script che controlla la presenza di un file, e quando questo file non viene piu' trovato, lancia lo shutdown del NAS, ma purtroppo continua a darmi l'errore di Shutdown non permesso, per mancanza privilegi (nonostante il TASK del NAS riporta che viene eseguito come utente root).
Questo è il mio script:

if [ -f /volumeUSB1/usbshare/test-spegnimento.txt ];
then echo "Il file esiste! ";
else shutdown -P ;
fi

Non capisco perchè.
Grazie.

Re: Spegnere NAS con utente non root tramite script o batch

Inviato: mercoledì 15 aprile 2020, 22:21
da dMajo
Lo shutdown sinceramente non l'ho usato ....
... ma uso diversi script che richiedono diritti root per esser schedulati (come lo smontaggio del disco usb), così:

Codice: Seleziona tutto

sh  /volume1/@appstore/MSHUtils/scripts/TestScript.sh
con utente root, e ovviamente allo script vanno concessi i diritti di esecuzione (io lo faccio via telnet o con webmin)

Hai provato anche da un volume interno? Non vorrei che da USB (fat) non vengano impostati correttamente gli attributi di esecuzione linux.

Ora ho tutti i nas 'muletto' impegnati in test .... eventualmente quando mi si liberano provo