Как работать с правами доступа Unix
Права доступа в ОС Linux - это механизм, позволяющий разграничить доступ к ресурсам на компьютере.
Если вы часто работаете с ОС Linux, то и без этого знаете, как работать с правами доступа. Однако, статья все равно может оказаться вам интересна. Если же вы совсем не знакомы с Unix системами, то узнаете, как правильно работать с правами доступа.
Правами доступа файла, называется 12-битное слово. Первым идет тип файла: “d” - директория, “-” - обычный файл. Остальные 9 из них объединены в 3 группы по 3 бита: первая - для владельца файла, вторая - для его группы, третья - для всех остальных.
Посмотрим на них подробнее.
Для этого, в терминале нужно ввести ls -l:
[ls.png]
3 бита групп означают следующее:
r - Чтение.
w - Запись.
x - Запуск.
Так как 3 бита соответствуют одной цифре восьмеричной системы счисления, то часто права доступа записываются в виде 3-4 значного числа.
- Например, если вы немного работали с Linux, то при возникновении ошибок с доступом, видели советы настроить доступ 777. Это считается плохой практикой, так как предоставляет полный доступ к файлу всем пользователям машины.
Рассмотрим некоторые записи в восьмеричной системе счисления:
rwx rw- r-x -> 111 110 101 -> 4+2+1 4+2 4+1 -> 7 6 5
Таким образом, чтобы выдать полные права владельцу, чтение и запись группе и запуск всем пользователям, необходимо ввести:
chmod 765 file.txt
При этом, для директорий биты интерпретируются несколько иначе:
- Чтение - Возможность смотреть содержимое каталога.
- Запись - Возможность модифицировать директорию - создавать и удалять файлы (в том числе чужие).
- Запуск - Возможность использовать содержимое директории.
- Возможно, вы иногда могли увидеть, как при настройке прав указывают 4 цифры, вместо 3. Давайте посмотрим, что они значат:
4 - SetUid Bit - Если вы указали этот бит, то при запуске, файл будет иметь права своего владельца независимо от того, кто его запустил
2 - SetGid Bit - Работает также, как и SetUid Bit, но по отношению к группе, а не владельцу
1 - Sticky Bit - Раньше использовался, чтобы отмечать часто используемые файлы. Таким образом, файл сохраняется в оперативной памяти. Сейчас же в нем смысла нет и он игнорируется.
Отметим, что из соображений безопасности, SetUid и SetGid не работают для скриптовых исполняемых файлов
Для директорий, опять же, правила немного отличаются:
4 - SetUid Bit - В Linux игнорируется, но во FreeBSD, например, все созданные файлы будут принадлежать владельцу директории
2 - SetGid Bit - Какой бы пользователь не создавал файл, в качестве его группы будет группа текущей директории
1 - Sticky Bit - Даже если пользователь имеет право на запись в директории, удалять он сможет только свои файлы.
- В качестве примера, рассмотрим ситуацию, где нам необходимо создать общедоступную директорию:
chmod 01777 public_dir
Тогда все смогут делать все, кроме удаления файлов других пользователей. Например, такие права доступа стоят по-умолчанию на директорию /tmp .
- Есть еще один способ изменять права доступа файла. Его мы рассмотрим на основе сложного примера:
chmod -R u+rwX,go=rX ~
Эту команду рекомендуется использовать, если вы сломали все права в своей домашней директории.
Пойдем по порядку:
1.Уже знакомая нам команда chmod и ключ -R, который означает, что необходимо рекурсивно применить это правило ко всей директории.
2.В выражениях u+rwX и go=rX - лучше просто рассмотреть синтаксис:
- o g u владелец, группа, пользователи соответственно.
- + - = означают добавить, отнять или приравнять (установить и снять остальные) права.
3. Дальше идут флаги.
- r w x - чтение, запись и запуск.
- s - установка/снятие set битов.
- t - Sticky Bit и X - установка/снятие битов для директорий и файлов, на которые хотя бы у кого-нибудь есть права на запуск.
Как настроить права доступа
Все это время, мы говорили, о правах доступа владельца и группы, но так и не рассматривали, как их настроить.
При создании файла, его владельцем и группой будут такие же, как и у пользователя, создающего файл (при условии, что не настроены Set биты, рассмотренные ранее).
Однако, их можно изменить в любой момент следующей командой:
chown [owner]:[group] file.txt
Если добавить -R после chown, то команда применится рекурсивно (для всех файлов, что есть в директории).
Как выбрать оптимальный дистрибутив Linux для сервера. Рассматриваем популярные отечественные и зарубежные варианты.
28 октября, 20245 ключевых критериев выбора облачного сервера в арендуКак выбрать облачного провайдера, чтобы обеспечить эффективность и безопасность ИТ-инфраструктуры бизнеса — рассмотрим в этой статье.
24 октября, 2024Что такое виртуализация серверов и как ее использоватьВиртуализация — неизбежная и незаменимая часть современной ИТ-инфраструктуры любого бизнеса. Что это такое и как она работает, рассмотрим в этой статье.
01 октября, 2024