11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

su<br />

sudo<br />

passwd<br />

Capitolo 13. Coman<strong>di</strong> <strong>di</strong> sistema e d’amministrazione<br />

Nota: Mentre logname visualizza il nome dell’utente connesso, whoami fornisce il nome<br />

dell’utente collegato al processo corrente. Come si è appena visto, talvolta questi non<br />

coincidono.<br />

Esegue un programma o uno script come utente <strong>di</strong>verso. su rjones esegue una shell come utente<br />

rjones. Il semplice su fa riferimento, in modo predefinito, all’utente root. Ve<strong>di</strong> Esempio A-15.<br />

Esegue un comando come root (o altro utente). Può essere utilizzato in uno script, consentendone<br />

così l’esecuzione ad un utente or<strong>di</strong>nario.<br />

#!/bin/bash<br />

# Alcuni coman<strong>di</strong>.<br />

sudo cp /root/secretfile /home/bozo/secret<br />

# Ulteriori coman<strong>di</strong>.<br />

Il file /etc/sudoers contiene i nomi degli utenti autorizzati ad invocare sudo.<br />

Imposta o mo<strong>di</strong>fica la password dell’utente.<br />

passwd può essere utilizzato in uno script, ma questo non dovrebbe essere fatto.<br />

Esempio 13-1. Impostare una nuova password<br />

#!/bin/bash<br />

# setnew-password.sh: A solo scopo <strong>di</strong>mostrativo.<br />

# Non è una buona idea eseguire veramente questo script.<br />

# Deve essere eseguito da root.<br />

UID_ROOT=0 # Root ha $UID 0.<br />

E_UTENTE_ERRATO=65 # Non root?<br />

E_UTENTE_INESISTENTE=70<br />

SUCCESSO=0<br />

if [ "$UID" -ne "$UID_ROOT" ]<br />

then<br />

echo; echo "Solo root può eseguire lo script."; echo<br />

345

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!