Найти в Дзене

Команда chmod (изменение прав) и аналоги в терминалах Linux, Windows и MacOS

Оглавление

Команда 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 - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам.