
Недавно я задавался вопросом, в чем разница между трех- и четырехзначными числовыми разрешениями на файлы. Я получаю числовые разрешения, запуская stat --format "%a" $file_name
. В чем разница между 0644 и 644?
решение1
Первая цифра в четырехзначном разрешении представляет собой суммуустановить идентификатор пользователя (4),установить идентификатор группы(2) илипкий(1). Трехзначное разрешение похоже на четырехзначное разрешение, но первая цифра равна нулю. Таким образом:
- 0644 — это то же самое, что и 644.
- 1644 — это то же самое, что и 644, но бит sticky также установлен
- 4644 похож на 644, но также установлен бит идентификатора пользователя.
Примеры использования разрешений из четвертой цифры
Если файл с установленным идентификатором пользователя выполняется, то он выполняется как будто владельцем файла, а не пользователем, выполняющим выполнение. Так, например, /bin/mount
обычно принадлежит root и имеет разрешения 4755, где 4 означает, что даже если он будет запущен обычным пользователем, он будет запущен с привилегиями владельца (root).
Установка идентификатора группы для каталога полезна для обмена файлами.
Sticky bit используется в каталогах, например, /tmp
чтобы все пользователи могли создавать файлы, но не позволяли невладельцам удалять файлы других людей. Таким образом, разрешения /tmp
обычно равны 1777, где 1 означает, что sticky bit установлен.
Документация
От man chmod
:
Числовой режим — это от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Пропущенные цифры считаются ведущими нулями. Первая цифра выбирает установленный идентификатор пользователя (4) и установленный идентификатор группы (2), а также атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает разрешения для пользователя, владеющего файлом: чтение (4), запись (2) и выполнение (1); третья выбирает разрешения для других пользователей в группе файла с теми же значениями; а четвертая — для других пользователей, не входящих в группу файла, с теми же значениями.