<Попередній | зміст | Наступна>
chmod – змінити режим файлу
Щоб змінити режим (дозволи) файлу або каталогу, CHMOD використовується команда. Майте на увазі, що тільки власник файлу або суперкористувач може змінити режим файлу або каталогу. CHMOD підтримує два різні способи визначення змін режиму: вісімкове представлення чисел або символічне представлення. Спочатку ми розглянемо вісімкове представлення чисел.
Що таке восьмерика?
Вісімкова (основа 8) і її родич, шістнадцяткова (основа 16) — це системи числення, які часто використовуються для вираження чисел на комп’ютерах. Ми, люди, через те, що ми (або принаймні більшість з нас) народилися з десятьма пальцями, рахуємо за основою 10-ти. Комп’ютери, з іншого боку, народилися лише з одним пальцем, і, таким чином, усі рахунки виконують у двійковій формі (основа 2). Їхня система числення містить лише дві цифри, 0 і 1. Тому в двійковій системі підрахунок виглядає так:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011...
У вісімковій підрахунок ведеться з числами від нуля до семи, наприклад: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, 21...
Шістнадцятковий підрахунок використовує цифри від нуля до дев’яти плюс літери від «A» до «F»:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13...
Хоча ми можемо побачити сенс у двійковому (оскільки комп’ютери мають лише один палець), для чого хороші вісімкові та шістнадцяткові? Відповідь пов’язана із зручністю для людини. Багато разів невеликі порції даних представлені на комп’ютерах як розрядні візерунки. Візьмемо, наприклад, колір RGB. На більшості комп’ютерних дисплеїв кожен піксель складається з трьох кольорових компонентів: восьми бітів червоного, восьми бітів зеленого та восьми бітів синього. Прекрасний середній синій буде 24-значним числом:
010000110110111111001101
Як би ви хотіли читати і писати такі числа цілий день? Я так не думав. Тут допоможе інша система числення. Кожна цифра шістнадцяткового числа представляє чотири цифри в двійковому вигляді. У вісімковій системі кожна цифра представляє три двійкові цифри. Отже, наш 24-значний середній синій можна стиснути до шестизначного шістнадцяткового числа:
436FCD
Оскільки цифри шістнадцяткового числа «збігаються» з бітами двійкового числа, ми бачимо, що червоний компонент нашого кольору дорівнює 43, зелений 6F і синій CD.
У наші дні шістнадцятковий запис (часто його називають «шістнадцятковим») є більш поширеним, ніж вісімковий, але, як ми скоро побачимо, здатність вісімки виражати три біти двійкового коду буде дуже корисною...
З вісімковим позначенням ми використовуємо вісімкові числа, щоб встановити шаблон бажаних дозволів. Оскільки кожна цифра вісімкового числа представляє три двійкові цифри, це добре відображається на
схема, яка використовується для збереження файлового режиму. Ця таблиця показує, що ми маємо на увазі:
Таблиця 9-4: Режими файлів у двійковому та восьмичному форматі
Восьмий | двійковий | Файловий режим |
0 | 000 | --- |
1 | 001 | --x |
2 | 010 | -w- |
3 | 011 | -wx |
4 | 100 | р-- |
5 | 101 | rx |
6 | 110 | rw- |
7 | 111 | rwx |
Використовуючи три вісімкові цифри, ми можемо встановити режим файлу для власника, власника групи та
світ:
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 me me 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw------- 1 я я 0 2016-03-06 14:52 foo.txt
[me@linuxbox ~]$ > foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw-rw-r-- 1 me me 0 2016-03-06 14:52 foo.txt [me@linuxbox ~]$ chmod 600 foo.txt
[me@linuxbox ~]$ ls -l foo.txt
-rw------- 1 я я 0 2016-03-06 14:52 foo.txt
Передаючи аргумент «600», ми змогли встановити дозволи власника на читання та запис, видаливши всі дозволи власника групи та світу. Хоча запам’ятовування вісімкового відображення в двійкове може здатися незручним, зазвичай вам доведеться використовувати лише кілька поширених: 7 (rwx) 6 (rw-) 5 (rx) 4 (р--) і 0 (---).
chmod також підтримує символічну нотацію для визначення режимів файлів. Символьне позначення поділяється на три частини: на кого вплине зміна, яка операція буде виконана і який дозвіл буде встановлено. Щоб указати, хто постраждав, використовується комбінація символів «u», «g», «o» та «a» наступним чином:
Таблиця 9-5: Символічне позначення chmod
Значення символу
Значення символу
u Скорочено від «користувач», але означає власника файлу або каталогу.
g Власник групи.
o Скорочено від «інші», але означає світ.
скорочення від «всі». Комбінація «u», «g» і «o».
Якщо символ не вказано, буде вважатися «все». Операція може бути «+», що вказує на додавання дозволу, «-», що вказує на те, що дозвіл має бути відібрано, або «=», що вказує, що повинні застосовуватися лише вказані дозволи, а всі інші підлягають видаленню.
Дозволи вказуються символами «r», «w» і «x». Ось кілька прикладів символічного позначення:
Таблиця 9-6: Приклади символічних позначень chmod
Позначення Значення
Позначення Значення
u+x Додати дозвіл на виконання для власника.
ux Видалити дозвіл на виконання у власника.
+x Додати дозвіл на виконання для власника, групи та світу.
Дорівнює a + x.
o-rw Видалити дозвіл на читання та запис у всіх, окрім власника та власника групи.
go=rw Налаштувати власника групи та будь-кого, крім власника, дозвіл на читання та запис. Якщо власник групи або світ раніше мали дозволи на виконання, вони видаляються.
u+x,go=rx Додайте дозвіл на виконання для власника та встановіть дозволи для групи та інших для читання та виконання. Кілька специфікацій можуть бути розділені комами.
Деякі люди вважають за краще використовувати вісімкове позначення, комусь дуже подобається символічне. Символічне позначення дійсно пропонує перевагу, дозволяючи вам встановити один атрибут, не порушуючи жодного з інших.
Погляньте на CHMOD man сторінку для більш детальної інформації та списку параметрів. Застереження щодо параметра «--recursive»: він діє як на файли, так і на каталоги, тому він не такий корисний, як можна було б сподіватися, оскільки ми рідко хочемо, щоб файли та каталоги мали однакові дозволи.