Усі приклади в цьому документі використовують дії root, а дії звичайних користувачів коментуються окремо. У блоці коду markdown опис команди буде позначено знаком # у попередньому рядку.
Перегляд основних дозволів¶
Добре відомо, що основні дозволи GNU/Linux можна переглянути за допомогою ls -l
:
Shell > ls -l
- rwx r-x r-x 1 root root 1358 Dec 31 14:50 anaconda-ks.cfg
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
1 2 3 4 5 6 7 8 9 10
Їх значення наступні:
Частина | Опис |
---|---|
1 | Тип файлу. - вказує, що це звичайний файл. Пізніше буде представлено сім типів файлів. |
2 | Дозволи користувача-власника, значення rwx відповідно означає: читання, запис, виконання. |
3 | Дозволи групи власників. |
4 | Дозволи інших користувачів. |
5 | Кількість підкаталогів (. і .. включно). Для файлу він представляє кількість жорстких посилань, а 1 представляє себе. |
6 | Ім'я користувача власника. |
7 | Назва групи власників. |
8 | Для файлів показує розмір файлу. Для каталогів він показує фіксоване значення 4096 байт, зайняте іменуванням файлу. Щоб обчислити загальний розмір каталогу, використовуйте du -sh |
9 | Дата останньої зміни. |
10 | Ім'я файлу (або каталогу). |
Сім типів файлів¶
Типи файлів | Опис |
---|---|
- | Представляє звичайний файл. Включаючи звичайні текстові файли (ASCII); двійкові файли (бінарні); файли формату даних (data); різні стислі файли. |
d | Представляє файл каталогу. За замовчуванням є один у кожному каталозі . та .. . |
b | Файл блоку пристрою. Включаючи всілякі жорсткі диски, USB-накопичувачі тощо. |
c | Файл символьного пристрою. Пристрій інтерфейсу послідовного порту, наприклад миша, клавіатура тощо. |
s | Файл сокета. Це файл, який спеціально використовується для мережевого зв’язку. |
p | Pipe файл. Це особливий тип файлу, основна мета якого – усунути помилки, спричинені одночасним доступом кількох програм до файлу. FIFO - це абревіатура "перший прийшов - перший вийшов" (first-in-first-out). |
l | Файли програмних посилань, також звані файлами символічних посилань, подібні до ярликів у Windows. Файл жорсткого посилання, також відомий як файл фізичного посилання. |
Значення основних дозволів¶
Для файлу:
Цифрове представлення | Дозволи | Опис |
---|---|---|
4 | r (читання) | Вказує на те, що ви можете прочитати цей файл. Ви можете використовувати такі команди, як cat , head , more , less , tail , і т. д. |
2 | w (написати) | Вказує на те, що файл можна змінити. Можна використовувати такі команди, як vim . |
1 | x (виконати) | Дозволи для виконуваних файлів (наприклад, сценаріїв або двійкових файлів). |
Для каталогу:
Цифрове представлення | Дозволи | Опис |
---|---|---|
4 | r (читання) | Вказує, що вміст каталогу можна перерахувати, наприклад ls -l . |
2 | w (написати) | Вказує, що ви можете створювати, видаляти та перейменовувати файли в цьому каталозі, наприклад команди mkdir , touch , rm тощо. |
1 | x (виконати) | Вказує на те, що ви можете увійти до каталогу, наприклад командою cd . |
примітка
Для каталогів дозволи r і x зазвичай з’являються одночасно.
Спеціальний орган (Special Authority)¶
У GNU/Linux, окрім базових дозволів, згаданих вище, є також деякі спеціальні дозволи, які ми представимо один за одним.
Дозволи ACL¶
Що таке ACL? ACL (список контролю доступу), мета полягає в тому, щоб вирішити проблему, через яку три ідентифікатори в Linux не можуть задовольнити потреби розподілу дозволів на ресурси.
Наприклад, учитель дає уроки учням, а вчитель створює каталог у кореневому каталозі ОС. Наприклад, учитель дає уроки учням, а вчитель створює каталог у кореневому каталозі Ос. На даний момент дозволи для каталогу становлять 770. Одного разу учень з іншої школи прийшов послухати вчителя, як мають бути призначені дозволи? Якщо ви додасте цього студента до групи власників, він матиме ті самі дозволи, що й студенти цього класу - rwx. Якщо студента поміщено до інших користувачів, він не матиме жодних дозволів. Наразі розподіл базових дозволів не відповідає вимогам, і вам потрібно використовувати ACL.
Подібна функція є і в операційній системі Windows. Наприклад, щоб призначити користувачеві права доступу до файлу, для каталогу/файлу, визначеного користувачем, клацніть правою кнопкою миші ---> Властивості ---> Безпека ---> Редагувати ---> Додати ---> Додатково ---> Знайти зараз, знайти відповідного користувача/групу ---> призначити певні дозволи ---> застосувати та завершити.
Те саме стосується GNU/Linux: додайте вказаного користувача/групу до файлу/каталогу та надайте відповідні дозволи для завершення призначення дозволу ACL.
Як увімкнути ACL? Потрібно знайти назву файлу пристрою, на якому розташована точка монтування, і номер його розділу. Наприклад, на моїй машині ви можете зробити щось подібне:
Shell > df -hT
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs tmpfs 3.8G 0 3.8G 0% /dev/shm
tmpfs tmpfs 3.8G 8.9M 3.8G 1% /run
tmpfs tmpfs 3.8G 0 3.8G 0% /sys/fs/cgroup
/dev/nvme0n1p2 ext4 47G 11G 35G 24% /
/dev/nvme0n1p1 xfs 1014M 187M 828M 19% /boot
tmpfs tmpfs 774M 0 774M 0% /run/user/0
Shell > dumpe2fs /dev/nvme0n1p2 | head -n 10
dumpe2fs 1.45.6 (20-Mar-2020)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: c8e6206d-2892-4c22-a10b-b87d2447a885
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Коли ви бачите рядок "Default mount options: user_xattr acl"", це означає, що ACL увімкнено. Якщо його не ввімкнено, ви також можете ввімкнути його тимчасово -- mount -o remount,acl /
. Його також можна ввімкнути постійно:
Shell > vim /etc/fstab
UUID=c8e6206d-2892-4c22-a10b-b87d2447a885 / ext4 defaults,acl 1 1
Shell > mount -o remount /
# or
Shell > reboot
Перегляд і налаштування ACL¶
Щоб переглянути ACL, потрібно використати команду getfacle
-- getfacle FILE_NAME
Якщо ви хочете встановити дозволи ACL, вам потрібно скористатися командою setfacl
.
Shell > setfacl <option> <FILE_NAME>
Опція | Опис |
---|---|
-m | змінити поточний ACL файлу(ів) |
-x | видалити записи з ACL файлу(ів) |
-b | видалити всі розширені записи ACL |
-d | операції застосовуються до ACL за замовчуванням |
-k | видалити ACL за замовчуванням |
-R | повертатися до підкаталогів |
Використовуйте приклад вчителя, згаданий на початку статті, щоб проілюструвати використання ACL.
# The teacher is the root user
Shell > groupadd class1
Shell > mkdir /project
Shell > chown root:class1 /project
Shell > chmod 770 /project
Shell > ls -ld /project/
drwxrwx--- 2 root class1 4096 Jan 12 12:58 /project/
# Put the students in the class into the class1 group
Shell > useradd frank
Shell > passwd frank
Shell > useradd aron
Shell > passwd aron
Shell > gpasswd -a frank class1
Shell > gpasswd -a aron class1
# A student from another school came to listen to the teacher
Shell > useradd tom
Shell > passwd tom
# If it is a group, "u" here should be replaced by "g"
Shell > setfacle -m u:tom:rx /project
# "+" sign is added in the output message
Shell > ls -ld /project/
drwxrwx---+ 2 root class1 4096 Jan 12 12:58 /project/
Shell > getfacl -p /project/
# file: /project/
# owner: root
# group: class1
user::rwx
user:tom:r-x
group::rwx
mask::rwx
other::---
Максимально дійсні дозволи ACL¶
Під час використання команди getfacl
, що означає "mask:: rwx" у вихідному повідомленні? mask використовується для визначення максимально допустимих дозволів. Дозволи, надані користувачеві, не є справжніми дозволами, справжні дозволи можна отримати, лише використовуючи «логічне та» дозволів користувача та дозволів маски.
примітка
«Логічне і» означає: що якщо все вірно, результат вірний; якщо є одна помилка, результат є помилкою.
Permissions set by users | Mask permissions | Result |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
примітка
Оскільки типовою маскою є rwx, для дозволів ACL будь-якого користувача результатом є їхні власні дозволи.
Ви також можете налаштувати дозволи маски:
Shell > setfacl -m u:tom:rwx /project
Shell > setfacl -m m:rx /project
Shell > getfacl -p /project/
# file: project/
# owner: root
# group: class1
user::rwx
user:tom:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::---
Видалити дозвіл ACL¶
# Delete the ACL permissions of user/group in the specified directory
Shell > setfacl -x u:USER_NAME FILE_NAME
Shell > setfacl -x g:GROUP_NAME FILE_NAME
# Removes all ACL permissions for the specified directory
Shell > setfacl -b FILE_NAME
Дозволи за замовчування та рекурсія ACL дозволів¶
Що таке рекурсія дозволів ACL? Для дозволів ACL це означає, що коли батьківський каталог встановлює дозволи ACL, усі підкаталоги та підфайли матимуть однакові дозволи ACL.
примітка
Рекурсія підходить для файлів/каталогів, які вже існують у каталозі.
Розглянемо наступний приклад:
Shell > setfacl -m m:rwx /project
Shell > setfacl -m u:tom:rx /project
Shell > cd /project
Shell > touch file1 file2
# Because there is no recursion, the file here does not have ACL permission.
Shell > ls -l
-rw-r--r-- 1 root root 0 Jan 12 14:35 file1
-rw-r--r-- 1 root root 0 Jan 12 14:35 file2
Shell > setfacl -m u:tom:rx -R /project
Shell > ls -l /project
-rw-r-xr--+ 1 root root 0 Jan 12 14:35 file1
-rw-r-xr--+ 1 root root 0 Jan 12 14:35 file2
Тепер виникає запитання: якщо я створю новий файл у цьому каталозі, чи матиме він дозвіл ACL? Відповідь – ні, тому що новостворений файл з’являється після виконання команди setfacl-m u:tom:rx -R /project
.
Shell > touch /project/file3
Shell > ls -l /project/file3
-rw-r--r-- 1 root root 0 Jan 12 14:52 /project/file3
Якщо ви хочете, щоб новостворений каталог/файл також мав дозволи ACL, вам потрібно використовувати дозволи ACL за замовчуванням.
Shell > setfacl -m d:u:tom:rx /project
Shell > cd /project && touch file4 && ls -l
-rw-r-xr--+ 1 root root 0 Jan 12 14:35 file1
-rw-r-xr--+ 1 root root 0 Jan 12 14:35 file2
-rw-r--r-- 1 root root 0 Jan 12 14:52 file3
-rw-rw----+ 1 root root 0 Jan 12 14:59 file4
Shell > getfacl -p /project
# file: /project
# owner: root
# group: class1
user::rwx
user:tom:r-x
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:tom:r-x
default:group::rwx
default:mask::rwx
default:other::---
Інформація
За замовчуванням і рекурсія використання дозволів ACL вимагає, щоб робочим об’єктом команди був каталог! Якщо об’єктом операції є файл, буде виведено повідомлення про помилку.
SetUID¶
Роль "SetUID":
- Лише виконувані двійкові файли можуть установлювати дозволи SUID.
- Виконавець команди повинен мати дозвіл x на програму.
- Виконавець команди отримує інформацію про власника програмного файлу під час виконання програми.
- Зміна ідентичності дійсна лише під час виконання, і після завершення бінарної програми ідентифікація виконавця відновлюється до початкової ідентифікації.
Чому GNU/Linux потрібні такі дивні дозволи? Візьмемо для прикладу найпоширенішу команду passwd
:
Як бачите, звичайні користувачі мають лише r та x, але x власника стає s, доводячи, що команда passwd
має дозволи SUID.
Добре відомо, що звичайні користувачі (uid >= 1000) можуть змінювати свої паролі. Фактичний пароль зберігається у файлі /etc/shadow, але дозвіл файлу тіней становить 000, і звичайні користувачі не мають жодних дозволів.
Shell > ls -l /etc/shadow
---------- 1 root root 874 Jan 12 13:42 /etc/shadow
Оскільки звичайні користувачі можуть змінити свій пароль, вони мають записати пароль у файл /etc/shadow. Коли звичайний користувач виконує команду passwd
, він тимчасово змінює власника файлу -- root. Для файлу shadow root не може бути обмежено дозволами. Ось чому команда passwd
потребує дозволу SUID.
Як згадувалося раніше, базові дозволи можуть бути представлені числами, наприклад 755, 644 і так далі. SUID представлено 4. Для виконуваних двійкових файлів ви можете встановити такі дозволи -- 4755.
# Set SUID permissions
Shell > chmod 4755 FILE_NAME
# or
Shell > chmod u+s FILE_NAME
# Remove SUID permission
Shell > chmod 755 FILE_NAME
# or
Shell > chmod u-s FILE_NAME
Важливо
Якщо власник виконуваного двійкового файлу/програми не має x, використання великої літери S означає, що файл не може використовувати дозволи SUID.
# Suppose this is an executable binary file
Shell > vim suid.sh
#!/bin/bash
cd /etc && ls
Shell > chmod 4644 suid.sh
Важливо
Оскільки SUID може тимчасово змінити звичайних користувачів на root, вам потрібно бути особливо обережними з файлами з цим дозволом під час обслуговування сервера. Ви можете знайти файли з дозволами SUID за допомогою такої команди:
Shell > find / -perm -4000 -a -type f -exec ls -l {} \;
SetGID¶
Роль "SetGID":
- Лише виконувані двійкові файли можуть установлювати дозволи SGID.
- Виконавець команди повинен мати дозвіл x на програму.
- Виконавець команди отримує ідентичність групи власників програмного файлу під час виконання програми.
- Зміна ідентичності дійсна лише під час виконання, і після завершення бінарної програми ідентифікація виконавця відновлюється до початкової ідентифікації.
Візьмемо, наприклад, команду locate
:
Shell > rpm -ql mlocate
/usr/bin/locate
...
/var/lib/mlocate/mlocate.db
Shell > ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 4151779 1月 14 11:43 /var/lib/mlocate/mlocate.db
Shell > ll /usr/bin/locate
-rwx--s--x. 1 root slocate 42248 4月 12 2021 /usr/bin/locate
Команда locate
використовує файл бази даних mlocate.db для швидкого пошуку файлів.
Оскільки команда locate
має дозвіл SGID, коли виконавець (звичайні користувачі) виконує команду locate
, група власників перемикається на slocate. slocate
має дозвіл r для файлу /var/lib/mlocate/mlocate.db.
SGID позначається числом 2, тому команда locate
має дозвіл 2711.
# Set SGID permissions
Shell > chmod 2711 FILE_NAME
# or
Shell > chmod g+s FILE_NAME
# Remove SGID permission
Shell > chmod 711 FILE_NAME
# or
Shell > chmod g-s FILE_NAME
Важливо
Якщо група власників виконуваного двійкового файлу/програми не має x, використовуйте S у верхньому регістрі, щоб вказати, що дозволи SGID файлу не можна використовувати належним чином.
# Suppose this is an executable binary file
Shell > touch sgid
Shell > chmod 2741 sgid
Shell > ls -l sgid
-rwxr-S--x 1 root root 0 Jan 14 12:11 sgid
SGID можна використовувати не лише для виконуваного бінарного файлу/програми, але й для каталогів, але він використовується рідко.
- Звичайні користувачі повинні мати права доступу rwx до каталогу.
- Для файлів, створених звичайними користувачами в цьому каталозі, групою власників за замовчуванням є група власників каталогу.
Наприклад:
Shell > mkdir /SGID_dir
Shell > chmod 2777 /SGID_dir
Shell > ls -ld /SGID_dir
drwxrwsrwx 2 root root 4096 Jan 14 12:17 SGID_dir
Shell > su - tom
Shell(tom) > cd /SGID_dir && touch tom_file && ls -l
-rw-rw-r-- 1 tom root 0 Jan 14 12:26 tom_file
Важливо
Оскільки SGID може тимчасово змінити групу власників звичайних користувачів на root, вам потрібно приділяти особливу увагу файлам із цим дозволом під час обслуговування сервера. Ви можете знайти файли з дозволами SGID за допомогою такої команди:
Shell > find / -perm -2000 -a -type f -exec ls -l {} \;
Sticky BIT¶
Роль "Sticky BIT":
- Дійсний лише для каталогу.
- Звичайні користувачі мають дозволи w і x на цей каталог.
- Якщо Sticky Bit відсутній, звичайні користувачі з дозволом w можуть видалити всі файли в цьому каталозі (включаючи файли, створені іншими користувачами). Після того, як каталозі буде надано дозвіл SBIT, лише користувач root може видалити всі файли. Навіть якщо звичайні користувачі мають дозвіл w, вони можуть видаляти лише файли, створені власноруч (файли, створені іншими користувачами, не можуть бути видалені).
SBIT представлено числом 1.
Чи може файл/каталог мати дозвіл 7755? Ні, вони спрямовані на різні об'єкти. SUID призначений для виконуваних двійкових файлів; SGID використовується для виконуваних двійкових файлів і каталогів; SBIT призначений лише для каталогів. Тобто вам потрібно встановити ці спеціальні дозволи відповідно до різних об’єктів.
Каталог /tmp має дозвіл SBIT. Приклад:
# The permissions of the /tmp directory are 1777
Shell > ls -ld /tmp
drwxrwxrwt. 8 root root 4096 Jan 14 12:50 /tmp
Shell > su - tom
Shell > cd /tmp && touch tom_file1
Shell > exit
Shell > su - jack
Shell(jack) > cd /tmp && rm -rf tom_file1
rm: cannot remove 'tom_file1': Operation not permitted
Shell(jack) > exit
# The file has been deleted
Shell > su - tom
Shell(tom) > rm -rf /tmp/tom_file1
примітка
користувачі root (uid=0) не обмежені дозволами SUID, SGID і SBIT.
chattr¶
Функція дозволу chattr: використовується для захисту важливих файлів або каталогів у системі від видалення внаслідок неправильної роботи.
Використання команди chattr
-- chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files...
Формат символьного режиму: +-=[aAcCdDeFijPsStTu].
- «+» означає збільшення дозволів;
- «-» означає зменшення дозволів;
- "=" означає дорівнює дозволу.
Дозволи, які найчастіше використовуються (також називаються атрибутами), це a та i.
Опис атрибута i:¶
Видалення | Модифікація | Додавання вмісту файлу | Перегляд | Створення файлу | |
---|---|---|---|---|---|
файл | × | × | × | √ | - |
каталог | x (Каталог і файли в каталозі) |
√ (Файли в каталозі) |
√ (Файли в каталозі) |
√ (Файли в каталозі) |
x |
Приклади для файлу:
Shell > touch /tmp/filei
Shell > vim /tmp/filei
123
Shell > chattr +i /tmp/filei
Shell > lsattr -a /tmp/filei
----i---------e----- /tmp/filei
Shell > rm -rf /tmp/filei
rm: cannot remove '/tmp/filei': Operation not permitted
# Cannot be modified freely
Shell > vim /tmp/file1
Shell > echo "adcd" >> /tmp/filei
-bash: /tmp/filei: Operation not permitted
Shell > cat /tmp/filei
123
Приклади для каталогу:
Shell > mkdir /tmp/diri
Shell > cd /tmp/diri && echo "qwer" > f1
Shell > chattr +i /tmp/diri
Shell > lsattr -ad /tmp/diri
----i---------e----- /tmp/diri
Shell > rm -rf /tmp/diri
rm: cannot remove '/tmp/diri/f1': Operation not permitted
# Allow modification
Shell > vim /tmp/diri/f1
qwer-tom
Shell > echo "jim" >> /tmp/diri/f1
Shell > cat /tmp/diri/f1
qwer-tom
jim
Shell > touch /tmp/diri/file2
touch: settng time of '/tmp/diri/file2': No such file or directory
Видалення атрибута i з наведеного вище прикладу:
Shell > chattr -i /tmp/filei /tmp/diri
Опис атрибута a:¶
Видалення | Модифікація | Додавання вмісту файлу | Перегляд | Створення файлу | |
---|---|---|---|---|---|
файл | × | × | √ | √ | - |
каталог | x (Каталог і файли в каталозі) |
x (Файли в каталозі) |
√ (Файли в каталозі) |
√ (Файли в каталозі) |
√ |
Приклади для файлу:
Shell > touch /etc/tmpfile1
Shell > echo "zxcv" > /etc/tmpfile1
Shell > chattr +a /etc/tmpfile1
Shell > lsattr -a /etc/tmpfile1
-----a--------e----- /etc/tmpfile1
Shell > rm -rf /etc/tmpfile1
rm: cannot remove '/etc/tmpfile1': Operation not permitted
# Cannot be modified freely
Shell > vim /etc/tmpfile1
Shell > echo "new line" >> /etc/tmpfile1
Shell > cat /etc/tmpfile1
zxcv
new line
Приклади для каталогу:
Shell > mkdir /etc/dira
Shell > cd /etc/dira && echo "asdf" > afile
Shell > chattr +a /etc/dira
Shell > lsattr -ad /etc/dira
-----a--------e----- /etc/dira/
Shell > rm -rf /etc/dira
rm: cannot remove '/etc/dira/afile': Operation not permitted
# Free modification is not allowed
Shell > vim /etc/dira/afile
asdf
Shell > echo "new line" >> /etc/dira/afile
Shell > cat /etc/dira/afile
asdf
new line
# Allow creation of new files
Shell > touch /etc/dira/newfile
Видалення атрибута a з наведеного вище прикладу:
Shell > chattr -a /etc/tmpfile1 /etc/dira/
Питання
Що станеться, якщо я встановлю атрибут ai для файлу? Ви не можете нічого робити з файлом, окрім перегляду.
Що з довідником? Дозволено: вільне модифікування, додавання вмісту файлу та перегляд. Заборонено: видаляти та створювати файли.
sudo¶
Роль «sudo»:
- Через користувача root призначаються команди, які може виконувати лише користувач root (uid=0), для виконання звичайним користувачам.
- Об’єктом операції «sudo» є системна команда.
Ми знаємо, що лише адміністратор root має дозвіл на використання команд /sbin/ і /usr/sbin/ у каталозі GNU/Linux. Загалом, компанія має команду, яка обслуговує набір серверів. Цей набір серверів може стосуватися однієї комп’ютерної кімнати в одному географічному місці або може посилатися на комп’ютерну кімнату в кількох географічних місцях. Керівник групи використовує дозволи користувача root, а інші члени команди можуть мати дозволи лише звичайного користувача. Оскільки у відповідальної особи багато роботи, немає часу підтримувати щоденну роботу сервера, більшу частину роботи мають підтримувати звичайні користувачі. Однак звичайні користувачі мають багато обмежень на використання команд, і на цьому етапі вам потрібно використовувати дозволи sudo.
Щоб надати дозволи звичайним користувачам, ви повинні використовувати користувача root (uid=0).
Ви можете розширити повноваження звичайних користувачів за допомогою команди visudo
, фактично ви змінюєте файл /etc/sudoers.
Shell > visudo
...
88 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
89
90 ## Next comes the main part: which users can run what software on
91 ## which machines (the sudoers file can be shared between multiple
92 ## systems).
93 ## Syntax:
94 ##
95 ## user MACHINE=COMMANDS
96 ##
97 ## The COMMANDS section may have other options added to it.
98 ##
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
↓ ↓ ↓ ↓
1 2 3 4
...
Частина | Опис |
---|---|
1 | Ім’я користувача або ім’я групи власників. Посилається на те, якому користувачу/групі надано дозволи. Якщо це група власників, вам потрібно написати «%», наприклад %root. |
2 | Яким машинам дозволено виконувати команди. Це може бути одна IP-адреса, сегмент мережі або ВСІ. |
3 | Вказує на які ідентичності можна трансформувати. |
4 | Авторизована команда, яка має бути представлена абсолютним шляхом. |
Наприклад:
Shell > visudo
...
101 tom ALL=/sbin/shutdown -r now
...
# You can use the "-c" option to check for errors in /etc/sudoers writing.
Shell > visudo -c
Shell > su - tom
# View the available sudo commands.
Shell(tom) > sudo -l
# Щоб використовувати доступну команду sudo, звичайним користувачам потрібно додати sudo перед командою.
Shell(tom) > sudo /sbin/shutdown -r now
Якщо ваша команда авторизації /sbin/shutdown
, це означає, що авторизовані користувачі можуть використовувати будь-які параметри команди.
Важливо
Оскільки sudo — це операція "надважної дії", вам потрібно бути обережними, маючи справу з файлами /etc/sudoers!
Author: tianci li
Contributors: Serge, Ganna Zhyrnova