Zmieniłem uprawnienia do pliku ( chmod g+w testfile
), a uruchomienie ls -l testfile
daje:
-rwxrwxr-x 1 user1 user1 0 2011-01-24 20:36 testfile
Następnie dodałem użytkownika do tej grupy („ / etc / group ” ma user1:x:1000:user2
wiersz), ale nie mogę edytować tego pliku jako użytkownik2. Dlaczego tak jest?
permissions
users
group
tshepang
źródło
źródło
Odpowiedzi:
user2
musi się wylogować i zalogować ponownie. Uprawnienia grupy działają w ten sposób:/etc/passwd
, a także we wszystkich grupach, w których wspomniany jest użytkownik/etc/group
. (Dokładniej,pw_gid
pola wgetpw(your_uid)
, plus wszystkie grupy , z których Twój użytkownik jest jawnym członkiem . Beyond/etc/passwd
i/etc/group
informacje mogą pochodzić z innych rodzajów baz danych użytkownika, takich jak NIS lub LDAP). Główną grupą staje Proces jest efektywny identyfikator grupy a pozostałe grupy stają się dodatkowymi identyfikatorami grup .Jak widać, zmiana w członkostwie w grupie użytkowników obowiązuje tylko wtedy, gdy użytkownik się zaloguje. Na uruchomienie procesów jest już za późno. Więc użytkownik musi się wylogować i ponownie zalogować. Jeśli to zbyt duży problem, użytkownik może zalogować się do osobnej sesji (np. Na innej konsoli lub za pomocą
ssh localhost
).Pod maską proces może tylko utracić uprawnienia (identyfikatory użytkowników, identyfikatory grup, możliwości). Jądro uruchamia
init
proces (pierwszy proces po rozruchu) jako root, a każdy proces jest ostatecznie potomkiem tego procesu¹.login
Proces (lubsshd
, lub część swojego menedżera pulpitu, loguje się w) nadal działa jako root. Częścią jego zadania jest upuszczenie uprawnień roota i przełączenie do odpowiedniego użytkownika i grup.Jest jeden wyjątek: wykonywanie programu setuid lub setgid . Ten program otrzymuje dodatkowe uprawnienia: może działać w ramach różnych podzbiorów członkostwa procesu nadrzędnego oraz dodatkowego członkostwa w użytkowniku lub grupie, która jest właścicielem pliku wykonywalnego setxid. W szczególności setuid root ma uprawnienia roota, dlatego może robić wszystko; w ten sposób programy lubią
su
isudo
mogą wykonywać swoją pracę.¹ Czasami zdarzają się procesy, które nie pochodzą od init (initrd, udev), ale zasada jest taka sama: startuj jako root i tracisz uprawnienia z czasem.
² Z wyjątkiem wielopoziomowych ram bezpieczeństwa, takich jak SELinux.
źródło
Może być konieczne wylogowanie się użytkownika 2 i ponowne zalogowanie się (lub po prostu spróbuj zalogować się, aby utworzyć nową sesję logowania). Sprawdź dane wyjściowe,
id --groups
aby wyświetlić identyfikatory grup numerycznych dla użytkownika.źródło
sudo su $(whoami)
Zasadniczo to samo obejście
ssh localhost
, ale możliwe do użycia bez zainstalowanego serwera ssh.Tak długo, jak masz root. Ale jeśli właśnie dodałeś nową grupę i zmieniłeś uprawnienia, prawdopodobnie tak.
źródło
Istnieją przypadki, w których wylogowanie użytkownika nie pomaga - jeśli używasz dyrektywy ssh ControlMaster dla hosta. Jeśli dodasz swoje konto do grupy, wylogujesz się i zalogujesz ponownie w ramach tego samego połączenia ControlMaster, sesja nadal nie wyświetli żadnego nowego członkostwa. Będziesz musiał siłą zerwać połączenie Master
ssh -O exit hostname
przed ponownym zalogowaniem.
źródło