Каковы последние 3 бита в битах режима разрешений UNIX?

Каковы последние 3 бита в битах режима разрешений UNIX?

Я понимаю, что есть 12 битов разрешений, из которых есть 3 группы по 3 бита для пользователя, группы и других, которые являются RWX соответственно. RW — это чтение и запись, а X — searchдля каталогов и executeфайлов.

Вот чего я не понимаю:

  1. Каковы три оставшихся бита режима и все ли они хранятся в inode?

  2. Я знаю, что сам каталог файлов также считается файлом, поскольку все в UNIX является файлами (это правда?), но поскольку системы UNIX используют ACL для представления файловой системы, то файловая система представляет собой список пар имя_файла-номер_инода. Где каталог файлов хранит свой собственный номер инода и имя файла?

решение1

stat /bin/suпоказывает на одной системе:

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Вот восьмеричное представление 4755всех 12 битов режима. Число соответствует битам:

octal    4   7   5   5
bits   100 111 101 101
       sst uuu ggg ooo
       ug  rwx rwx rwx

Где uuu, gggи ooo— биты разрешений для пользователя, группы и других. Оставшаяся группа (первая по порядку) содержит биты setuid ( su), setgid ( sg) и sticky ( t).

Биты setuid и sticky часто не упоминаются, поскольку для большинства файлов они равны нулю. Они все еще там для каждого файла, сохраненные вместе с другими.


Если уж на то пошло, некоторые файловые системы и интерфейсы хранят файлтипвдоль битов режима, в еще более высоких битах. Вышеуказанное учитывает только 12 бит, так что с 16-битным полем остается 4. См., например,описание st_modeвstat(2).

решение2

  1. Оставшиеся три бита представляют собой биты setuid, setgid и sticky; см.Понимание разрешений и типов файлов UNIXдля подробностей. Все они хранятся в inode.

  2. Каталог действительно является своего рода файлом, хранящим список имен и соответствующих инодов. Собственное имя и иноды каталога хранятся в его родительском каталоге; корневой каталог является особым случаем, это, как правило, фиксированный инод в файловой системе (inode 2 в Ext4) и, конечно, всегда имеет имя /(которое в конечном итоге задается относительно точки монтирования...).

Связанный контент