Perché un nuovo utente ha ereditato i file da un utente eliminato?


24

Quindi ho dovuto fare un esercizio in un libro come compiti a casa. Per prima cosa dovevi creare un utente come:

useradd -c "Steven Baxter" -s "/bin/sh" sbaxter

Quindi hai dovuto aggiungere alcuni file alla /home/sbaxterdirectory:

touch /home/sbaxter/ some.txt new.txt files.txt

Quindi è stato necessario rimuovere l' sbaxterutente e creare un nuovo utente denominato mjane. Con mia sorpresa mentre correvo find /home/ -user mjane, il nuovo utente mjaneora possedeva tutti i vecchi file di sbaxter, cosa è successo?

Risposte:


41

Il diavolo è nei dettagli, nella useraddpagina man (lo puoi vedere emettendo man 8 useradd):

   -u, --uid UID
       The numerical value of the user's ID. This value must be unique,
       unless the -o option is used. The value must be non-negative. The
       default is to use the smallest ID value greater than or equal to
       UID_MIN and greater than every other user.

Quindi per impostazione predefinita userà il più piccolo uid inutilizzato, che è più grande di altri utenti, nel file delle password. Visto che l'eliminazione di sbaxter lo ha rimosso dal file passwd, il suo uid è "gratuito" e viene assegnato a mjane (poiché l'uid useraddpick è lo stesso per entrambi gli utenti al momento dell'utilizzo del useraddcomando).

I file su disco memorizzano solo uid e NON la traduzione del nome utente (poiché questa traduzione è definita nel file della password). Puoi confermarlo emettendo ls -lnper vedere cosa hanno i file di proprietà uid.

In realtà, consiglierei di disabilitare anziché eliminare gli account. Il blocco degli account sulla maggior parte delle distribuzioni Linux può essere ottenuto con usermod -L -e today <username>, che blocca la password e imposta la scadenza dell'account oggi (puoi vedere la data di scadenza di un account con chage -l).


2
... sembra un terribile difetto di sicurezza. C'è un modo per aggirare il problema?
BlueRaja - Danny Pflughoeft,

6
@ BlueRaja-DannyPflughoeft Questo non è un difetto di sicurezza: gli utenti sono identificati dal loro ID utente, non dal loro nome utente. Quando si elimina un account, è necessario rimuovere tutti i suoi file (ovvero tutti i file di proprietà di questo ID utente, non solo la home directory dell'utente). Questo fa parte della normale procedura per rimuovere un account.
Gilles 'SO- smetti di essere malvagio' il

2
@OlivierDulac Questo si chiama backup. In alternativa, bloccare ma non rimuovere l'account finché è necessario conservarne i dati. Dopotutto, se è necessario conservare i dati, l'account è ancora necessario.
Gilles 'SO- smetti di essere malvagio' il

1
Il blocco degli account sulla maggior parte delle distribuzioni Linux può essere ottenuto con usermod -L -e today <username>, che blocca la password e imposta la scadenza dell'account oggi (puoi vedere la data di scadenza di un account con chage -l).
Drav Sloan,

5
È un difetto di sicurezza, secondo gli standard odierni. Come mostra l'esempio, ciò significa che non è possibile associare gli umani ai file. Certo, gli esseri umani possono essere fortemente associati ai conti, ma l'associazione file <-> account <-> umano si rompe a causa del riciclaggio dell'UID. Ancora una volta, Unix non ha mai avuto una grande sicurezza in questo senso ( rootpotrebbe simulare quasi tutto). Per questo sono necessari audit trail.
MSalters il

13

L'UID dell'utente eliminato è stato riutilizzato dal nuovo utente e i filesystem utilizzano un UID per la proprietà, non un nome utente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.