Dlaczego nowy użytkownik dziedziczy pliki po usuniętym użytkowniku?


24

Musiałem więc wykonać ćwiczenie z książki jako zadanie domowe. Najpierw musisz utworzyć użytkownika takiego jak:

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

Następnie musiałeś dodać kilka plików do /home/sbaxterkatalogu:

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

Następnie trzeba usunąć sbaxterużytkownika i utworzyć nowego użytkownika o nazwie mjane. Ku mojemu zdziwieniu, kiedy prowadziłem find /home/ -user mjane, nowy użytkownik mjaneposiadał teraz wszystkie stare pliki sbaxtera, co się stało?

Odpowiedzi:


41

Diabeł jest w szczegółach, na useraddstronie podręcznika (możesz to zobaczyć wydając 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.

Będzie więc domyślnie używał najmniejszego nieużywanego identyfikatora użytkownika, który jest większy niż inni użytkownicy, w pliku hasła. Widząc, jak usunięcie sbaxtera usunęło go z pliku passwd, jego identyfikator użytkownika jest „bezpłatny” i zostaje przypisany do mjane (ponieważ useraddwybory identyfikatora użytkownika są takie same dla obu użytkowników w momencie useraddużycia polecenia).

Pliki na dysku przechowują tylko identyfikator użytkownika, a NIE tłumaczenie nazwy użytkownika (ponieważ to tłumaczenie jest zdefiniowane w pliku hasła). Możesz to potwierdzić, wystawiając, ls -lnaby zobaczyć, jakie pliki własności mają UID.

Polecam raczej wyłączenie niż usunięcie kont. Można usermod -L -e today <username>zablokować konta w większości dystrybucji Linuksa , co blokuje hasło i powoduje wygaśnięcie konta dzisiaj (możesz zobaczyć datę wygaśnięcia konta za pomocą chage -l).


2
... wydaje się to straszną wadą bezpieczeństwa. Czy jest jakiś sposób na obejście tego?
BlueRaja - Danny Pflughoeft

6
@ BlueRaja-DannyPflughoeft To nie jest usterka bezpieczeństwa: użytkownicy są identyfikowani na podstawie ich ID użytkownika, a nie nazwy użytkownika. Usuwając konto, musisz usunąć wszystkie jego pliki (tj. Wszystkie pliki należące do tego identyfikatora użytkownika, a nie tylko katalog domowy użytkownika). Jest to część zwykłej procedury usuwania konta.
Gilles „SO- przestań być zły”

2
@OlivierDulac To się nazywa kopia zapasowa. Alternatywnie, zablokuj, ale nie usuwaj konta, dopóki musisz zachować jego dane. W końcu jeśli chcesz zachować dane, konto jest nadal potrzebne.
Gilles „SO- przestań być zły”

1
Można usermod -L -e today <username>zablokować konta w większości dystrybucji Linuksa , co blokuje hasło i powoduje wygaśnięcie konta dzisiaj (możesz zobaczyć datę wygaśnięcia konta za pomocą chage -l).
Drav Sloan,

5
Jest to wada bezpieczeństwa, jak na dzisiejsze standardy. Jak pokazuje przykład, oznacza to, że nie można powiązać ludzi z plikami. Oczywiście ludzie mogą być silnie powiązani z kontami, ale plik powiązania <-> konto <-> załamuje się z powodu recyklingu UID. Z drugiej strony, Unix nigdy nie miał wielkiego bezpieczeństwa w tym zakresie ( rootmógł sfałszować prawie wszystko). Potrzebujesz do tego ścieżki audytu.
MSalters

13

UID usuniętego użytkownika został ponownie użyty przez nowego użytkownika, a systemy plików używają UID do własności, a nie nazwy użytkownika.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.