Що ширше використовується: chmod 777 або chmod a + rwx [закрито]


20

З двох варіантів зміни дозволів:

  • chmod 777 file.txt
  • chmod a+rwx file.txt

Я пишу документ, який реквізити, що користувачі повинні змінити права доступу до певного файлу. Я хочу детально описати це як найпоширеніший спосіб зміни дозволів на файли.

В даний час кажуть:

- Set permissions on file.txt as per the example below:
    - chmod 777 /tmp/file.txt

Це лише приклад, і не змінюватимуться файли, щоб мати повні дозволи для всіх.


6
Перше рішення коротше і широко використовується, другого я ніколи не бачив.
Архемар

2
налаштування читання, запису та виконання дозволів для всіх насправді не є хорошою ідеєю з точки зору безпеки. Ви повинні використовувати chmod 773 замість цього.
Мартін Ерхардт

1
@MartinErhardt, як правило, я просто використовую 775або лише 755для виконуваних файлів.
Kevdog777

3
chmod 777це як chmod a=rwx, ні chmod a+rwx.
Стефан Шазелас

1
777або 666просто і набагато запам'ятовується ugo+rwx, a+rwxабо ugo+rwщо дуже заплутано, оскільки oнеоднозначно і може означати для вас або власника, або інших. Тож замість того, щоб зробити велику помилку, ви продовжуєте перевіряти, manщоб перевірити, хто з них є, або просто використовуєте числа.
kenorb

Відповіді:


29

Google дає:

chmod 777 приблизно в 3 рази популярніший.

Однак, я вважаю за краще використовувати довгі параметри в документації та сценаріях, оскільки вони є самодокументованими. Якщо ви дотримуєтесь своїх вказівок із пунктом "Запустити ls -l | grep file.txtта перевірити дозволи", ви можете скористатися, chmod a+rwxтому що ls відображатиме дозволи.


Дякую за це Я здогадуюсь, що 7
виписавши

1
Я думаю, що chmod 777більш популярною причиною (як придумано перед тим, як побачити свої номери) є просто те, що ви набираєте на 2 символи менше :)
Ángel

Якщо ви додаєте поради в свою документацію, ви можете додати підказку, яка chmod 777є зручним ярликом для досягнення того ж ефекту. Ваші читачі оцінять навчальний елемент у вашій документації. 777 популярніший, тому що набагато простіше і швидше вдарити 7 разів три рази, але коли новий користувач бачить 777 вперше, вони можуть не знати, що саме це означає. Ось чому це поганий вибір як первинної документації. Але це, безумовно, варто згадати як підказку.
ADTC

Як дотична, мій брат та його друзі використовуватимуть цю техніку для дозволу скребблених слів. Вони мали деякий поріг для кількості звернень Google, перш ніж слово було визнано "справжнім"
Wayne Werner

Я думаю, що він популярний, тому що він старший (символічні позначення були додані пізніше), тож коли хтось обирає, вони шукають у google або будь-який еквівалент часу та йдуть з натовпом. Я думаю, що простіше використовувати символічне, тому що до моменту, коли я опрацював числа, я міг би набрати символи, я також схильний встигнути правильно.
ctrl-alt-delor

26

[Я редагую, щоб додати передового досвіду, дотримуючись пропозиції Дотанкогена у своїй відповіді. Я сподіваюся, що це не зробить це менш зрозумілим, і що корисна звичка]

Важлива додаткова інформація: вони не рівнозначні.

chmod a+rwx: встановіть останні 3 вісімки на 777, щоб гарантувати, що власник, група та користувачі встановили "rwx". Якщо в першому восьмикутнику є додаткові біти (setuid, setgid та / або Sticky bit), він залишає їх недоторканими. Подумайте про це як двійкове "або 00777".

chmod 777 : встановіть права на 00777, щоб він забезпечив власнику, групі та користувачам встановлений "rwx", І НЕ БІЛЬШЕ. Також переконайтеся, що додаткові біти (setuid, setgid та / або Sticky bit) встановлені на 0.

Тож скористайтеся першою формою, якщо ви просто хочете переконатись у наданні доступу всім (і будь ласка, подвійно, потрійно переконайтесь, що це потрібно ... це відкриває двері для всіляких проблем із безпекою, які досить неочікувано широкі в тому, що вони дозволяють шкідливому користувачеві робити)

Скористайтеся формою 777, якщо ви також хочете переконатися, що потрібно скинути будь-який встановлений / setgid / sticky біт, тобто якщо для файлів потрібно "00777", що, ймовірно, у вашому випадку більше (право файлу відомо, і повинно бути : 00777). Тут також переконайтесь втричі, що це дійсно потрібно ...

Зазвичай найкраще зберігати доступ до власника (а іноді й до групи): потім використовувати групи, щоб надати доступ до файлу / каталогу певним користувачам. a + rwx - це простий і зазвичай неправильний спосіб надання доступу (звичайно, дуже рідкісні випадки, коли це єдиний спосіб ...)

http://en.wikipedia.org/wiki/Chmod є хорошою ознакою, оскільки вона пояснює, що означає кожне число або літера (включаючи setuid / setgid / sticky)


1
Крім того, chmod a + w (який включає + rwx) у файлі suid дуже небезпечно. Чи потрібно мені детальніше розробити chmod a + w *?
Джошуа

Який сенс у встановленні othersдозволу? Якщо ви ввійшли в машину як користувач, то напевно ви можете просто використовувати usersдозвіл?
Kevdog777

@ Kevdog777: Інші призначені для людей, які не є власниками, ані в групі, як і всі інші в системі
Олів'є Дулак

1
@ Kevdog777: якщо тільки root і користувачеві потрібен доступ: chmod 00600 (якщо немає необхідності виконувати файл) або chmod 00700 (якщо потрібно виконати файл - або - це каталог). або chmod 00400, щоб додати у файл (крихітний, легко перекритий) захист від зміни / запису (00500 для каталогу). Тоді інші (і люди в групі, але не користувач) не можуть отримати доступ до файлу / dir. . , і що це теж встановлено)
Олів'є Дулак,

4
chmod 777це як chmod a=rwx.
Стефан Шазелас

1

Я зазвичай думаю, що різниця полягає в тому, що встановлення дозволів на 0777 явно встановлює їх на 0777. Як було сказано раніше, провідний 0 буде зроблений, якщо ви просто введете 777. Враховуючи те, що + rwx додає читання / запис / виконання, залишаючи налаштування / sticky трохи недоторканою.

Припустимо, ви просто хочете бути впевненими, що файл виконується, ви можете використовувати + x, щоб ви могли змінювати привілей на виконання, не турбуючись про та не змінюючи інші дозволи. Якщо ви використовували восьмеричне подання, вам потрібно буде знати, які дозволи на цей час встановлено, щоб переконатися, що ви не змінювали дозволи іншими способами, крім того, що ви задумали.


0

Я б сказав, що введення числових значень набагато частіше зустрічається у "простих посібниках для людей", таких як ті, які виробляються для користувачів бюджетного веб-хостингу. Однак не забудьте вказати їх як восьмеричні , а не десяткові значення:

$ chmod 0777 some_dir

Зверніть увагу на провідну 0в 0777. Хоча Bash та інше середовище CLI роблять правильно, використовуючи розблокований 777, багато мов програмування, такі як PHP та Perl, мають подібні функції, які потребують ведучих 0. Тому я рекомендую використовувати його і в Bash, щоб пам’ятати, що він повинен бути там.

Примітка до речей: Як пояснено в коментарях, chmodкоманда насправді знає передавати директиву як вісімковий, навіть якщо вказано десяткове позначення. Однак, не всі середовища підтримують це, тому найкраще звикнути звично конкретизувати це.


10
chmodніколи не трактує число як десятковий. chmod 777 fileі chmod 0777 fileє абсолютно рівнозначними.
celtschk

3
@ Kevdog777: "восьмеричний" означає лише основу-8. Але про це вам не потрібно дбати, що стосується використання команди chmodоболонки; ви можете просто подумати про три цифри як про незалежні одна від одної, кожна з яких дає вам один набір дозволів.
celtschk

3
Для chmod, 0 в 0777 насправді означає "очистити встановлений, setgid та липкий біт". Це еквівалентно 777, оскільки аргумент завжди переповнений провідними нулями до чотирьох цифр. З тієї ж причини chmod 77рівнозначно chmod 077.
Еміль Йерабек підтримує Моніку

1
chmodКоманда інтерпретує свій аргумент режиму в вісімковому. Вам потрібно звернути увагу, якщо ви використовуєте більшість мов програмування (C, Perl, ...), але в сценарії оболонки це восьмеричний chmod.
Жил "ТАК - перестань бути злим"

1
+1 для вашої примітки, оскільки це дійсно добре завжди додавати 0 (навіть якщо встановити всі 4 вісімки: наприклад, 01777), оскільки це не має ніякого значення для оболонки, але переконайтеся, що C, perl та інші трактують це як восьмеричний
Олів'є Дулак
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.