Чи можете ви пояснити коротко основні поняття та засоби командного рядка, що використовуються для управління дозволами файлів?
Чи можете ви пояснити коротко основні поняття та засоби командного рядка, що використовуються для управління дозволами файлів?
Відповіді:
Кожен файл має права на три різні категорії:
Права означають право на читання файлу, право на запис у файл або право на виконання файлу у випадку сценарію чи програми.
У CLI ви можете
chown
, наприкладchown guillermooo
chgrp
, напрchgrp root
chmod
, наприклад, chmod u+w filename.ext
(Додає дозвіл на написання власника файлу filename.ext
)Якщо ви хочете дізнатися більше про кожен із цих інструментів, відкрийте термінал і введіть man [tool]
, наприклад man chmod
.
chown guillermooo
не повинно бути цього chown guillermooo filename
?
Попередження: Зміна дозволів на файли та каталоги потенційно шкідлива і може зробити вашу систему непридатною. Якщо рекурсивно запускати як root на неправильному шляху, ми можемо прийти до точки, звідки нам доведеться перевстановити Ubuntu. Тому є хорошою ідеєю не змінювати дозволи за межами каталогів HOME, а запускати команди рекурсивно, оскільки слід уникати root, коли це можливо.
Ubuntu успадкував концепцію дозволів від Unix, коли для файлів або каталогів є три завдання, які ми можемо дозволити або заборонити:
( Перехід до каталогу по суті означає використання його як частини назви шляху. Для отримання додаткових пояснень див. Https://unix.stackexchange.com/a/13891 або https://unix.stackexchange.com/questions/21251 .)
Крім того, у нас є три випадки, щодо яких ми надаємо дозвіл:
Тепер, щоб отримати комбінацію цих відсортованих, ми використовуємо двійкову систему, де кожен біт визначає дозвіл. Це найкраще можна показати в наступній таблиці
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
Прочитайте підручники команд, щоб отримати докладнішу інформацію та параметри. Також є цей приємний більш детальний посібник, рекомендований для подальшого читання:
Тут також знайдіть деякі пов'язані питання: