Як працюють дозволи на файли?


37

Чи можете ви пояснити коротко основні поняття та засоби командного рядка, що використовуються для управління дозволами файлів?

Відповіді:


23

Кожен файл має права на три різні категорії:

  • власник файлу,
  • група, пов'язана з файлом, і
  • всі інші.

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

У CLI ви можете

  • змінити власника chown, наприкладchown guillermooo
  • змінити групу на chgrp , напрchgrp root
  • змінити права chmod, наприклад, chmod u+w filename.ext(Додає дозвіл на написання власника файлу filename.ext)

Якщо ви хочете дізнатися більше про кожен із цих інструментів, відкрийте термінал і введіть man [tool], наприклад man chmod.


8
Це трохи складніше з каталогами - для доступу до вмісту каталогу потрібен дозвіл на виконання. Це означає (наприклад), щоб прочитати або записати файл, вам потрібно виконати доступ до каталогу, що містить його, а також відповідні дозволи на сам файл. Це майже ніколи не з'являється, але ось це погано задокументовано / зрозуміло!
adamnfish

Ага. Ти правий. Я відредагую це завтра, коли я буду менш сонним.
ParanoiaPuppy

1
chown guillermoooне повинно бути цього chown guillermooo filename?
Зейнель

32

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

Дозволи файлів

Ubuntu успадкував концепцію дозволів від Unix, коли для файлів або каталогів є три завдання, які ми можемо дозволити або заборонити:

  • r (читання) файл / каталог може бути відкритий для доступу до читання.
  • w (запис) файл / каталог може бути відкритий для доступу / редагування.
  • x (Execute) файл може бути виконаний у міру проходження програми / каталогу.

( Перехід до каталогу по суті означає використання його як частини назви шляху. Для отримання додаткових пояснень див. Https://unix.stackexchange.com/a/13891 або https://unix.stackexchange.com/questions/21251 .)

Крім того, у нас є три випадки, щодо яких ми надаємо дозвіл:

  • u (користувач) власнику файлу надається будь-який дозвіл.
  • g (group) група, до якої належить файл, отримала дозвіл.
  • o (інші) всі інші отримують дозвіл.

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

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |       |       |       |
      w        |  010   |   2    |       |       |       |
      x        |  001   |   1    |       |       |       |
    =======================================================
    Number

Тепер, якщо ми хочемо, наприклад

а) власник файлу (= користувач) має г EAD, ш обряду і е х ecute дозволу,
б) до файлу група надана г Свинець і е х ecute дозвіл, і
в) всі інші повинні мати тільки г доступ EAD.

Тоді отриманий дозвіл на файл буде:

 u   g   o
rwx r-x r--

Щоб отримати це в восьмеричних числах, наприклад. для chmodкоманди або коли нам належить зрозуміти повідомлення про помилку, нам потрібно заповнити таблицю вище, як показано нижче:

    Permission | Binary | Octal  | User  | Group | Other |
    ======================================================
      r        |  100   |   4    |   4   |   4   |   4   |
      w        |  010   |   2    |   2   |   0   |   0   |
      x        |  001   |   1    |   1   |   1   |   0   |
    ======================================================
    Numbers add to                   7       5       4     

Кожен номер дозволу потрібно додати для підсумовування для користувача (4 + 2 + 1 = 7), групи (4 + 0 + 1 = 5) та інших (4 + 0 + 0 = 4). Отримане число тоді:

 u   g   o
 7   5   4

Тепер у нас є два варіанти зміни бітів дозволу за допомогою chmod:

chmod u+rwx g+rx o+r filename

або набагато простіше з

chmod 751 filename

Обидві команди будуть робити те саме.

Дозвіл новоствореного файлу в нашому будинку буде 664 (-rw-rw-r--).

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

  • Зауважте, що нам також доведеться змінити дозвіл каталогу, в якому може виконуватися цей виконуваний файл. Тільки якщо встановлено обоє файли та виконавчий біт каталогу, нам буде дозволено запускати цей файл як програму.

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

  • Також зауважте, що файл може успадкувати їх дозвіл від точки монтування, тобто параметри кріплення. Це важливо під час монтажу накопичувачів форматування Windows, які не підтримують дозволи Unix.

Користувачі та групи

Незабаром ми зрозуміємо, що це була лише половина історії. Нам також потрібно розібратися з речами. Для цього кожен файл чи папка мають визначеного власника та визначене членство в групі.

Кожен раз, коли ми створюємо файл, ми будемо власником файлу, а групою файлу також будемо ми. З ls -lми можемо побачити дозвіл, право власності, а також групу , як видно з наступного прикладу виходу:

-rw-rw-r--  1 takkat takkat    4096 Sep 12 20:25 test
  • Нам дозволяється лише змінювати дозволи, групи чи права власності на файл, який є нашим.

Якщо ми не є власником файлу, ми отримаємо Permission deniedпомилку. Тільки root може змінити це для всіх файлів. Ось чому нам доводиться використовувати sudoпри редагуванні дозволу файлів, які не є нашими. Існує дві вбудовані команди chownдля користувачів і chgrpгруп.

Щоб змінити право власності на файл на когось, takkatми можемо видати цю команду:

sudo chown takkat testfile

Щоб змінити групу файлів, яку takkatми видаємо

sudo chgrp takkat testfile

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

Тут також знайдіть деякі пов'язані питання:

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