chmod
Команда chmod
используется в Linux и других Unix-подобных системах для изменения прав доступа к файлам и каталогам.
Формат команды и аргументы
chmod [опции] права файл
Например:
chmod 755 script.sh
Подробности об аргументах chmod
Команда chmod
принимает различные аргументы:
Общий синтаксис
chmod [опции] [символьные или числовые права] файл(ы)
Часто используемые опции:
Опция | Описание |
---|---|
-R | Рекурсивно изменить права во всех подкаталогах и файлах |
-v | Подробный вывод — показывает, какие изменения были сделаны |
-c | Показывает изменения только для тех файлов, чьи права действительно были изменены |
--reference=ФАЙЛ | Установить права доступа, как у другого файла |
Примеры:
chmod -R 755 /var/www # Рекурсивно задать праваchmod -v 644 file.txt # Показать результат изменения правchmod --reference=example.txt config.txt # Установить такие же права, как у example.txt
Чтение прав доступа
Команда ls -l
показывает права доступа к файлам:
-rwxr-xr-- 1 user group 1234 Май 7 12:00 script.sh
Разбор:
-
Первая буква
-
— тип (файл, каталог и т.д.) -
Далее три блока по 3 символа:
rwx
— для владельца (user)r-x
— для группы (group)r--
— для остальных (others)
Таблица прав и чисел
Каждое разрешение соответствует числу:
Символы | Значение | Описание |
---|---|---|
r | 4 | чтение (read) |
w | 2 | запись (write) |
x | 1 | исполнение (execute) |
- | 0 | отсутствие разрешения |
Комбинации:
Права | Цифра | Обозначение |
---|---|---|
rwx | 7 | 4 + 2 + 1 |
rw- | 6 | 4 + 2 |
r-x | 5 | 4 + 1 |
r-- | 4 | 4 |
-wx | 3 | 2 + 1 |
-w- | 2 | 2 |
--x | 1 | 1 |
--- | 0 | 0 |
Примеры chmod
chmod 755 file # Владелец: rwx, группа: r-x, остальные: r-xchmod 644 file # Владелец: rw-, группа: r--, остальные: r--chmod 700 file # Владелец: rwx, остальные: ---chmod 600 secret # Только владелец может читать и писатьchmod +x script.sh # Добавить право на выполнение для всехchmod -x script.sh # Убрать право на выполнение для всех
Работа с каталогами
Для каталогов флаг x
означает “доступ внутрь каталога”. Без него пользователь не может зайти в папку, даже если у него есть r
(чтение).
Пример:
chmod 755 mydir # Владелец: полный доступ, другие могут просматриватьchmod 700 mydir # Только владелец может заходить в каталог
Рекурсивное изменение прав
Чтобы изменить права доступа во всех подкаталогах и файлах, используется флаг -R
:
chmod -R 755 /путь/к/каталогу
Это установит одинаковые права на все каталоги и файлы внутри указанного пути.
Осторожно с 777
chmod -R 777 /var/www # Очень небезопасно! Все получат полный доступ
Рекомендованный способ — разделять файлы и каталоги:
# Установить права 755 на все каталогиfind /путь -type d -exec chmod 755 {} \;
# Установить права 644 на все файлыfind /путь -type f -exec chmod 644 {} \;
Пояснение к аргументам:
find
— команда поиска файлов и каталогов/путь
— начальный путь, где выполняется поиск-type f
— искать только обычные файлы (-type d
— каталоги)-exec
— выполнить указанную команду над каждым найденным элементомchmod 644 {}
— применитьchmod
к текущему найденному файлу (подставляется вместо{}
)\;
— завершает команду-exec
(обязательно экранировать точку с запятой в bash)
Это особенно полезно для веб-серверов и проектов, где важно разграничивать доступ к файлам и каталогам.
## Изменение прав по символам
Вместо чисел можно использовать буквенную форму:
```bashchmod u+x file # Добавить исполнение владельцуchmod go-w file # Убрать запись для группы и остальныхchmod a+r file # Добавить чтение всем (u+g+o)
Где:
u
— владелец (user)g
— группа (group)o
— остальные (others)a
— все (all)
Проверка прав
ls -l filename # Просмотр правstat filename # Подробная информация о файле
Заключение
Команда chmod
— важный инструмент для управления доступом к файлам и каталогам в Linux. Понимание цифрового и символьного форматов помогает эффективно настраивать безопасность системы.