Wygląda na to, że Linux obsługuje zmianę właściciela dowiązania symbolicznego (tj. lchown
), Ale zmiana trybu / uprawnienia dowiązania symbolicznego (tj. lchmod
) Nie jest obsługiwana . O ile widzę, jest to zgodne z POSIX. Nie rozumiem jednak, dlaczego ktoś wspierałby jedną z tych operacji, ale nie obie. Jaka jest tego motywacja?
linux
permissions
posix
Florian Brucker
źródło
źródło
lrwxrwxrwx
. Tochmod
nie ma sensu. Podążanie za linkiem prowadzi do uprawnień docelowych.lchmod
. Ale inne systemy uniksopodobne go obsługują (np. Mac OS X ), więc pytanie brzmi, dlaczego Linux nie obsługuje, gdy obsługujelchown
.Odpowiedzi:
Linux, podobnie jak większość systemów uniksopodobnych (Apple OS / X jest jednym z nielicznych wyjątków), ignoruje uprawnienia do dowiązań symbolicznych, na przykład w przypadku rozwiązywania ich celów.
Jednak własność dowiązań symbolicznych, podobnie jak innych plików, jest istotna, jeśli chodzi o pozwolenie na zmianę nazwy lub odłączenie ich wpisów w katalogach, które mają
t
ustawiony bit, np/tmp
.Aby móc usunąć lub zmienić nazwę pliku (dowiązanie symboliczne lub nie)
/tmp
, musisz być właścicielem pliku. To jeden z powodów, dla których warto zmienić własność dowiązania symbolicznego (aby udzielić lub usunąć uprawnienia do rozłączenia / zmiany nazwy).Ponadto, jak wspomniał Mark Plotnick w swojej obecnie usuniętej odpowiedzi , aplikacje
lchown()
do tworzenia kopii zapasowych i archiwizacji muszą przywracać dowiązania symboliczne do swoich pierwotnych właścicieli. Inną opcją byłoby przełączenie euid i egid przed utworzeniem dowiązania symbolicznego, ale nie byłoby to wydajne i nie skomplikowałoby właściwego zarządzania katalogiem, w którym wyodrębniono dowiązanie symboliczne.źródło
W posixie nie ma funkcji lchmod (), ale fchmodat (), która pozwoliłaby ustawić uprawnienia dowiązania symbolicznego. Nadal nie wymaga to oceny uprawnień dowiązań symbolicznych.
źródło
lchmod
jest zgodny z POSIX. Co dodaje ta odpowiedź, której nie ma jeszcze w pytaniu?