Если вы работаете с операционной системой Linux или любой другой UNIX-подобной системой, то команда chmod — одна из самых важных и часто используемых команд для управления доступом к файлам и папкам.
Правильное использование chmod помогает обеспечить безопасность данных, ограничить или расширить права доступа, а также управлять возможностями пользователей системы.
- Основные понятия: права доступа и их структура
- Основные опции и параметры команды chmod
- Изменения прав для директории
- Практические примеры использования chmod
- Советы по использованию chmod
- Безопасность и chmod
- Итог: что нужно запомнить о chmod
В этой статье мы подробно разберем, что такое команда chmod, как она работает, какие параметры у нее есть, и приведем множество практических примеров.
Мы расскажем о символьном и числовом способе задания прав и дадим советы по настройке прав.
Что такое команда chmod?
chmod — это команда в Linux, которая позволяет изменять права доступа к файлам и папкам. Название происходит от английских слов change mode — «изменить режим».
Эта команда управляет тем, кто и что может делать с файлами: читать, писать, выполнять.
Почему команда chmod так важна?
Права доступа — это основа безопасности системы. Они позволяют ограничить возможность просмотра, редактирования или запуска файлов для определенных пользователей или групп.
Например, вы не хотите, чтобы посторонние пользователи могли редактировать ваши важные документы или запускать ваши скрипты.
Без правильных прав можно случайно дать злоумышленнику доступ к конфиденциальной информации или, наоборот, ограничить собственную работу.
Поэтому умение правильно управлять правами — важный навык для любого пользователя Linux.
Основные понятия: права доступа и их структура
Чтобы понять, как работает команда chmod, нужно разобраться в том, как устроены права доступа в Linux.
Права доступа делятся на три категории:
- Чтение (read, r) — возможность просматривать содержимое файла или список файлов в папке.
- Запись (write, w) — возможность изменять содержимое файла или добавлять/удалять файлы в папке.
- Выполнение (execute, x) — возможность запускать файл как программу или скрипт.
А так же в системе используется деление пользователей на три категории:
- Владелец файла (user, u) — тот, кто создал файл или кому назначены права.
- Группа (group, g) — группа пользователей, к которой принадлежит файл.
- Все остальные (others, o) — все остальные пользователи системы.
Есть еще общее обозначение всех категорий (all, a) – права будут установлены для всех трех категорий.
Как отображаются права доступа
Для просмотра прав доступа используется команда ls -l, ее можно применять как для просмотра всей директории так и для просмотра прав на отдельный файл. Подробнее о команде ls можно прочитать в отдельной статье:
[root@waky practice]# ls -l
итого 4
drwxr-xr-x. 3 root root 35 июл 30 12:17 dir1
drwxr-xr-x. 2 root root 23 июл 30 12:17 dir3
-rwxr-xr--. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
Права отображаются в виде строки из 10 символов, например у file0.txt:
-rwxr-xr--
Первая буква — тип файла (– — обычный файл, d — папка).
Следующие три символа — права владельца (rwx).
Следующие три — права группы (r-x).
Последние три — права остальных (r–).
Числовое обозначение прав
Права можно задавать и числом — это удобно для быстрого изменения. Каждое право имеет числовое значение:
Право | Значение |
чтение (r) | 4 |
запись (w) | 2 |
выполнение (x) | 1 |
Чтобы задать права, складываем нужные числа для каждой группы. Например:
rwx — 4+2+1=7
r-x — 4+0+1=5
r-- — 4+0+0=4
Итак, права можно задавать числом из трех цифр, например:
chmod 754 <файл>
Основные опции и параметры команды chmod
Общий синтаксис команды chmod имеет следующий вид:
chmod [опции] <права> <файл>
опций — дополнительные параметры команды, влияющие на ее исполнение.
права — символьный или числовой набор прав доступа, которые нужно применить.
файл — файл, директория или несколько объектов, для которых нужно изменить права доступа.
Дополнительные опции позволяют влиять на результат исполнения команды. Так наиболее часто используемые опции – вывод подробной информации и изменение прав во всех вложенных поддиректориях.
Вот список опций, которые вы, наверняка, будете использовать чаще всего:
-R или –recursive: рекурсивное изменение прав доступа для всех вложенных файлов и поддиректорий внутри указанной директории.
-f или –silent, –quiet: отключает вывод сообщений об ошибках и предупреждениях.
-v или –verbose: выводит подробный отчет по каждому файлу.
-c или –change: опция похожа на –verbose, но выводит информацию только если с файлом или директорией были произведены изменения.
Команда chmod имеет два основных способа задания прав:
Символьный способ
Используется для изменения прав по отдельным группам. Формат:
chmod [категория пользователей] [операция] [права] <файл>
операция — + (добавить), – (убрать), = (установить точно).
права — r, w, x.
категория пользователей — u (владелец), g (группа), o (остальные), a (все).
Применим к нашему тестовому файлу несколько изменений:
chmod u-x файл
— убрать право на выполнение владельцу.
[root@waky practice]# chmod u-x file0.txt
[root@waky practice]# ls -l file0.txt
-rw-r-xr--. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
chmod g=r файл
— установить право только на чтение для группы.
[root@waky practice]# chmod g=r file0.txt
[root@waky practice]# ls -l file0.txt
-rw-r--r--. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
chmod o+w файл
— добавить право на запись остальным.
[root@waky practice]# chmod o+w file0.txt
[root@waky practice]# ls -l file0.txt
-rw-r--rw-. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
Как видим, каждое применение команды chmod вносило изменение в права доступов для конкретной категории пользователей.
Числовой способ
Задается тремя цифрами, каждая из которых задает права для владельца, группы и остальных.
chmod [числовой набор] <файл>
Поменяем права на наш файл с помощью числовых обозначений:
[root@waky practice]# chmod 755 file0.txt
[root@waky practice]# ls -l file0.txt
-rwxr-xr-x. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
chmod 755 — владелец читает, пишет, выполняет; группа и остальные — читают и выполняют.
[root@waky practice]# chmod 644 file0.txt
[root@waky practice]# ls -l file0.txt
-rw-r--r--. 1 root root 15 авг 18 05:06 file0.txt
[root@waky practice]#
chmod 644 — владелец читает и пишет; остальные — только читают.
Изменения прав для директории
С помощью команды chmod можно менять права доступа, как для обычных файлов так и для директорий.
Права доступа у директории определяют, какие операции можно выполнять внутри нее: просмотр содержимого директории, создание, удаление файлов и поддиректорий внутри и так далее.
Изменение прав на директорию осуществляются так же двумя способами. Давайте рассмотрим несколько примеров установления прав доступа с использованием символьного и числового способа:
Символьный способ:
chmod o-rx директория
— убрать у остальных доступ на чтение и исполнение.
[root@waky practice]# ls -ld dir1/
drwxr-xr-x. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]# chmod o-rx dir1/
[root@waky practice]# ls -ld dir1/
drwxr-x---. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
chmod g+w директория
— добавить группе права на запись .
[root@waky practice]# chmod g+w dir1/
[root@waky practice]# ls -ld dir1/
drwxrwx---. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
chmod a+rx директория
— добавить всем категориям пользователей права на чтение и исполнение.
[root@waky practice]# chmod a+rx dir1/
[root@waky practice]# ls -ld dir1/
drwxrwxr-x. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
Числовой способ:
chmod 700 директория
— все доступы для владельца (чтение, запись, исполнение), двум другим категориям никакого доступа.
[root@waky practice]# chmod 700 dir1/
[root@waky practice]# ls -ld dir1/
drwx------. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
chmod 755 директория
— стандартный набор прав, полный доступ владельцу, остальным категориям пользователей – чтение и выполнение.
[root@waky practice]# chmod 755 dir1/
[root@waky practice]# ls -ld dir1/
drwxr-xr-x. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
chmod 644 директория
— установить права на чтение и запись для владельца, а группе и остальным только на чтение.
[root@waky practice]# chmod 644 dir1/
[root@waky practice]# ls -ld dir1/
drw-r--r--. 3 root root 35 июл 30 12:17 dir1/
[root@waky practice]#
Рекурсивное применение команды chmod
Пожалуй, самая часто используемая опция команды chmod – ее рекурсивное применение. Допустим у нас есть директория с однотипными файлами и мы хотим установить для всех для них одинаковые права доступа.
Чтобы не делать chmod для каждого отдельного файла, нам достаточно использовать флаг -R или –recursive
Например:
[root@waky practice]# ls -l dir1/
итого 0
drwxr-xr-x. 2 root root 23 июл 30 12:17 dir2
-rw-r--r--. 1 root root 0 июл 30 12:17 file1.txt
[root@waky practice]# chmod -R 755 dir1/
[root@waky practice]# ls -l dir1/
итого 0
drwxr-xr-x. 2 root root 23 июл 30 12:17 dir2
-rwxr-xr-x. 1 root root 0 июл 30 12:17 file1.txt
[root@waky practice]#
chmod -R 755
— установит права -rwxr-xr-x
для самой директории и всех файлов и подкатегорий внутри.
[root@waky practice]# chmod -R u+rwx,go-rwx dir1/
[root@waky practice]# ls -l dir1/
итого 0
drwx------. 2 root root 23 июл 30 12:17 dir2
-rwx------. 1 root root 0 июл 30 12:17 file1.txt
[root@waky practice]#
chmod -R u+rwx,go-rwx
— для директории и всех вложений будут установлены все права для владельца и закрыт доступ для группы и остальных.
Рекурсивное изменение прав доступа — удобный способ управления доступом всех вложений директории.
Практические примеры использования chmod
Теперь перейдем к практическим ситуациям, чтобы понять, как применять chmod в реальной жизни.
Пример 1: Сделать скрипт исполняемым для всех
Предположим, вы написали свой скрипт myscript.sh, и хотите, чтобы его мог запускать любой пользователь. По дефолту файл будет иметь набор прав -rw-r--r--
:
[root@waky practice]# ls -l myscript.sh
-rw-r--r--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]# chmod a+x myscript.sh
[root@waky practice]# ls -l myscript.sh
-rwxr-xr-x. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod a+x
добавит право на выполнение (x) для всех категорий (a)(владельца, группы и остальных).
Пример 2: Установить права 644 для файла
Чтобы владелец мог читать и писать, а группа и остальные — только читать:
[root@waky practice]# chmod 644 myscript.sh
[root@waky practice]# ls -l myscript.sh
-rw-r--r--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod 644
– устанавливает стандартный набор прав для файла.
Пример 3: Все права только владельцу
Если нужно оставить только права для владельца, а у остальных убрать все права:
[root@waky practice]# chmod 700 myscript.sh
[root@waky practice]# ls -l myscript.sh
-rwx------. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod 700 – владельцу чтение, запись и исполнение, группе и остальным – ничего.
Пример 4: Сделать файл только для чтения для всех
[root@waky practice]# chmod a=r myscript.sh
[root@waky practice]# ls -l myscript.sh
-r--r--r--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod a=r
– права для всех (a) категорий равны чтению (r)
Пример 5: Добавить право на выполнение только владельцу
[root@waky practice]# chmod u+x myscript.sh
[root@waky practice]# ls -l myscript.sh
-r-xr--r--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod u+x
– добавить (+) исполнение (x) владельцу (u).
Пример 6: Убрать право на выполнение у всех
[root@waky practice]# chmod a-x myscript.sh
[root@waky practice]# ls -l myscript.sh
-r--r--r--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod a-x
– убрать (–) исполнение (x) у всех категорий (a)
Пример 7: Установить точные права: владелец — все, группа — чтение и исполнение, остальные — только чтение
[root@waky practice]# chmod 754 myscript.sh
[root@waky practice]# ls -l myscript.sh
-rwxr-xr--. 1 root root 0 авг 31 05:41 myscript.sh
[root@waky practice]#
chmod 754
– первое число – владелиц, доступы – 7 (чтение, запись, выполнение), второе число – группа , доступы – 5 (чтение и исполнение), третье число – остальные доступы – 4 (только чтение).
Как вы могли заметить символьный и числовой способ задания прав доступа взаимозаменяем. Каждый из способов можно использовать для задания любого набора прав. Их использование – дело привычки.
Обычно если нужно внести небольшие изменения в права, например дать или забрать доступ у одной категории пользователей, удобно использовать символьное способ.
А если мы хотим установить различные права для всех трех категорий пользователей, то это проще сделать одним числовым набором.
Советы по использованию chmod
Не давайте права на выполнение там, где это не нужно. Например, не делайте файлы исполняемыми, если они не предназначены для запуска.
Не делайте важные файлы доступными для всех. Например, не устанавливайте права 777 (чтение, запись, выполнение для всех) без необходимости.
Используйте числовой способ для быстрого задания прав. Особенно, если вы знаете, что хотите.
Проверяйте права перед и после изменений. Это поможет избежать ошибок.
Безопасность и chmod
Правильное управление правами — это залог безопасности системы. Вот несколько рекомендаций:
- Для конфиденциальных данных устанавливайте права 600 или 700.
- Для публичных файлов, которые должны быть доступны всем, используйте 644 для простых файлов или 755 для исполняемых.
- Не давайте права на выполнение файлам, которым это не нужно.
- Регулярно проверяйте права доступа к важным файлам и папкам.
Итог: что нужно запомнить о chmod
chmod — команда для изменения прав доступа к файлам и папкам.
Можно задавать права с помощью символьных обозначений (+, –, =) или чисел.
Правила для числового способа: 4 — чтение, 2 — запись, 1 — выполнение.
Важно правильно управлять правами для обеспечения безопасности.
Перед изменением проверяйте текущие права командой ls -l.
Заключение
Команда chmod — это мощный инструмент, который позволяет вам контролировать доступ к файлам и папкам в Linux.
Знание её основных способов и примеров использования поможет вам стать более уверенным пользователем системы, обеспечит безопасность ваших данных и упростит управление системой.
Практикуйтесь, экспериментируйте, и со временем управление правами станет для вас привычным и простым делом.