Маска определяет доступ к файлу или каталогу для трех категорий: владельца, группы пользователей и всех остальных пользователей. Для каждой категории определяется своя группа параметров доступа к файлу. Параметры доступа имею значения:
Для файлов: r - право на чтение из файла; w- разрешает запись в файл (в частности перезапись или изменение); x - позволяет исполнить файл.
Для каталогов, флаги r w x имеют несколько отличный смысл: r - позволяет читать только имена файлов в каталоге; x - позволяет иметь доступ к самим файлам и их атрибутам (но не именам); w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать, удалять и переименовывать). w без x - не имеет никакого эффекта.
Для полноценного просмотра каталога, необходимы права на чтение каталога и доступ к файлам, а главное к их атрибутам, т.е. минимальные разумные права на каталог - 5 (r-x). Прав 4 (r–) хватит только на просмотр имен файлов, без атрибутов, т.е. не будут известны размер файла, права доступа, владелец.
На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).
Вес разряда | Восьмеричный формат | Двоичный формат | Описание | ||
4 | 2 | 1 | |||
R | W | X | 7 | 111 | Чтение файла и его свойств, запись, выполнение |
R | W | - | 6 | 110 | Чтение файла и его свойств, запись |
R | - | X | 5 | 101 | Чтение файла и его свойств, выполнение |
R | - | - | 4 | 100 | Чтение файла и его свойств |
- | W | X | 3 | 011 | Запись, выполнение |
- | W | - | 2 | 010 | Запись, |
- | - | X | 1 | 001 | Выполнение |
Соответственно символьная маска для файла с полным доступом имеет вид rwx rwx rwx, где первая группа параметров rwx — это доступ для владельца (u - user), вторая — для группы (g - group), третья для всех остальных (o - other). В двоичном виде это выглядит так, - 111 111 111, а в наиболее используемой числовой (восьмеричной форме) — 777.
Установка и изменение прав
команда chmod
chmod [options] mode[,mode] file1 [file2 ...]
Опции:
установка прав 777 на файл files.txt
# chmod 777 files.txt
установка прав 777 на директорию dir2 и все вложенные файлы (ключ R - рекурсивно)
# chmod -R 777 dir2
установка прав 777 только на директорию dir2 и все вложенные директории
# chmod -R 777 dir2
Добавить права на выполнение для владельца файла, удалить права на выполнение у группы, удалить права на запись и выполнение у остальных пользователей:
#
chmod u+x,g-x,o-wx filename
Установить рекурсивно права на чтение для всех пользователей:
chmod -R a+r directory
Рекурсивно удалить атрибуты SUID и SGID:
chmod -R u-s,g-s directory
Установка прав 444
только на директории рекурсивно. Права на файлы не меняются
# f
ind
./DIR2
-type d -exec chmod 444 {} \;
Установка прав 444
только на файлы в директории рекурсивно. Права на дикретории не меняются
# f
ind ./
DIR2
-type
f
-exec chmod 444 {} \;
Расшифровывается эта аббревиатура как Set User Identifier и Set Group Identifier соответственно. Так называются биты, указывающие особые права доступа к файлам и каталогам, наряду с обычными правами – rwx
SUID даёт возможность на время выполнения файла (запущенного им процесса) непривелигированному пользователю получить права пользователя – владельца файла, например – root. Например существует утилита /usr/bin/passwd которая имеет дело с файлом /etc/passwd, редактировать который может только пользователь root: Ка же тогда пользователеям изменять свои пароли? Для этого и существует бит SUID, с помощью которого во время исполнения утилиты /usr/bin/passwd права пользователя повышаются до уровня владельца файла (в данном случае root) и следовательно файл /etc/passwd может быть откорректирован обычным пользователем.
Бит SGID аналогичен SUID, но устанавливаются права не пользователя файла, а группы – владельца файла. Так же, все файлы, создаваемые в каталоге с установленным SGID будут получать идентификатор группы – владельца каталога, а не владельца файла. Новые каталоги, создаваемые в каталоге с установленным SGID будут его наследовать от каталога-родителя.
Так же, следует учитывать, что SUID, установленный на файл перекрывает SGID, установленный на каталог.
Для SUID вес — 4000, а для SGID — 2000. Данные атрибуты имеют смысл при установленном соответствующем бите исполнения и обозначаются при символьной записи буквой «s»: «rwsrwxrwx» и «rwxrwsrwx» соответственно.
Пример: chmod 4555 {имяфайла} — все имеют право на чтение и выполнение, но запускаться файл на исполнение будет с правами владельца.
Биты SUID и SGID, установленные для каталогов, имеют совсем другой смысл.
Бит SGID для директории (chmod g+s
) заставляет только новые каталоги и файлы, созданные в ней, наследовать ID группы этой директории вместо ID группы пользователя, создавшего файл. Новые поддиректории также наследуют бит setgid. Это позволяет создать общее рабочее пространство для группы без неудобств членам группы явно менять их текущую группу для создания новых файлов и каталогов.
Наследование устанавливается только для новых файлов и каталогов. Уже существующим файлам и каталогам этот бит нужно устанавливать вручную, например:
Бит SUID, установленный для директорий игнорируется в большинстве версий Unix