Czy mogę sortować pliki / etc / group i / etc / passwd?

33

Mój /etc/groupurósł, dodając nowych użytkowników, a także instalując programy, które dodały własnego użytkownika i / lub grupę. To samo dotyczy /etc/passwd. Edycja stała się teraz trochę kłopotliwa z powodu braku struktury.

Czy mogę sortować te pliki (np. Według identyfikatora numerycznego lub alfabetycznie według nazwy) bez negatywnego wpływu na system i / lub menedżerów pakietów?

Sądzę, że to nie ma znaczenia, ale dla pewności chciałbym uzyskać drugą opinię. Może rootmusi to być pierwsza linia lub pierwsza linia 1k czy coś takiego?

To samo dotyczy /etc/*shadow.

Ned64
źródło
7
„Edycja stała się teraz trochę kłopotliwa z powodu braku struktury” Dlaczego edytujesz te pliki ręcznie?
Kevin
W jaki sposób sortowanie pliku pomaga w edycji? Czy to dlatego, że chcesz pogrupować powiązane konta, a następnie dokonać podobnych zmian w szeregu wierszy? Ale czy powiązane konto będzie sąsiadować, jeśli posortujesz według identyfikatora użytkownika lub nazwy?
Barmar
@Barmar Pomogło to głównie dlatego, że konta użytkowników są pogrupowane według zakresów i oddzielone od kont systemowych (podczas sortowania według UID). Dlatego łatwiej jest np. Znaleźć właściwą linię do sprawdzenia lub zmiany podczas edycji za pomocą vi.
Ned64

Odpowiedzi:

50

Powinieneś być w porządku, robiąc to : w rzeczywistości, zgodnie z artykułem i czytając dokumentację, możesz sortować /etc/passwdi /etc/groupwedług UID / GID odpowiednio za pomocą pwck -si grpck -s.

ErikF
źródło
3
@Menasheh Kolory tej witryny nie wyróżniają się tak bardzo, jak na innych stronach, ale „OK, robienie tego” w tej odpowiedzi to hiperłącze.
hvd
2
OK, w porządku, ale ... Ogólnie, czy istnieją ważne powody, aby ręcznie edytować / etc / passwd i podobne pliki? Czy nie uważa się za lepszy dostęp do nich za pomocą narzędzi zaprojektowanych do ich tworzenia i modyfikowania?
mickeyf_supports_Monica
@mickeyf Widziałem ludzi, którzy ręcznie edytują, /etc/passwdgdy wprowadzają zmiany wsadowe, takie jak zmiana pola GECOS dla wszystkich użytkowników z powodu przeprowadzki / restrukturyzacji (globalne zmiany pokoju lub numeru telefonu itp.) To już nie jest powszechne, ale są pewne powody, które pojawiają się od czasu do czasu.
ErikF,
44

Chociaż ErikF ma rację, że ogólnie powinno być w porządku, chcę wskazać jeden potencjalny problem:

Możesz mapować różne nazwy użytkowników na ten sam UID. Jeśli skorzystasz z tego, narzędzia, które odwzorowują UID z powrotem na nazwę użytkownika, zazwyczaj wybiorą pierwszą nazwę użytkownika, którą znajdą dla tego UID /etc/passwd. Sortowanie może spowodować, że najpierw pojawi się inna nazwa użytkownika. Do celów wyświetlania (np. ls -lDanych wyjściowych) każda nazwa użytkownika powinna działać, ale możliwe jest, że skonfigurowałeś jakiś program do akceptowania żądań od nazwy użytkownika A, gdzie odmówi tym żądaniom, jeśli zobaczy, że pochodzą one od nazwy użytkownika B, nawet jeśli A i B są tym samym użytkownikiem.

hvd
źródło
Dzięki, wiem, że możesz, kilka lat temu miałeś użytkownika z tcsh i uid 0 w Solarisie. Jednak system Linux sam nie stworzy tej sytuacji - konieczne byłoby ręczne utworzenie takiego użytkownika, aby mieć problemy z tą sytuacją.
Ned64
2

Posiadanie roota na pierwszej linii było de facto „standardowym” i jest bardzo wygodne, jeśli kiedykolwiek będziesz musiał naprawić ich powłokę lub usunąć hasło, podczas rozwiązywania problemów lub odzyskiwania systemów.

Podobnie wolę mieć użytkowników demonów / użytkowników w środkowej i standardowej wersji na końcu zarówno passwdi shadow.

hvd odpowiedź jest również bardzo dobra na temat zakłócania porządku użytkowników, szczególnie w systemach z wieloma użytkownikami obsługiwanymi ręcznie.

Jeśli w jakiś sposób uda ci się posortować pliki, na przykład tylko dla standardowych użytkowników, byłoby to rozsądniejsze niż zmiana kolejności wszystkich użytkowników, imo.

Rui F. Ribeiro
źródło
1
Jeśli sortujesz według numerów UID, powinieneś otrzymać preferowane zamówienie. Root jest zawsze 0, a demony zwykle mają UID poniżej 100.
Barmar
@Barmar Jeśli sortujesz według UID, a nie według nazwy, dzięki za zapamiętywanie.
Rui F Ribeiro
0

Oto nieco włochaty kod bash, aby podobnie sortować pliki shadow / gshadow bezpiecznie (używając vipw -s/ vigr -s) i na miejscu z linii poleceń:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

UWAGA:

  1. vi -cprzekazuje polecenie do edytora vim, który jest przypisany jako edytor dla vipw/ vigrprzez EDITORzmienną
  2. Sortuje kod awk shadowautorstwa passwd(i gshadowprzez group)
  3. Ukośniki odwrotne to tylko kilka poziomów ucieczki, które odpowiadają poziomom cytowania.
  4. Drugie polecenie (-c \ "wq! \") Force zapisuje i zamyka posortowany plik. Siła jest niezbędna, ponieważ cień / gshadow często są w trybie 000 (tzn. Nie można ich zapisać). Zwróć uwagę na spację między „!” a „\” jest konieczne, aby zapobiec interpretacji przez powłokę jako „! \”, która odwołuje się do zdarzenia bash.
puterboy
źródło