JavaRush /Курсы /Docker SELF /Основы прав доступа: chmod, chown, umask

Основы прав доступа: chmod, chown, umask

Docker SELF
2 уровень , 0 лекция
Открыта

1. Понятие прав доступа

Когда вы работаете с файлами или директориями в Linux, возникает необходимость управлять доступом к ним. Представьте, что вы оставили свои носки на виду, и теперь каждый в доме может их использовать! Права доступа в Linux позволяют предотвращать "несанкционированное использование носков" (или чего-то важнее, например, ваших скриптов). Давайте начнем разбираться.

Каждый файл (и директория) в Linux имеет три набора прав доступа, которые определяют, кто может их читать, записывать или выполнять:

  1. Чтение (r): Позволяет просматривать содержимое файла или список файлов в директории.
  2. Запись (w): Разрешает изменять содержимое файла или добавлять/удалять файлы из директории.
  3. Выполнение (x): Даёт возможность выполнять файл как программу (или заходить в директорию).

Трёхуровневая модель

Каждое право применяется к трём группам пользователей:

  • Владелец (owner): Тот, кто создал файл.
  • Группа (group): Пользователи, объединенные в группу, которой назначен файл.
  • Остальные (others): Все остальные пользователи системы.

Пример прав доступа для файла:

-rwxr-xr--

Расшифруем:

  • Первый символ - обозначает, что это файл (для директории будет d).
  • Первые три символа rwx — права для владельца (чтение, запись, выполнение).
  • Следующие три символа r-x — права для группы (чтение, выполнение).
  • Последние три символа r-- — права для остальных (только чтение).

2. Команда chmod: управление правами доступа

Символьный формат записи

Команда chmod изменяет права доступа к файлам и директориям. Символьный формат записи выглядит так:

chmod [кто][действие][права] имя_файла
  • Кто: u (владелец), g (группа), o (остальные), a (все).
  • Действие: + (добавить права), - (убрать права), = (установить права точно).
  • Права: r (чтение), w (запись), x (выполнение).

Примеры:


# Установим права на выполнение для всех
chmod a+x script.sh

# Добавим возможность записи только для группы
chmod g+w file.txt

# Заберем право чтения у остальных
chmod o-r document.txt

Восьмеричный формат записи

Восьмеричный формат (или числовой) более компактный, но требует понимания "магии чисел". В этом формате каждая комбинация прав представляется числом:

  • r = 4
  • w = 2
  • x = 1

Права складываются:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Формат записи:

chmod [число][число][число] имя_файла

Пример:


# Установим права rwx для владельца, r-x для группы, r-- для остальных
chmod 754 file.sh

3. Изменение владельца файла: команда chown

Если вам нужно передать файл другому пользователю (или группе), поможет команда chown.

Формат:

chown [пользователь]:[группа] имя_файла

Примеры:


# Передача владения пользователю user1
chown user1 myfile.txt

# Передача владельца и группы
chown user1:group1 myfile.txt

# Только смена группы
chown :group2 myfile.txt

4. Маска по умолчанию: umask

Когда вы создаете файл, права доступа для него определяются системой. Например, права могут быть rw-r--r--. Но откуда они берутся? Ответ: от команды umask.

Что такое umask?

umask определяет, какие права не будут установлены для новых файлов.

Например:

  • Базовый набор прав для файла: 666 (нет выполнения).
  • Маска: 022.
  • Итоговые права: 644 (666 - 022).

Команды:

  • Посмотреть текущую маску: umask
  • Установить новую маску: umask 0022

Пример:


# Установка маски, чтобы новые файлы имели rw-rw-r--
umask 0002

5. Права администратора и sudo

Что такое sudo?

sudo (аббревиатура от "superuser do") — это команда в Linux и Unix-подобных системах, которая позволяет пользователю выполнять команды от имени суперпользователя (root) или другого пользователя с повышенными привилегиями.

Система sudo обеспечивает временный доступ к административным возможностям без необходимости постоянно работать под учетной записью root, что снижает риски случайного или вредоносного изменения системы.

Важно!

Если очень упростить, то sudo пишется перед командой, которую нужно выполнить с правами администратора.

Как работает sudo?

Запуск команды:

Когда вы вводите команду с sudo, система проверяет, есть ли у вашего пользователя право выполнять команды с повышенными привилегиями.

Например:

sudo apt update

Аутентификация:

При первом использовании sudo в текущей сессии система попросит ввести пароль текущего пользователя (не root).

После успешного ввода пароля система сохраняет аутентификацию на короткий промежуток времени (обычно 5-15 минут), чтобы не запрашивать пароль для каждой команды.

Выполнение команды:

Если пользователь имеет права, указанные в конфигурации sudo, команда будет выполнена с правами суперпользователя.

Основные функции и команды sudo

Запуск команды с привилегиями:

sudo <команда>

Например:

sudo apt install nginx

Выполнение команды от имени другого пользователя: Используйте флаг -u:

sudo -u <имя_пользователя> <команда>

Например:

sudo -u user1 ls /home/user1

Получение административного терминала: Запустите оболочку с правами root:

sudo -i

или:

sudo su

Просмотр конфигурации sudo:

sudo -l

Показывает команды, которые текущий пользователь имеет право выполнять.

Редактирование конфигурации sudo:

sudo visudo

Эта команда открывает файл конфигурации /etc/sudoers для безопасного редактирования.

6. Примеры

Попробуем применить наши знания на практике.

Задание 1: Управление правами с chmod

  1. Создайте файл:

    touch myfile.txt
    
  2. Установите для владельца права на чтение, запись и выполнение:

    chmod u+rwx myfile.txt
    
  3. Добавьте права только на чтение для остальных:

    chmod o+r myfile.txt
    
  4. Проверьте права:

    ls -l myfile.txt
    

Задание 2: Смена владельца с chown

  1. Создайте файл:

    touch ownedfile.txt
    
  2. Измените владельца на пользователя user1 (понадобятся права администратора):

    sudo chown user1 ownedfile.txt
    
  3. Проверьте изменения:

    ls -l ownedfile.txt
    

Задание 3: Эксперименты с umask

  1. Проверьте текущую маску:

    umask
    
  2. Установите маску 027:

    umask 027
    
  3. Создайте новый файл:

    touch newfile.txt
    
  4. Проверьте права созданного файла:

    ls -l newfile.txt
    

7. Типичные ошибки и особенности

  1. Забыли sudo при смене владельца: Только администратор может менять владельца файла. Если вы получили ошибку "Operation not permitted", попробуйте добавить sudo.
  2. Неправильный порядок в команде chmod: Поменяли права не тому объекту. Убедитесь, что выбрали нужный файл или директорию.
  3. umask влияет только на новые файлы: Если вы пытаетесь поменять права уже существующих файлов с помощью umask, это не сработает. Используйте chmod.

Знаете ли вы, что права доступа в Linux настолько гибкие, что можно создать файл, который "видит" только один человек во всей вселенной? Как говорится, с великими правами приходит великая ответственность! Теперь, вооруженные chmod, chown и umask, вы готовы делать свои Linux-системы не только удобными, но и безопасными.

1
Задача
Docker SELF, 2 уровень, 0 лекция
Недоступна
Изменение прав доступа с помощью `chmod`
Изменение прав доступа с помощью `chmod`
1
Задача
Docker SELF, 2 уровень, 0 лекция
Недоступна
Смена владельца и группы с использованием `chown`
Смена владельца и группы с использованием `chown`
1
Задача
Docker SELF, 2 уровень, 0 лекция
Недоступна
Изучение влияния `umask`
Изучение влияния `umask`
1
Задача
Docker SELF, 2 уровень, 0 лекция
Недоступна
Комбинированное использование `chmod`, `chown`, и `umask`
Комбинированное использование `chmod`, `chown`, и `umask`
3
Задача
Docker SELF, 2 уровень, 0 лекция
Недоступна
Права доступа и работа с процессами
В этом видео мы погрузимся в основы прав доступа и их проверку. Научитесь управлению пользователями и группами. Освойте инструменты для управления системными процессами и их завершения. Создайте безопасное и организованное рабочее окружение
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
15 января 2026
В Видео на 27 минуте при вводе команды groups допустили опечатку и сказали, что команда так не работает и надо еще юзера дописывать, но это просто опечатка) Просто введя команду groups покажет мои группы
Slevin Уровень 1
23 сентября 2025
Я пытался найти в лекции пример:

chmod u=rwx, g=r, o= filename.txt
И угадайте что? Его там нихрена нет. А вот первая задача просит такую реализацию
I'll kick them all Уровень 5
18 октября 2025

# Установим права rwx для владельца, r-x для группы, r-- для остальных
chmod 754 file.sh
А такой не подойдет? chmod 740 filename.txt
Slevin Уровень 1
20 октября 2025
у меня валидатор требовал именно такой формат записи... Видать ему моча в голову очередной раз ударила :)
Kordez Уровень 6
26 мая 2025
chmod 754 почему-то хочет получить как правильный ответ. Хотя должен быть 514.
Илья Лопатин Уровень 24
12 мая 2025
В условии задачи сказано выдать права 514. А на самом деле валидатор ожидает 541
5 марта 2025
3 задача проходит валидацию только через плагин в IDEA.