Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. Синтаксис в общем случае:
но чем она характеризуется, так это тем, что изменение режима может принимать разные формы. Оно может быть указано двумя способами:
Примеры:
В следующем примере показано, как разрешить всем пользователям читать файл, вносить в него изменения и сохранять их. Для этого надо изменить права доступа группы «остальные».
Введите в командной строке:
Чтобы запретить чтение файла example1.txt и запись в него, используйте команду chmod.
В результате права доступа будут выглядеть так:
Вот список расшифровок данных сокращений:
Хотите проверить ваши знания? Отберите у всех пользователей все права на файл example1.txt.
Приведем несколько примеров использования команды chmod:
Опция -R позволяет изменять права для всего дерева каталогов.
Поскольку каталоги нельзя «исполнять» как приложения, добавление или отмена соответствующего права означает разрешение (или запрет) просмотра каталога.
Например, если вы не позволили остальным пользователям исполнять каталог docs/, не имеет значения, кому дано право на чтение и запись. Никто не получит доступ к содержимому каталога, если не знает точное имя находящегося в нем файла.
Наберите, например:
Если теперь вы попытаетесь изменить каталог при помощи команды cd docs, получите отказ:
chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...] |
- в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде
00 , гдесоответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид 0 , а разрешения для «остальных» -. Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются; - при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения>.
Примеры:
- chmod -R o-w /shared/docs: рекурсивно удаляет разрешение на запись для остальных у всех файлов и подкаталогов в каталоге /shared/docs/.
- chmod -R og-w,o-x private/: рекурсивно удаляет разрешение на запись для группы и остальных у всего каталога private/, и удаляет разрешение на выполнение для остальных.
- chmod -c 644 misc/file*: изменяет разрешения для всех файлов в каталоге misc/, чьи имена начинаются с file на rw-r--r-- (т.е. разрешение на чтение для всех и разрешение на запись только для владельца), и сообщает только о тех файлах, которые были подвержены действию команды.
Предостережение | |
---|---|
Помните, что ограничение доступа к файлам — это способ защитить систему. Всякий раз, когда вы разрешаете кому-нибудь читать файл, записывать в него или запускать его на исполнение, вы рискуете, что файл будет изменен или удален. Как правило, доступ к файлу следует разрешать только тем пользователям, которым это действительно необходимо. |
Введите в командной строке:
ls -l example1.txtНа экран будет выведена следующая информация:
-rw-rw-r-- 1 user user 42 Мар 24 22:07 example1.txtТеперь введите такую команду:
chmod o+w example1.txtКоманда o+w означает, что вы даете права «остальным» («others», обозначается буквой «о») на запись в файл example1.txt. Чтобы увидеть, к чему привело выполнение указанной команды, опять посмотрим на файл:
-rw-rw-rw- 1 user user 42 Мар 24 22:09 example1.txtТеперь все могут читать и осуществлять запись в файл.
Чтобы запретить чтение файла example1.txt и запись в него, используйте команду chmod.
chmod go-rw example1.txtКоманда go-rw сообщает системе, что вы хотите запретить чтение файла example1.txt и запись в него группе и «остальным».
В результате права доступа будут выглядеть так:
-rw------- 1 user user 42 Мар 24 22:10 example1.txtРассмотренные классы и права являются сокращениями от соответствующих английских слов, поэтому их легко запомнить: все, что нужно помнить, — это несколько символов и букв.
Вот список расшифровок данных сокращений:
- Классы
- u — пользователь, который является владельцем файла (от английского «user»);
g — группа, к которой принадлежит пользователь (от английского «group»);
o — остальные (не владелец и не группа-владелец, от английского «others»);
a — все (u, g и o, от английского «all»). - Права
- r — право на чтение;
w — право на запись;
x — право на исполнение. - Действия
- + — дает право;
- — отбирает право;
= — оставляет только данное право.
chmod a-rwx example1.txtА сейчас проверьте, можете ли вы прочитать данный файл командой cat example1.txt. Вы должны увидеть следующее:
cat: example1.txt: Permission deniedОтозвав все права, включая ваши собственные, вы заблокировали доступ к файлу. Но так как файл принадлежит вам, всегда можно вернуть права следующей командой:
chmod u+rw example1.txtЧтобы убедиться что вы можете прочитать данный файл, воспользуйтесь командой cat example1.txt.
Приведем несколько примеров использования команды chmod:
- g+w — дает группе-владельцу право на запись;
- o-rwx — отбирает все права у остальных пользователей;
- u+x — дает владельцу право на выполнение файла;
- a+rw — позволяет любому читать и записывать в файл;
- ug+r — позволяет владельцу и группе читать файл;
- g=rx — позволяет группе читать и исполнять файл (не записывать в него).
Поскольку каталоги нельзя «исполнять» как приложения, добавление или отмена соответствующего права означает разрешение (или запрет) просмотра каталога.
Например, если вы не позволили остальным пользователям исполнять каталог docs/, не имеет значения, кому дано право на чтение и запись. Никто не получит доступ к содержимому каталога, если не знает точное имя находящегося в нем файла.
Наберите, например:
chmod a-x docsчтобы отозвать у всех пользователей право на исполнение.
Если теперь вы попытаетесь изменить каталог при помощи команды cd docs, получите отказ:
bash: docs: Permission deniedВерните права себе и своей группе:
chmod ug+x docsЕсли вы сейчас проверите результаты своих действий при помощи команды ls -l, вы увидите, что доступ к каталогу docs/ запрещен только остальным пользователям.
1 комментарий:
спасибо, очень доступно, реально хорошая статья
Отправить комментарий