GNU/Linux >> Znalost Linux >  >> Linux

Proč mají Linux/POSIX lchown, ale ne lchmod?

Linux, stejně jako většina unixových systémů (Apple OS/X je jednou ze vzácných výjimek), ignoruje oprávnění k symbolickým odkazům, pokud jde například o řešení jejich cílů.

Vlastnictví symbolických odkazů, stejně jako jiných souborů, je však důležité, pokud jde o oprávnění přejmenovat nebo zrušit propojení jejich položek v adresářích, které mají t bitová sada, například /tmp .

Aby bylo možné odstranit nebo přejmenovat soubor (symlink nebo ne) v /tmp , musíte být vlastníkem souboru. To je jeden z důvodů, proč by se mohlo chtít změnit vlastnictví symbolického odkazu (udělit nebo odebrat oprávnění k odpojení/přejmenování).

$ ln -s / /tmp/x
$ rm /tmp/x
# OK removed

$ ln -s / /tmp/x
$ sudo chown -h nobody /tmp/x
$ rm /tmp/x
rm: cannot remove ‘/tmp/x’: Operation not permitted

Také, jak zmínil Mark Plotnick ve své nyní smazané odpovědi, zálohovací a archivační aplikace potřebují lchown() obnovit symbolické odkazy jejich původním vlastníkům. Další možností by bylo přepnout euid a egid před vytvořením symbolického odkazu, ale to by nebylo efektivní a zkomplikovalo by to správnou správu v adresáři, do kterého je symbolický odkaz extrahován.


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  3. UNIX / Linux :Jaká je správná oprávnění adresářů /tmp a /var/tmp

  1. Proč nefunguje find -exec mv {} ./target/ +?

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. Proč dávat věci jiné než /home do samostatného oddílu?

  1. Linux – proč používáme Su – a nejen Su?

  2. proč je timer_t definován v time.h v Linuxu, ale ne v OS X

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp