Po co zmieniać właściciela dowiązania symbolicznego w systemie Linux?


12

W systemie Linux można zmienić właściciela lub właściciela grupy dowiązania symbolicznego (dowiązanie symboliczne). Zastanawiałem się, dlaczego ktoś chciałby to zrobić, skoro uprawnienia do dowiązania symbolicznego nie są używane podczas uzyskiwania dostępu do pliku za jego pośrednictwem.

Mogę sobie wyobrazić tylko jeden przypadek użycia, w którym może być przydatny: umożliwić użytkownikowi usunięcie dowiązania symbolicznego w katalogu z lepkim bitem.

Czy znasz inne przypadki, w których warto zmienić właściciela lub właściciela grupy dowiązania symbolicznego?

Odpowiedzi:


6

Załóżmy, że root działa w katalogu, do którego Ewa może pisać. W footym katalogu znajduje się plik , który należy zmienić, aby należał do Eve. Więc typy korzeni chown eve foo. Ale tuż przed tym, jak root uderzy Enter, Eve biegnie ln -sf /etc/passwd foo. Teraz /etc/passwdnależy do Ewy! Jeśli root może uruchomić, chown -h eve fooaby nie podążać za dowiązaniami symbolicznymi, wówczas największą szkodą, jaką można zrobić, jest to, że jakiś inny plik w tym samym katalogu został zmieniony i należy do Eve.

lchownjest również wygodny, gdy zmieniasz właściciela drzewa katalogów. Nie musisz się martwić, że przypadkowo wpłyniesz na plik poza drzewem, ponieważ chownwywołałeś dowiązanie symboliczne.


„Jeśli root może uruchomić chown -h bob foo, aby upewnić się, że nie podąża za dowiązaniami symbolicznymi, wówczas największą szkodą, jaką można zrobić, jest to, że jakiś inny plik w tym samym katalogu został zmieniony i należy do Eve”. Chyba masz na myśli „chown-eve foo”. Drugi plik, który można zmienić, to link symboliczny, prawda?
user368507

@ user5528 Drugi plik może nie być dowiązaniem symbolicznym: Eve nadal może działać mv myfile foo, a root skończy się zmianą właściciela myfile. Ale myfilemusi to być plik, który Ewa może utworzyć lub przenieść do tego katalogu, nie może to być żaden plik w systemie.
Gilles 'SO - przestań być zły'

2
Chociaż jest interesujący i oczywiście zatwierdzony przez pytającego, nie rozumiem, w jaki sposób ta odpowiedź odpowiada na pytanie. Wydaje się bardziej wyjaśniać, dlaczego można zastosować to chown -hjako środek ostrożności przy zmianie właściciela pliku, który nie powinien być dowiązaniem symbolicznym, ale może nim być (przypadek na krawędzi, IMO). To nie wyjaśnia, dlaczego ktoś może chcieć zmienić własność pliku, który w rzeczywistości ma być dowiązaniem symbolicznym, o co pytano.
Ivan X

Dlaczego miałbyś chownzmieniać właściciela „pliku poza drzewem”, a wszystko, co zmieniasz, to właściciel katalogu?
Melab

@Melab Gdy zmieniasz właściciela drzewa katalogów , tj. Odznaczasz narzędzie chown -R, które wywołuje (l)chownwywołanie systemowe dla każdej pozycji katalogu. Jeśli pozycja katalogu jest dowiązaniem symbolicznym, nie wolno wywoływać wywołania chownsystemowego, ponieważ wpłynęłoby to na cel łącza, który może znajdować się poza drzewem.
Gilles „SO- przestań być zły”

8

Apache można skonfigurować tak, aby śledził dowiązania symboliczne tylko wtedy, gdy właściciel łącza pasuje do właściciela miejsca docelowego. Pomoże to zapobiec tworzeniu przez użytkowników łączy do dostępu do plików, których nie posiadają (np. / Etc / passwd).

... więc powiedzmy, że jako root chciałeś , aby apache podążał za linkiem, aby wyświetlić określony plik dziennika, który był własnością Xymona lub czegoś takiego, ale nie chciałeś rozluźniać bezpieczeństwa apache, pozwalając mu śledzić dowiązania symboliczne niezależnie od właściciela . Wtedy możesz chcieć ustawić Xymon jako właściciela dowiązania symbolicznego.


1
Ok. Wiem, że to nie ma związku, ale jaki jest sens tego zachowania w Apache? Mam na myśli to, że jeśli użytkownik jest w stanie odczytać plik, po co męczyć się z jego odczytaniem z dostępu do sieci? thx
user368507

Cóż, to nie tylko lokalny użytkownik czyta plik; jeśli apache może to przeczytać, potencjalnie każdy może to przeczytać. A jeśli jakaś luka w Apache pozwoli na utworzenie dowiązania symbolicznego do /etc/passwd, to badguy może mieć dostęp do odczytu tego pliku bez żadnego innego lokalnego dostępu - ale zostanie udaremniony przez dowiązanie symboliczne będące własnością apache.
Lars Rohrbach,

4

Pierwsza odpowiedź nie wydaje się dotyczyć pytania, a druga dotyczy tylko Apache.

Jedną rzeczą, o której mogę pomyśleć w systemie Linux, jest to, że zwykły użytkownik może utworzyć twardy link do dowiązania symbolicznego, jeśli użytkownik jest właścicielem dowiązania symbolicznego. Dlaczego ktoś chciałby utworzyć taki link, nie wiem.

Inną rzeczą jest to, że zwykły użytkownik może zmienić własność grupy pliku tylko wtedy, gdy użytkownik jest właścicielem pliku (i jest również członkiem grupy, do której plik jest dodawany). Pojawia się pytanie, do czego należy własność grupy robi to link symboliczny. W organizacji może być przydatny jako tag wskazujący, który zespół potrzebowałby linku.

Co najmniej na Ubuntu każdy może zaktualizować sygnaturę czasową dowiązania symbolicznego. Jednak mogą istnieć niektóre systemy, które pozwalają tylko właścicielowi. Nie wiem, na co wpływa znacznik czasu dla dowiązania symbolicznego, ale może on dostarczyć użytecznych informacji na temat jego zużycia.

Edycja: Właśnie zdałem sobie sprawę z innego powodu, dla którego własność byłaby ważna. Link może znajdować się w lepkim katalogu, w którym tylko właściciel pliku może go usunąć lub zmienić jego nazwę.


0

Mam program, który dołącza się do pliku dziennika. Te pliki dziennika są tworzone co miesiąc, każdy pod inną nazwą. Zamiast tego, aby oprogramowanie określiło dokładną nazwę pliku, używam „ogólnej” nazwy pliku (powiedzmy data.log), która jest dowiązaniem symbolicznym do bieżącego pliku z tego miesiąca. Jest to zautomatyzowane dla zadania cron.

Teraz, gdy tworzony jest nowy plik miesięczny, musi on wskazywać łącze symboliczne do nowego pliku. W przypadku konfliktu własności / grupy oprogramowanie nie może zmienić dowiązania symbolicznego. Potrzebujesz więc praw własności / zapisu grupowego, aby zmienić łącze symboliczne.


0

Jeśli chcesz mieć link do pliku na ekranie początkowym, link symboliczny musi znajdować się w

„/ home / nazwa użytkownika / pulpit”

informator.

A samo łącze symboliczne musi mieć własność root: root (0: 0), w przeciwnym razie łącze nie działa.

(Ubuntu / Debian itp.)

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.