Inserisci Infobox

La logica della sicurezza sui sistemi Unix / Linux

Utenti e root, permessi, attributi, limiti: le proprietà di sicurezza dei sistemi Unix.

Gestione degli Utenti su Linux / Unix
Autore: al - Ultimo Aggiornamento: 2004-09-20 10:27:33 - Data di creazione: 2004-09-20 10:27:33
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Unix è un sistema operativo multiuser che, oltre all'utente root, con privilegi di amministrazione, prevede utenti di sistema (usati per eseguire processi e demoni) e utenti umani che utilizzano e accedono in vario modo alla macchina.
La gestione (aggiunta, modifica, cambio password, cancellazione) degli utenti del sistema è tipicamente compito di root, che ha a disposizione su diversi sistemi Unix variegati programmi grafici o comandi testuali per queste operazioni.

I comandi più comuni e standard per gestire gli utenti sono:
useradd [opzioni] nomeutente Aggiunge un utente al sistema. Prevede varie opzioni per definire impostazioni specifiche.
userdel [opzioni] nomeutente Elimina un'utente. Su molti Unix questo comando non cancella la home directory dell'utente.
groupadd [opzioni] nomegruppo Aggiunge un gruppo.
passwd [nomeutente] Modifica la password. Tutti gli utenti, tranne root, possono cambiare solo la propria password.

Il file con l'elenco di tutti gli utenti è, su tutti i sistemi Linux, /etc/passwd, qui ci sono informazioni sulla login dell'utente, la shell utilizzata, la posizione della sua home directory, dove l'utente può liberamente scrivere dati e documenti.
In tutti i Linux moderni, la password, criptata viene scritta nel file /etc/shadow dove vengono mantenute altre informazioni relative alla gestione della stessa.

Le caratteristiche di /etc/shadow
Autore: al - Ultimo Aggiornamento: 2003-11-28 22:43:34 - Data di creazione: 2003-11-28 22:43:34
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Storicamente su Unix il file /etc/passwd contiene l'elenco di tutti gli utenti e la loro password in forma criptata.
Per la stessa natura di Unix tutti gli utenti devono poter aver accesso in lettura a questo file, per cui l'esporre le password di tutti, seppur criptate, risultava rischioso per la sicurezza del sistema.

Su tutti i Linux e gli Unix non troppo vecchi, la gestione della password è stata migliorata sia in termini di sicurezza che di versatilità affiancando al normale /etc/passwd la gestione del file /etc/shadow che introduce nuove funzionalità:
- Questo file è leggibile solo da root mentre viene lasciato l'accesso il lettura a /etc/passwd per tutti gli utenti;
- Le password in /etc/shadow sono criptate con algoritmi più complessi e robusti;
- E' possibile gestire il tempo di scadenza, la durata minima e massima e i tempi di notifica della password.

Notare che:
- se la password è scritta in /etc/shadow, in /etc/passwd c'è solo una x al posto della password criptata.
- se in /etc/passwd il campo password è un * , la password è nulla e l'utente non può accedere al sistema.

/etc/passwd
Autore: Eberk - Ultimo Aggiornamento: 2003-11-28 23:04:51 - Data di creazione: 2003-11-28 23:04:51
Tipo Infobox: PATH - Skill: 2- JUNIOR

Il file /etc/passwd è il database degli utenti su ogni sistema Unix. Ad ogni user è dedicata una riga che definisce quali sono i suoi principali attributi. Sui sistemi Unix meno recenti in questo file viene scritta anche la password (criptata), su quelli più recenti viene scritta, generalmente, in /etc/shadow, che ha maggiori restrizioni in termini di sicurezza.

Le righe di /etc/passwd si presentano nella seguente forma:
Username:Password:UserID:GroupID:Info:HomeDirectory:Shell

Username: Nome dell'user, la login con cui può accedere al sistema;
Password: Campo riservato alla password dell'utente. Può essere scritta direttamente in forma criptata o esserci semplicemente una x (la password c'è ma è scritta altrove, di solito in /etc/shadow). Se c'è un * (asterisco) significa che l'utente o non ha una password o la password non è valida (in questo caso non gli è permesso di login);
UserID: ID dell'user;
GroupID: ID del gruppo di appartenenza;
Info: Contiene informazioni sull'utente non necessarie al sistema (nome esteso, numero di telefono, mail ecc...);
HomeDirectory: Indica la directory della home dell'utente;
Shell: Indica la shell di default per quell'utente.

Un esempio:
[diego@vagante diego]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[...]
diego:x:501:503::/home/diego:/bin/bash

/etc/shadow
Autore: Eberk - ( Revisione: al ) - Ultimo Aggiornamento: 2003-11-28 23:07:52 - Data di creazione: 2003-11-28 23:07:52
Tipo Infobox: PATH - Skill: 2- JUNIOR

Il file /etc/shadow è il database delle password sui Unix più evoluti. In esso sono elencate per ogni utente la password (criptata) e vari parametri ad essa connessi (ultima modifica, durata massima e minima, ecc...). Ad esso fanno riferimento diversi files, fra cui /etc/passwd e tutti i comandi per la gestione degli utenti (useradd, userdel, usermod).

Le righe in /etc/shadow si presentano nella seguente forma:
Username:password:lastchange:min:max:warn:inactive:expire:

Username: Il nome dell'utente a cui fa riferimento la password;
Password: Password criptata (13 caratteri). Puo assumere anche altri valori quali * (asterisco) che sta ad indicare che l'utente è disabilitato e !! (o nessun carattere) che significa che l'utente non ha password (cosa molto pericolosa in termini di sicurezza);
lastchange: Numero di giorni compresi fra il 1 gennaio 1970 e l'ultima modifica della password;
min: Minimo numero di giorni dall'ultima data di modifica prima di poter nuovamente cambiare la password;
max: Durata massima della password (sempre in giorni);
warn: Numero di giorni di preavviso all'utente prima di invalidare la password;
inactive: Numero di giorni di inattività possibili per quell'utente.
expire: Data dopo la quale quel login non può più essere usato.

Un esempio da un RedHat Linux standard evidenzia che di default non sono previste scadenze per la password e vari altri parametri:
[diego@vagante diego]$ cat /etc/passwd
:root:$1$ÐQEXe5ÀJ$Jffvxi5UaGHpaMckCsKH0:11628:0:99999:7:::
:daemon:*:11628:0:99999:7:::
[...]
:xfs:!!:11628:0:99999:7:::

/etc/group
Autore: Eberk - Ultimo Aggiornamento: 2003-11-28 23:09:49 - Data di creazione: 2003-11-28 23:09:49
Tipo Infobox: PATH - Skill: 2- JUNIOR

Il file /etc/group contiene l'elenco dei gruppi di utenti presenti nel sistema. Ad ogni gruppo è associata una riga nella quale si trova l'IDgroup e l'elenco degli utenti che ne fanno parte.
Alcuni Unix creano un nuovo gruppo per ogni nuovo utente, altri hanno il gruppo "users" in cui vengono automaticamente inseriti tutti gli utenti aggiunti al sistema.
Di fatto i gruppi servono per gestire con maggiore flessibilità l'accesso ai file e di conseguenza l'uso delle risorse.

Le righe di /etc/group si presentano nella seguente forma:
GroupName:Password:GroupID:User1,User2,...,UserN

GroupName: Indica il nome del gruppo;
Password: Indica la password del gruppo. Solitamente non viene data una password al gruppo ma solo ai singoli utenti;
GroupID: Indica l'ID associato a quel gruppo;
User1,User2,...,UserN: E' l'elenco degli users appartenenti a quel gruppo. I nomi dei singoli users devono essere sparati da una virgola.

Un esempio:
[diego@vagante diego]$  cat /etc/group
root:x:0:root
bin:x:1:root,bin,daemon
[...]
wheel:x:10:root,macno

lastlog
Autore: al - Ultimo Aggiornamento: 2004-05-21 19:45:02 - Data di creazione: 2004-05-21 19:45:02
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Formatta e visualizza informazioni relative all'ultimo login di tutti gli utenti del sistema.
Ottiene le proprie informazioni dal file /var/log/lastlog.

lastlog [-u login] [-t giorni]
-u login Visualizza l'ultimo login solo dell'utente specificato
-t giorni Visualizza i last login effettuati negli ultimi giorni indicati (es: -t 2)

last
Autore: al - Ultimo Aggiornamento: 2002-08-13 19:21:57 - Data di creazione: 2002-08-13 19:21:57
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Visualizza l'elenco degli ultimi accessi al sistema, elencando nome utente, data, console utilizzata, IP e durata della sessione. Ottiene queste le informazioni da /var/log/wtmp.
Una versione leggermente diversa è lastb che visualizza le login di accesso al sistema fallite (ha bisogno del file /var/log/btmp, se esiste).

last [-R] [-righe] [-adx] [ -f file ] [nome_utente] [tty]
-righe, -n righe Specifica quante righe mostrare (es: -n 10)
-f file Specifica un file alternativo a /var/log/wmtp dove trovare le informazioni relative ai login.
nome_utente Visualizza solo le informazioni di login dell'utente specificato.
tty Visualizza solo le informazioni di login del terminale specificato (es: pts/0 )

Utente root e operazioni da superuser
Autore: al - Ultimo Aggiornamento: 2005-06-17 13:46:18 - Data di creazione: 2004-05-21 19:51:24
Tipo Infobox: TIPS - Skill: 2- JUNIOR

Alcuni sysadm particolarmente sensibili a problematiche di sicurezza e controllo ritengono che non si dovrebbe mai amministrare la macchina come utente root, ma utilizzare esclusivamente un utente normale e, quando è necessario, "diventare" root per eseguire funzioni da superuser.

Con il comando su si può impersonificare (sapendo la password) qualsiasi utente (di default, se non viene specificato "su nomeutente", questo comando si utilizza per diventare root).
Se si è già loggati come root è possibile impersonificare qualsiasi utente senza dover digitare la password.
E' raccomandabile non permettere l'accesso remoto, via telnet, ssh o analoghi, direttamente all'utente root.

Il comando sudo permette di accordare a semplici utenti la possibilità di eseguire comandi che solo root potrebbe lanciare. Le policy su chi può fare cosa sono definite nel suo file di configurazione /etc/sudoers.
Quando si usa sudo viene richiesta la password dell'utente stesso (non quella di root), sempre se l'utente è autorizzato ad eseguire il comando richiesto.
Con sudo -s di fatto viene aperta una shell di root, dalla quale è poi possibile operare con i diritti del superuser.

Su alcuni sistemi, la password di root può essere disattivata e ogni attività da superuser viene fatta tramite sudo.

Introduzione a sudo
Autore: neo - Ultimo Aggiornamento: 2003-05-05 15:27:41 - Data di creazione: 2003-05-05 15:27:41
Tipo Infobox: DESCRIPTION - Skill: 4- ADVANCED

Sudo (superuser do) è un utility che permette di eseguire comandi con i permessi di un altro utente, tipicamente utilizzato per eseguire comandi che solamente root potrebbe lanciare.

sudo è un ottima soluzione per gestire e controllare gli accessi e le azioni degli utenti, sia perchè permette di eseguire comandi che tipicamente un utente normale non potrebbe sia perchè offre la possibilità di loggare nei minimi dettagli qualsiasi azione.
Inoltre se si aggiunge il vantaggio di non dover utilizzare l'account di root per le normali operazioni di amministrazione come ad esempio riavvio di un servizio, assicura un certo vantaggio in ambito sicurezza oltre che limitare in modo ulteriore la conoscenza della password di root.
Le principali feature di questa utility sono:
- Limitare o permettere  la possibilità di eseguire un certo comando ad un gruppo o ad un singolo utente
- Logging, per ogni comando eseguito.
- Ticketing system, ovvero è possibile configurare sudo in modo tale che ogni volta che viene invocato, l'utente possa inserire una sola volta la password anche in caso di una sequenza di comandi. Ovviamente dopo un certo timeout configurabile verrà richiesta nuovamente la password.
- La struttura del file di configurazione permette una configurazione centralizzata, un file di configurazione valido per più host.

Installazione
Il download dei sorgenti è possibile dall'home page ufficiale: http://www.sudo.ws/dist/, mentre per il download dei rpm è possibile appoggiarsi a http://www.rpmfind.net
[root@SATURNO root]# wget http://www.sudo.ws/dist/sudo-1.6.7p3.tar.gz
--14:53:03--  http://www.sudo.ws/dist/sudo-1.6.7p3.tar.gz
           => `sudo-1.6.7p3.tar.gz'
[...]
[root@SATURNO root]# tar zxvf sudo-1.6.7p3.tar.gz
sudo-1.6.7p3/
sudo-1.6.7p3/alloc.c
sudo-1.6.7p3/alloca.c
sudo-1.6.7p3/check.c
sudo-1.6.7p3/def_data.c
sudo-1.6.7p3/defaults.c
[...]

Nel caso in cui si vogliano utilizzare le impostazioni di default occorre semplicemente lanciare lo script configure seguito da make e make install, per personalizzare l'installazione occorre specificare le singole opzioni con lo script configure, ecco alcuni esempi di interessanti opzioni:
--disable-root-sudo Non permette a root di eseguire sudo
--disable-path-info Printa a video 'command not allowed' al posto di 'command not found'
--without-passwd Disabilita l'utenticazione tramite passwd o shadow
--with-insults Insulta l'utente che sbaglia la password

Esempio di compilazione:
Lancio dello script configure per la creazione del Makefile
[root@SATURNO sudo-1.6.7p3]# ./configure  --prefix=/usr --with-pam --with-insults --with-all-insults
[...]
checking for log file location... /var/log/sudo.log
checking for timestamp file location... /var/run/sudo
configure: creating ./config.status
config.status: creating Makefile
config.status: creating sudo.man
config.status: creating visudo.man
config.status: creating sudoers.man
config.status: creating config.h
config.status: creating pathnames.h
configure: You will need to customize sample.pam and install it as /etc/pam.d/sudo
Creazione del file di configurazione per PAM, il file di esempio all'interno dei sorgenti (sample.pam) è utilizzabile solo in due due casi, quello attivo di default (non commentato) permette di autenticare l'utente tramite /etc/passwd , il secondo non attivo (commentato) prevede l'uso di un Master domain controller per l'autenticazione utente
[root@SATURNO sudo-1.6.7p3]# cp sample.pam  /etc/pam.d/sudo
[root@SATURNO sudo-1.6.7p3]# cat /etc/pam.d/sudo
#%PAM-1.0
[...]
#auth      required    /lib/security/pam_smb_auth.so
auth       required    /lib/security/pam_pwdb.so shadow nullok
Compilazione e installazione
[root@SATURNO sudo-1.6.7p3]# make
gcc -c -I. -I.  -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440  check.c
gcc -c -I. -I.  -O2 -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440  env.c
[...]
[root@SATURNO sudo-1.6.7p3]# make install
/bin/sh ./mkinstalldirs /usr/bin \
    /usr/sbin /etc \
    /usr/man/man8 /usr/man/man5
mkdir /usr/man
[...]


Configurazione
Il file di configurazione di sudo è /etc/sudoers modificabile tramite l'utility visudo, che risulta essere un editor con gli stessi comandi di vi con il plus del check della sintassi del file.
La sintassi del file di configurazione prevede due parti:
- aliases (opzioni e variabili di base):
Creazione di gruppi di utenti
User_Alias     ADMINS = neo, led
User_Alias     OPERATORS = pippo, nobody
Creazione di gruppi di comandi
Cmnd_Alias    SHUTDOWN = /usr/sbin/shutdown, /usr/bin/halt,  /usr/bin/reboot
Creazione di gruppi di host
Host_Alias     SERVERS = ns, www, mail
Host_Alias     WORKSTATION = saturno, dido, trinity


- user specifications (opzioni e variabili specifici dell'utente, chi ,cosa e come  può eseguire):
L'utente root può eseguire qualunque comando, in qualunque host come se fosse qualunque utente
root           ALL = (ALL) ALL
Tutti gli utenti appartenenti al gruppo ADMINS possono lanciare qualsiasi comando senza inserire una password
ADMINS     ALL = NOPASSWD: ALL
Tutti gli utenti appartenenti al gruppo OPERATOR possono lanciare i comandi relativi al gruppo SHUTDOWN
OPERATORS  WORKSTAION = SHUTDOWN


Ulteriori esempi si possono trovare all'interno dei sorgenti sample.sudoers o al seguente indirizzo: http://www.courtesan.com/sudo/man/sudoers.html#examples.

su
Autore: al - Ultimo Aggiornamento: 2002-08-13 18:38:55 - Data di creazione: 2002-08-13 18:38:55
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Permette di aprire una shell avendo i permessi di un altro utente. Se non viene specificato l'utente, viene usato il superuser (root) di default. Se l'operazione comporta un aumento dei propri poteri viene richiesta la password dell'utente specificato.
Presente anche in Unix, in alcuni casi con la sola opzione -.

su [opzioni] [-] [-c comando] [nome_utente] [argomenti_shell]
-, -l, --login Invoca la shell eseguendo tutti i relativi script di startup e ricreando l'environment dell'utente (se non specificato viene mantenuto l'environment dell'utente che l'ha eseguito)
-c comando Esegue il comando specificato in una nuova shell e termina immediatamente.

sudo
Autore: neo - Ultimo Aggiornamento: 2003-05-05 21:05:20 - Data di creazione: 2003-05-05 21:05:20
Tipo Infobox: COMMANDS - Skill: 3- INTERMEDIATE

Utility che permette di eseguire un comando come se fosse un altro utente.
Tipicamente utilizzato per lanciare comandi come root da utenti "normali".

sudo [opzioni]  commando
Opzioni comunemente utilizzate:
-l Visualizza i comandi permessi e negati dell'utente corrente
-b Esegue il comando in background
-s Esegue la shell dell'utente specificato, se non si specifica nessun utente viene richiamata una shell con i permessi di root
-p prompt Visualizza il "prompt" specificato e sovrascrive quello di default
-a auth_type   Specifica il tipo di autenticazione utente utilizzato da sudo
-u username|#uid Specifica con quale utente dovrà essere lanciato il comando, se l'opzione è omessa sudo interpreterà il comando come se dovesse lanciare il comando da utente root

Esempi:
Lancio di un singolo comando
[neo@dido neo]$ sudo /etc/rc.d/init.d/cups restart
Password:
Stopping cups:                                             [  OK  ]
Starting cups:                                             [  OK  ]
Richiamare la shell di root
[neo@dido neo]$ sudo -s
Password:
[root@dido neo]#
Visualizzazione dei comandi che si possono lanciare tramite sudo:
[neo@dido neo]$ sudo -l
User neo may run the following commands on this host:
    (ALL) ALL

visudo
Autore: neo - Ultimo Aggiornamento: 2003-04-07 22:54:58 - Data di creazione: 2003-04-07 22:54:58
Tipo Infobox: COMMANDS - Skill: 4- ADVANCED

Utility per l'editing del file di configurazione di sudo: /etc/sudoers.
Di fatto è un editor come vi con la possibilità di eseguire controlli sulla sintassi del file sudoers.

visudo [ -c ] [ -f sudoers ] [ -q ] [ -s ] [ -V ]
-c Abilita solo il check del file di configurazione
-f sudoers Specifica il file di configurazione
-q Abilita il quiet mode, nemmeno gli errori di sintassi vengono segnalati
-s Abilita lo strict check

Check della sintassi del file di configurazione:
[root@SATURNO sudo-1.6.7p3]# visudo -c
/etc/sudoers file parsed OK

ulimit -a
Autore: al - Ultimo Aggiornamento: 2003-06-25 00:35:28 - Data di creazione: 2003-06-25 00:35:28
Tipo Infobox: BOFH - Skill: 3- INTERMEDIATE

Visualizza tutte le impostazioni correnti sui limiti di utilizzo delle risorse del sistema considentiti agli utenti. Fra i parametri su cui si possono settare limiti ci sono: dimensione del file di coredump (core), dimensione della memoria utilizzabile, numero dei processi che possono essere eseguiti dal'utente ecc.
Alcune di queste limitazioni e altre, tra cui il numero massimo di login contempomporanee per utente, si possono solitamente configurare in /etc/security/limits.conf.

[al@socrate al]$ ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 4095
virtual memory        (kbytes, -v) unlimited

/etc/login.defs
Autore: neo - Ultimo Aggiornamento: 2003-11-28 23:16:22 - Data di creazione: 2003-11-28 23:16:22
Tipo Infobox: PATH - Skill: 3- INTERMEDIATE

File di configurazione, sui Linux basati sulla distribuzione RedHat che contiene tutte le opzioni di default sugli utenti del sistema.

[neo@dido skel]$ cat /etc/login.defs
# *REQUIRED*
#   Directory where mailboxes reside, _or_ name of file, relative to the
#   home directory.  If you _do_ define both, MAIL_DIR takes precedence.
#   QMAIL_DIR is for Qmail
#

#QMAIL_DIR    Maildir
MAIL_DIR    /var/spool/mail
#MAIL_FILE    .mail
# Password aging controls:
#
#    PASS_MAX_DAYS    Maximum number of days a password may be used.
#    PASS_MIN_DAYS    Minimum number of days allowed between password changes.
#    PASS_MIN_LEN    Minimum acceptable password length.
#    PASS_WARN_AGE    Number of days warning given before a password expires.
#

PASS_MAX_DAYS 99999
PASS_MIN_DAYS    0
PASS_MIN_LEN    5
PASS_WARN_AGE    7
#
# Min/max values for automatic uid selection in useradd
#

UID_MIN             500
UID_MAX        60000
#
# Min/max values for automatic gid selection in groupadd
#

GID_MIN              500
GID_MAX          60000
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#

#USERDEL_CMD    /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is ORed with the -m flag on
# useradd command line.
#

CREATE_HOME    yes

I permessi sui file Unix
Autore: al - Ultimo Aggiornamento: 2002-08-21 22:09:07 - Data di creazione: 2002-08-21 22:09:07
Tipo Infobox: DESCRIPTION - Skill: 2- JUNIOR

Tutti i sistemi Unix hanno una gestione standard dei permessi sui file, che rispecchia la natura di sistema operativo multiutente.

I permessi possono essere di lettura, scrittura e esecuzione e vengono differenziati sulla base della natura dell'utente rispetto al file o directory:
- utente proprietario owner del file
- gruppo proprietario owner group del file
- gli altri utenti others, che sono l'owner e non appartegono all'owner group.
Il permesso di esecuzione è necessario per poter accedere a delle directory e, ovviamente, permette l'esecuzione di file (script shell, perl, php, cgi; programmi binari compilati).

Per visualizzare i permessi di un file basta usare il comando ls -l che per ogni file da un output simile a:
-rwxr-xr-- 1 mark admins 77266 Dec 13 17:18 /bin/command.sh
La prima colonna, composta da 10 caratteri, descrive i permessi sul file /bin/command.sh.
Il primo carattere (nell'esempio: -) identifica il tipo di file (directory, pipe, block o char device, symlink...);
I successivi 3 caratteri identificano i permessi in lettura/scrittura/esecuzione dell'owner di /bin/command.sh (in questo caso l'owner mark ha tutti i permessi sul file: rwx );
I successivi 3 identificano i permessi del gruppo owner di /bin/command.sh (in questo caso il gruppo admins ha permesso di lettura ed esecuzione sul file: r-x );
I successivi 3 identificano i permessi di tutti gli altri utenti del sistema (in questo caso hanno solo il permesso di lettura: r-- ).
Le successive colonne nell'output di ls -l indicano l'owner, il gruppo, la dimensione in byte, la data di ultima modifica e il nome del file.

Per modificare i permessi dei file si usa il comando chmod che usa una duplice sintassi per indicare i permessi:
read - lettura: Flag r in symbolic mode; Valore 4 in octal mode
write - scrittuta: Flag w in symbolic mode; Valore 2 in octal mode
execute - esecuzione: Flag x in symbolic mode; Valore 1 in octal mode

chown
Autore: al - Ultimo Aggiornamento: 2004-05-23 15:47:52 - Data di creazione: 2004-05-23 15:47:52
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Modifica il proprietario di uno più file. Può essere fatto solo da root o dal proprietario corrente del file.
E' un comando comune in tutti gli Unix.

chown [opzioni] nuovo_proprietario file
chown [opzioni] nuovo_proprietario:nuovo_gruppo file

-c (--changes) Visualizza informazioni sui file che vengono modificati
-R (--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine Applica al file specificato nella riga di comando lo stesso proprietario che ha file_origine
-f (--silent) Non stampa messaggi di errore sui file che non possono essere modificati
-v (--verbose) Visualizza dettagliate informazioni su ogni file che chown tenta di modificare.

Esempi
chown al /var/tmp/alien Imposta al come propietario del file /var/tmp/alien
chown beppe:beppe /home/file Imposta owner beppe e group owner beppe al file /home/file

chmod
Autore: al - Ultimo Aggiornamento: 2003-11-28 22:22:34 - Data di creazione: 2003-11-28 22:22:34
Tipo Infobox: COMMANDS - Skill: 2- JUNIOR

Modifica gli attributo di accesso su uno o più file. Solo il proprietario del file, o l'utente root, può modificarne gli attributi. E' un comando comune in tutti gli Unix.

chmod [opzioni] modo file
-c (--changes) Visualizza informazioni sui file che vengono modificati
-R (--recursive) Applica le modifiche alla directory indicata e a tutte le sue sottodirectory
--reference=file_origine Applica al file specificato nella riga di comando gli stessi permessi che ha file_origine
-f (--silent) Non stampa messaggi di errore sui file che non possono essere modificati

Esistono due diversi modi per definire i permessi su un file:

SYMBOLIC MODE
I permessi vengono definiti nella forma: chi-opcode-permesso.
CHI può essere:
u USER - Utente proprietario del file
g GROUP - Gruppo proprietario del file
o OTHER - Altri utenti
a ALL - Tutti gli utenti del sistema (default)
OPCODE può essere:
+ Aggiunge un permesso
- Rimuove un permesso
= Assegna un permesso (e rimuove tutti quelli non specificati)
PERMESSO può essere:
r READ - Lettura sul file
w WRITE - Scrittura sul file
x EXECUTE - Esecuzione del file (o apertura della directory)
s SET USER ID - Il file (comando) viene eseguito con i permessi dell'owner sul file system, anche quando viene eseguito da altri utenti. Questo attributo è a volte necessario in alcuni comandi lanciati da utenti normali che hanno accesso sul sistema con i permessi di root (es: traceroute).
t STICKY BIT - Normalmente un utente può cancellare tutti i file contenuti in una directory su cui ha permesso di scrittua, anche se non ha permessi di scrittura sul file stesso. Con lo Sticky bit impostato, ciò non è possibile: l'utente può cancellare il relativo file solo se ha permessi di scrittura sul file stesso
u Lascia i permessi correnti dell'utente owner
g Lascia i permessi correnti del gruppo owner
o Lascia i permessi correnti per gli altri utenti

OCTAL MODE
E' un metodo alternativo che permette di definire i permessi con un numero ottale composta da tre cifre:
la prima indica i permessi per l'utente owner, la seconda per il gruppo, la terza per gli altri.
I permessi vengono calcolati sommando i seguenti valori ottali:
4 - Lettura
2 - Scrittura
1 - Esecuzione.
In questo modo il permesso di lettura+scrittura+esecuzione si indica con il numero 7 (4+2+1), il permesso di lettura, esecuzione con 5 (4+1) e così via.
E' inoltre possibile indicare una quarta cifra (da far precedere alle 3 usuali) per permettere l'assegnamento dei seguenti permessi spciali:
4 - Imposta lo UserId per l'esecuzione
2 - Imposta il GroupID
1 - Imposta lo sticky bit.

Esempi
Per impostare i permessi totali all'owner, e solo in lettura a tutti gli altri si hanno le seguenti possibilità:
chmod 744 /home/file
chmod u=rwx,go=r /home/file


Per impostare permessi di sola lettura per l'owner e il group e nessun permesso per gli altri:
chmod 440 /home/file
chmod ug=r,o-rwx /home/file


Per impostare totali permessi per tutti gli utenti su un file:
chmod 777 /home/file
chmod ugo=rwx /home/file


Per impostare lo sticky bit su un file e permessi totali solo per l'owner e di sola lettura per il group:
chmod 1740 /home/file
chmod u=srwx,g=r,o-rwx

chattr
Autore: kaharoth - Ultimo Aggiornamento: 2002-12-18 19:24:02 - Data di creazione: 2002-12-18 19:24:02
Tipo Infobox: COMMANDS - Skill: 3- INTERMEDIATE

chattr imposta gli attributi di un file su un file system linux di tipo ext2/ext3.
Andando a lavorare su particolari  attributi peculiari di questi file system chattr non è un comando unix standard.

chattr  [-RV] [-v versione ] [+/-= attrib]  file ...
-R Ricorsivo
-V Stampa gli attributi modificati
-v versione Imposta la versione di un file.

Attributi
a il file può essere aperto solo in append mode.
c il file è compresso/decompresso dal kernel su disco  
d Non verrà eseguito il backup su di esso dall' utility dump.
i Il file non può essere modificato in alcun modo.
s Il file è cancellato e i suoi blocchi sono azzerati e scritti su disco.
S I cambiamenti sono scritti in modo sincrono su disco
u Il file è cancellato e il suo contenuto è salvato per un eventuale ripristino.

NB: gli attributi 'c' ed 'u' non sono attualmente implementati.

find / \( -perm -04000 -o -perm 02000 \) -ls
Autore: al - Ultimo Aggiornamento: 2002-12-18 19:49:14 - Data di creazione: 2002-12-18 19:49:14
Tipo Infobox: BOFH - Skill: 4- ADVANCED

Cerca all'interno di tutto il file system i file o le directory che hanno impostato il bit setuserid o setgroupid, che permettono l'esecuzione di comandi con privilegi di root anche da parte di utenti normali e rappresentano un potenziale problema di sicurezza.
La quantità di simili file su un normale sistema Unix è notevole. Segue un esempio su una RedHat 8.0 con installazione di default.

[root@51 al]# find / \( -perm -04000 -o -perm -02000  \) -ls
289237    4 drwxr-sr-x   2 root     ftp          4096 Jun 23 15:50 /var/ftp/pub
320100   40 -rwsr-xr-x   1 root     root        37688 Aug 29 23:20 /usr/bin/chage
320102   36 -rwsr-xr-x   1 root     root        35000 Aug 29 23:20 /usr/bin/gpasswd
320431   12 -r-xr-sr-x   1 root     tty         10224 Jul 19 04:14 /usr/bin/wall
320527   20 -rws--x--x   1 root     root        16835 Aug 30 22:00 /usr/bin/chfn
320528   16 -rws--x--x   1 root     root        15664 Aug 30 22:00 /usr/bin/chsh
320546    8 -rws--x--x   1 root     root         6999 Aug 30 22:00 /usr/bin/newgrp
320557   20 -rwxr-sr-x   1 root     tty         18605 Aug 30 22:00 /usr/bin/write
320568   40 -rwsr-xr-x   1 root     root        37140 Jul 25 04:45 /usr/bin/at
321011   16 -r-s--x--x   1 root     root        15368 May 28  2002 /usr/bin/passwd
321016   20 -rwxr-sr-x   1 root     mail        17477 Jun 24 01:09 /usr/bin/lockfile
321081   20 -rwsr-xr-x   1 root     root        19131 Jun 24 02:05 /usr/bin/rcp
321083   16 -rwsr-xr-x   1 root     root        15376 Jun 24 02:05 /usr/bin/rlogin
321084   12 -rwsr-xr-x   1 root     root        10689 Jun 24 02:05 /usr/bin/rsh
321099   32 -rwxr-sr-x   1 root     slocate     31661 Jun 24 02:22 /usr/bin/slocate
321103   88 ---s--x--x   1 root     root        84984 Jun 28 01:57 /usr/bin/sudo
321122   36 -rwsr-xr-x   1 root     root        34662 Jul 20 00:51 /usr/bin/crontab
321795   12 -rwsr-xr-x   1 root     root         8345 Sep  5 15:19 /usr/bin/desktop-create-kmenu
321803   20 -rwsr-xr-x   1 root     root        17743 Sep  5 14:06 /usr/bin/kcheckpass
321814   64 -rwxr-sr-x   1 root     root        60955 Sep  5 14:33 /usr/bin/kdesud
244475    8 -rws--x--x   1 vcsa     root         7491 Aug 23 21:32 /usr/lib/mc/bin/cons.saver
64012    8 -rwsr-xr-x   1 root     root         5100 Sep  6 00:58 /usr/libexec/pt_chown
144607  164 -rws--x--x   1 root     root       162476 Aug 14 06:08 /usr/libexec/openssh/ssh-keysign
96111   36 -rwsr-xr-x   1 root     root        33071 Jun 23 20:14 /usr/sbin/ping6
96115   16 -rwsr-xr-x   1 root     root        13718 Jun 23 20:14 /usr/sbin/traceroute6
96515   16 -rwxr-sr-x   1 root     utmp        15570 Jun 24 03:00 /usr/sbin/utempter
96526   16 -rwsr-xr-x   1 root     root        15502 Sep  4 19:23 /usr/sbin/usernetctl
96544   32 -rws--x--x   1 root     root        29676 Sep  4 22:32 /usr/sbin/userhelper
96755   12 -rwsr-xr-x   1 root     root        10205 Jul  1 19:27 /usr/sbin/userisdnctl
97243   16 -rwxr-sr-x   1 root     utmp        13414 Aug 30 00:54 /usr/sbin/gnome-pty-helper
96932   16 -rwxr-sr-x   1 root     lock        12325 Jun 23 22:26 /usr/sbin/lockdev
97254  744 -rwxr-sr-x   1 root     smmsp      754801 Aug 29 21:38 /usr/sbin/sendmail.sendmail
97397   32 -rwsr-xr-x   1 root     root        32076 Jun 24 02:41 /usr/sbin/traceroute
100260   20 -r-s--x---   1 root     apache      20469 Sep  4 23:23 /usr/sbin/suexec
100385  100 -rwxr-sr-x   1 root     postdrop    95744 Jul 24 13:20 /usr/sbin/postdrop
100391   88 -rwxr-sr-x   1 root     postdrop    84885 Jul 24 13:20 /usr/sbin/postqueue
98934 1844 -rws--x--x   1 root     root      1884018 Sep  6 05:29 /usr/X11R6/bin/XFree86
160313   36 -rwsr-xr-x   1 root     root        35302 Jun 23 20:14 /bin/ping
160390   88 -rwsr-xr-x   1 root     root        81996 Aug 30 22:00 /bin/mount
160391   40 -rwsr-xr-x   1 root     root        40700 Aug 30 22:00 /bin/umount
160416   20 -rwsr-xr-x   1 root     root        19132 Aug 29 22:56 /bin/su
176244    8 -r-s--x--x   1 root     root         7132 Aug  2 17:08 /sbin/pam_timestamp_check
176245  124 -r-sr-xr-x   1 root     root       119592 Aug  2 17:08 /sbin/pwdb_chkpwd
176246   20 -r-sr-xr-x   1 root     root        17180 Aug  2 17:08 /sbin/unix_chkpwd
176279   16 -rwxr-sr-x   1 root     root        12578 Sep  4 19:23 /sbin/netreport

Windows Command-line: Runas
Autore: homer - Ultimo Aggiornamento: 2003-05-11 20:01:32 - Data di creazione: 2003-05-11 20:01:32
Tipo Infobox: ETCETERA - Skill: 3- INTERMEDIATE

Runas nei sistemi Windows di tipo multiuser, quindi versioni Professional e Server, permette di eseguire programmi con autorizzazioni relative ad utenti diversi da quello corrente

In modo simile al comando SU presente in ambienti Unix/Linux, runas viene utilizzato, tipicamente da un amministratore per eseguire, da console, operazioni che richiedono privilegi elevati.

Sintassi:
runas [parametri] /user:<NomeAccountUtente> programma

I parametri:
/profile: Carica il profilo dell'utente, questa impostazione è utilizzata di default;
/no profile: Specifica che il profilo dell'utente non deve essere caricato.  In questo modo l'applicazione viene caricata più rapidamente, ma alcune applicazioni potrebbero non funzionare correttamente;
/env: Specifica l'ambiente di rete corrente da utilizzare in sostituzione dell'ambiente locale dell'utente;
/netonly: Indica che le informazioni dell'utente specificate si riferiscono soltanto all'accesso remoto;
/smartcard: Indica se le credenziali devono essere fornite da una smart card;
/showtrustlevels Elenca le opzioni /trustlevel;
/trustlevel Specifica il livello di autorizzazione con il quale eseguire l'applicazione;
/user:<NomeAccountUtente> Specifica il nome dell'account utente con cui eseguire il programma;
Il formato dell'account utente deve essere utente@dominio oppure Dominio\Utente;
program Specifica il programma o il comando da eseguire utilizzando l'account specificato in /utente;
/? Visualizza l'help del comando;

Un esempio:
J:\Documents and Settings\Homer>runas /user:ENIGMA\administrator taskmgr
Immettere la password per administrator:
Tentativo di avvio di taskmgr come utente "ENIGMA\administrator" ...

Avvio dell'applicazione Task Manager come administrator

Privacy Policy