Який Ubuntu еквівалент прапора OSX `chmod -h`?


13

В OSX я можу встановити дозволи самого симпосилання (замість того, на що він вказує, використовуючи -h). На чоловіковій сторінці:

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

У Ubuntu 14.04 я намагаюся встановити дозволи для символьного посилання, але це встановлено лише на цілі symlink.

Це стосується символьного посилання від /home/nagios/.ssh/someprivatekeyдо /somewhere/else/privatekey, тому для ssh важливі дозволи. Як я можу цього досягти?


Отже, навіщо вам потрібна ця символьна посилання?
муру

1
ви впевнені, що ssh піклується про дозволи на символічне посилання, а не про дозволи на / else / else / privatekey?
Випадково832

@ Random832 Так, можливо, я зробив неправильний висновок, я також трохи заплутався у тому, як відображаються дозволи у ls -lвисновку ( lrwxrwxrwx).
Ray Burgemeestre

@muru Я створював (buildserver) зображення Docker, який використовує ключ ssh для доступу до всіх видів серверів. Я не хочу ставити приватний ключ всередину через різні причини (тобто, якщо я хочу розмістити його на докер-концентраторі). Тож я пов'язував його і вказував на об'єм, встановлений лише після запуску зображення. Хоча, подумайте про це, я міг би також змінити ключове місце за допомогою .ssh/config:)
Ray Burgemeestre

Відповіді:


18

Неможливо. Немає можливості, оскільки дозволи на симпосилання не мають сенсу (символьне посилання - це не файл; воно вказує лише на файл). Спосіб зробити це з Linux - це через ACL .

Симпосилання пояснюється як ...

Значення бітів режиму файлу для створеного символічного посилання не визначено. Усі інтерфейси, визначені POSIX.1-2008, повинні вести себе так, ніби вміст символьних посилань завжди можна прочитати, за винятком того, що значення бітів режиму файлів, повернених у полі st_mode структури stat, не визначено.


Різниця тут: chmod і chmod ... це BSD проти Linux.


Не впевнений, що це важливо, але щодо SSH: він використовує stat (2) , а не lstat (2) для отримання дозволів.

  • stat () показує файл, на який вказує шлях, і заповнює buf.
  • lstat () ідентичний stat (), за винятком випадків, якщо шлях є символічним посиланням, то саме посилання є статизованим, а не файлом, на який він посилається.

2
Можливість встановлення дозволів на символьні посилання не вказана навіть в останній версії, це розширення BSD.
Випадково832

1
@ Random832 хм, що може бути більш гострим так. Я прочитав цей біт сьогодні на SO, але не зробив перевірку на це: D
Rinzwind

4
Між іншим, POSIX вказує fchmodatфункцію, яку можна використовувати для зміни режиму символічних посилань (додаткова функція - системи, які не підтримують її, включаючи Linux, помилка повернення EOPNOTSUPP), але нічого в chmodкоманді не використовувати. Тільки -Rвизначено в стандарті POSIX.
Випадково832

2
Дозволи на symlink в Linux безглузді . У системах, де ви можете змінити їх (за допомогою lchmod(2)або fchmodat(2)...), вони мають значення (дозволити / заборонити readlink()(прочитати) або розділити шлях через них (виконати)). Права на запис зазвичай не мають, оскільки ви не можете змінити ціль символьного посилання.
Стефан Шазелас

Unix не погодиться з вами, що "симпосилання - це не файл". Симпосилання - це спеціальний файл.
варення

9

Ви не можете. Базовий chmodсистемний виклик просто не підтримує це в Linux, і з цього приводу Linux також не дбає про дозволи дозволу. Від man chmod:

chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic  links  are  never  used.   However, for each
symbolic link listed on the command line, chmod changes the permissions
of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
encountered during recursive directory traversals.

Що стосується жорстких посилань або прив'язування кріплень, використовуються дозволи джерела, тому жоден із трьох стандартних способів відображення вмісту файлу в іншому місці не може допомогти вам у цьому.


Ця відповідь також була для мене дуже зрозумілою, вибачте, що я могла прийняти лише одну як відповідь!
Ray Burgemeestre
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.