Su un sistema Linux puoi facilmente eliminare un utente senza dover eliminare alcun file di proprietà dell'utente. Tale file rimarrà al suo posto e l'ID utente del proprietario del file (che è memorizzato come attributo del inode ) rimane invariato . In questo modo un file può diventare effettivamente ownerless.
Se successivamente crei un utente con lo stesso ID, l'utente diventerà automaticamente il proprietario dei file orfani precedentemente. È così che un nuovo utente può involontariamente (o con intenzioni malevole) diventare il proprietario di file che non dovrebbero possedere, il che ovviamente è dannoso per la sicurezza.
Tieni presente che userdel
ha uno switch in più per rimuovere gli utenti insieme ai loro file, ma rimuoverà solo i file da alcuni posizioni fisse, come la home directory:
-r, --remove
Files in the user's home directory will be removed along with
the home directory itself and the user's mail spool. Files
located in other file systems will have to be searched for
and deleted manually.
Potresti voler utilizzare find
con l'opzione -nouser
per scoprire i file con un proprietario inesistente:
-nouser
No user corresponds to file's numeric user ID.
Ecco una rapida demo su Arch Linux.
Aggiungiamo un utente alice
e rendiamola proprietaria di un file foo
.
[root@box /]# useradd alice
[root@box /]# touch foo
[root@box /]# chown alice foo
[root@box /]# ls -l foo
-rw-r--r-- 1 alice root 0 Jan 5 02:59 foo
Ora eliminiamo alice
.
[root@box /]# userdel alice
[root@box /]# ls -l foo
-rw-r--r-- 1 1001 root 0 Jan 5 02:59 foo
ls
non può determinare il nome del proprietario e mostra solo l'ID proprietario numerico 1001
. Ora aggiungiamo un nuovo utente bob
.
[root@box /]# useradd bob
[root@box /]# ls -l foo
-rw-r--r-- 1 bob root 0 Jan 5 02:59 foo
Poiché a bob
è stato assegnato il prossimo ID utente gratuito, ora è automaticamente il proprietario del file.