Команда chmod (сокращение от "change mode") используется для изменения прав доступа к файлам и папкам в Unix-подобных операционных системах, таких как Linux и macOS. В Git Bash, который является эмуляцией терминала Unix для Windows, команда chmod также поддерживается.
Однако в Windows CMD и PowerShell права доступа к файлам и папкам управляются другими механизмами, и команда chmod там не используется.
Синтаксис:
chmod [опции] <права> <файлы>
Параметры:
1. [опции] — дополнительные флаги для команды chmod, которые могут изменять её поведение:
-R — рекурсивное изменение прав доступа для всех файлов и подкаталогов внутри указанного каталога.
-v — выводит информацию о каждом изменении прав доступа.
-c — выводит информацию только об изменениях.
-f — подавляет отображение ошибок.
--reference=<файл> — применяет права доступа к файлу или директории на основе прав другого файла.
пример:
chmod --reference=example.txt file.txt
Объяснение:
Права доступа к file.txt будут изменены таким образом, чтобы они соответствовали правам файла example.txt.
2. <права> — это права доступа, которые вы хотите установить. Они могут быть представлены в символьной или числовой (октальной) форме.
3. <файлы> — один или несколько файлов или каталогов, для которых нужно изменить права доступа.
Основные права доступа в Unix-подобных системах
В Unix-подобных системах права доступа делятся на три категории:
- Пользователь/Владелец (User - u): владелец файла.
- Группа (Group - g): группа пользователей, к которой принадлежит владелец файла.
- Другие (Others - o): все остальные пользователи на системе.
- Все (all - a): все (при использовании заменяет собой ugo).
Каждая категория может иметь три вида прав:
1. Чтение (r - read): позволяет просматривать содержимое файла.
2. Запись (w - write): позволяет изменять содержимое файла.
3. Исполнение (x - execute): позволяет исполнять файл как программу или скрипт.
Символьное и числовое обозначение прав
Символьное обозначение:
права описываются буквами (r, w, x), например, rwxr-xr--.
Права доступа в символьной форме записываются в виде комбинации:
- Кому назначаются права:
u (user) — владелец файла.
g (group) — группа, к которой принадлежит файл.
o (others) — все остальные пользователи.
a (all) — все: владелец, группа и другие.
- Действие:
+ — добавить указанные права.
- — убрать указанные права.
= — установить точные права (заменить существующие права).
- Типы прав:
r (read) — право на чтение файла/каталога.
w (write) — право на запись (изменение) файла/каталога.
x (execute) — право на выполнение файла как программы или право на доступ к каталогу.
Примеры символьного задания прав:
chmod u+x file.txt
— добавит владельцу файла (user) право на выполнение файла.
chmod go-rw file.txt
— уберет права на чтение и запись для группы и других пользователей.
chmod a=r file.txt
— установит права только на чтение для всех (владельца, группы и других).
Числовое обозначение:
права описываются числовыми кодами. Каждое из прав имеет своё числовое значение:
r = 4 (чтение),
w = 2 (запись),
x = 1 (исполнение).
Для каждой категории прав сумма этих чисел задаёт разрешения для пользователя, группы и других.
Для установки прав вы просто суммируете значения. Например:
- Чтение + Запись = 4 + 2 = 6
- Чтение + Выполнение = 4 + 1 = 5
Пример числовой записи:
chmod 755 file.txt
— это:
7 (4+2+1) — владелец может читать, писать и выполнять.
5 (4+0+1) — группа может читать и выполнять.
5 (4+0+1) — остальные могут читать и выполнять.
Например, права rwxr-xr-- можно записать как 754.
Примеры использования команды chmod
1. Linux и macOS Terminal
Пример 1: Установка прав для файла с использованием числового обозначения
chmod 755 script.sh
Объяснение:
- 7 для владельца (rwx): владелец файла может читать, писать и исполнять файл.
- 5 для группы (r-x): группа может читать и исполнять, но не изменять файл.
- 5 для других (r-x): другие пользователи могут читать и исполнять файл, но не изменять его.
Пример 2: Установка прав с использованием символьного обозначения
chmod u+x script.sh
Объяснение:
- u+x добавляет право на исполнение (execute) для владельца файла (u — user).
- Этот пример обновляет только права исполнения для владельца файла, не затрагивая права для группы и других.
Пример 3: Удаление прав на запись для всех
chmod a-w data.txt
Объяснение:
- a-w убирает право на запись для всех пользователей (a — all, то есть для всех категорий: пользователь, группа и другие).
Пример 4: Установка прав для директории
chmod -R 755 /path/to/directory
Объяснение:
- -R означает рекурсивное применение прав ко всем файлам и папкам внутри указанной директории.
- Права 755 дают владельцу полный доступ, а группе и другим пользователям — только чтение и исполнение.
2. Git Bash на Windows
Git Bash поддерживает большинство Unix-команд, включая chmod. Примеры использования команды аналогичны Linux и macOS. Например:
chmod 644 file.txt
Объяснение:
- Права 644 устанавливают возможность чтения и записи для владельца, а группе и другим пользователям разрешают только чтение.
3. Windows CMD
Windows CMD не поддерживает команду chmod, так как система прав в Windows отличается от Unix-подобных систем. Для управления правами доступа в Windows используется команда icacls или attrib.
Пример 1: Установка прав с помощью icacls
icacls file.txt /grant JohnD:(F)
Объяснение:
- JohnD — имя пользователя.
- (F) — полный доступ (Full control).
Пример 2: Установка атрибутов файла с помощью attrib
attrib +r file.txt
Объяснение:
- +r устанавливает атрибут "Только для чтения" (Read-only).
4. PowerShell
В PowerShell также нет прямой команды chmod, но для управления правами доступа можно использовать команды из набора Set-Acl и Get-Acl.
Пример 1: Получение прав доступа к файлу
Get-Acl file.txt
Объяснение:
- Эта команда выводит текущие права доступа к файлу.
Пример 2: Установка прав доступа
$acl = Get-Acl file.txt
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("JohnD", "FullControl", "Allow")
$acl.SetAccessRule($rule)
Set-Acl file.txt $acl
Объяснение:
- Создаётся новое правило доступа для пользователя "JohnD" с полным контролем (FullControl).
- Это правило применяется к файлу с помощью команды Set-Acl.
Пример 3: Установка атрибута "Только для чтения"
Set-ItemProperty file.txt -Name IsReadOnly -Value $true
Заключение
Команда chmod широко используется в Unix-подобных системах для управления правами доступа к файлам и каталогам. В Linux, macOS и Git Bash на Windows её использование аналогично. В Windows CMD и PowerShell управление правами реализовано через другие команды, такие как icacls, attrib и Set-Acl.
Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам.