[FAQ] Про четырёхзначный формат прав доступа

Если вы хотите увидеть на нашем сайте ответы на интересующие вас вопросы обо всём, что связано с техникой Apple, операционной системой Mac OS X (и её запуском на PC), пишите нам через форму заявки на обзор или форму обратной связи.

К нам поступил следующий вопрос:

Добрый день, AppStudio!
Если не сложно можете объяснить по какому принципу выставляются права в четырехзначном формате? В трех мне понятно, это владелец группа и все остальные. А в четырех, откуда первая цифра берется?

Добрый день!

При записи прав доступа четырьмя цифрами первая цифра показывает, присвоены ли объекту дополнительные свойства, за которые отвечают биты suid, sgid и sticky.

Бит suid, который актуален для исполняемых файлов, позволяет запустить программу не от имени того, кто её запускает, а от имени её владельца. Звучит ужасно, поэтому без живого примера не обойтись: если бы не было бита suid, то пользователь вообще не мог бы запустить ни одну из важных системных утилит через командную строку (чаще всего в качестве примера приводят команду passwd), потому что эти утилиты принадлежат корневому пользователю (root). Если бит suid установлен, то при запуске программы пользователь получает права root.

Бит sgid делает примерно то же: он позволяет запустить файл не от имени того, кто его открывает, а от имени группы его владельца. Правда, в отличие от suid, основное применение он находит при работе с папками. Если suid включён для папки, то все подпапки, создаваемые внутри неё, будут наследовать ту же группу, что и родительская папка.

Бит sticky тоже имеет смысл только для папок. Если такой бит включён, то несмотря на все остальные права доступа, удалять файлы из папки смогут только их непосредственные владельцы и root-пользователь. Sticky-бит полезен для папок, доступных различным группам пользователей — в том случае, если нежелательно, чтобы все желающие могли удалять любые файлы.

Первая цифра при четырёхзначной записи прав доступа означает различные комбинации suid, sgid и sticky-битов:

  • 0 — все три бита выключены
  • 1 — только sticky
  • 2 — только sgid
  • 3 — sticky+sgid
  • 4 — только suid
  • 5 — suid+sticky
  • 6 — suid+sgid
  • 7 — все три бита включены

Например, команда chmod 1777 откроет всем желающим доступ к папке, но вот удалять из неё файлы сможет только владелец этой папки.

P.S. Не думаем, что у рядового пользователя может возникнуть острая потребность в применении этих битов — можно вообще не подозревать об их существовании и вполне спокойно жить. Кстати, те, кто вообще не понял, о чём шла речь в этом материале, приглашаются к чтению статьи о правах доступа из нашего цикла о Терминале Mac OS X ;)