Каждый файл или каталог в файловой системе Linux имеет Владельца и Группу владельцев. Разным пользователям предоставляются различные права доступа к файлу.

Для управления правами доступа к файлу используют команды chown, chgrp, chmod, umask.

По умолчанию, владельцем файла считается пользователь, создавший его. Сменить владельца файла можно с помощью команды chown.

chown username index.html

где username — новый владелец файла index.html.

Сменить группу владельцев файла можно с помощью команды chgrp.

chgrp groupname index.html

где groupname — новая группа владельцев файла index.html.

Вывести всю информацию о файлах текущего каталога поможет команда ls с ключом -l.

ls -l
   ┌─── суммарный размер (в блоках по 512 байт) всех файлов каталога
───┴────
итого 88
-rwxrwxr-x  1 dior dior 8379 февр. 10 18:48 example
-rw-rw-r--  1 dior dior   92 февр. 10 18:48 example.c
drwxrwxr-x 10 dior dior 4096 февр. 10 03:05 Ubuntu One
drwxrwxr-x 20 dior dior 4096 февр.  2 16:56 VirtualBox VMs
drwxr-xr-x  2 dior dior 4096 февр.  8 15:29 Документы
│────┬──── ─┬ ──┬─ ──┬─ ──┬─ ──────┬─────── ──────┬───────
│    │      │   │    │    │        │              └─────── имя файла
│    │      │   │    │    │        └─── дата и время изменения файла
│    │      │   │    │    └─────────────────── размер файла в байтах
│    │      │   │    └──────────────────────────── группа владельцев
│    │      │   └──────────────────────────────────── владелец файла
│    │      └───────────────────────────── количество ссылок на файл
│    └──────────────────────────────────────────────── права доступа
└───────────────────────────────────────────────────────── тип файла

Предусмотренные стандартом POSIX-2001 типы файлов:

d каталог

b блочный специальный файл

c символьный специальный файл

l символьная ссылка

p канал

- обычный файл (минус)

Права доступа к файлу (девять символов подряд без пробелов):

    ┌──────── право на чтение разрешено
    │┌─────── право на запись разрешено
    ││┌────── право на выполнение разрешено
    │││  ┌─── право на запись запрещено
rwx rwx r-x
─┬─ ─┬─ ─┬─
 │   │   └─── права доступа прочих пользователей  o
 │   └─────── права доступа владеющей группы      g
 └─────────── права доступа владельца файла       u

Следует обратить внимание, что право на выполнение для обычных файлов, позволяет пользователю или члену группы запускать файл (двоичный или скрипт) на выполнение, как программу. Для каталогов, право на выполнение позволяет пользователю или члену группы переходить в каталог, право на чтение — читать его содержимое (получать список файлов), право на запись — делать в нем изменения, то есть создавать, удалять и изменять свои файлы.

Изменить права доступа к файлу можно с помощью команды chmod. Аргументами команды chmod являются: u (владелец), g (группа), o (прочие), a (all) — заменяет ugo. Добавлению прав соответствует знак +, их удалению знак -. Знак = обозначает буквальное задание прав. Режим доступа обозначается буквой r, w или x. Можно группировать правила через запятую без пробелов.

Примеры:

ls -l example
-rwxrwxr-x 1 dior dior 8379 февр. 10 18:48 example
chmod o-rx  example
ls -l example
-rwxrwx--- 1 dior dior 8379 февр. 10 18:48 example
chmod o+rx,g-w  example
ls -l example
-rwxr-xr-x 1 dior dior 8379 февр. 10 18:48 example
chmod ug=rwx,o+rx-w  example
ls -l example
-rwxrwxr-x 1 dior dior 8379 февр. 10 18:48 example

Помимо прав на чтение, запись и выполнение, команда chmod позволяет устанавливать для пользователей право владения программами на время их выполнения, то есть, выполнять программу с правами ее настоящего владельца. Например, многими программами в системе владеет root, тогда как выполняют их обычные пользователи. Даже будучи запущенной от обычного пользователя такая программа сможет изменить файлы, принадлежащие root. Бит смены идентификатора пользователя обозначается буквой s (вместо x).

Кроме того, существует sticky-бит, который дает системе указание оставить программу в памяти после завершения ее выполнения для ускорения доступа. На наличие sticky-бита указывает буква t в позиции выполнение для прочих пользователей.

chmod +s,+t  example
ls -l example
-rwsrwsr-t 1 dior dior 8379 февр. 10 18:48 example

Команда umask (user file creation mode mask) устанавливает маску прав доступа для вновь создаваемых файлов. Маска может выводиться или устанавливаться в восьмеричной или символьной форме.

umask
0002
umask -S
u=rwx,g=rwx,o=rx

В восьмеричной форме — каждый установленный бит umask запрещает выставление соответствующего бита прав доступа. umask 0 предписывает выставлять все биты прав (rwxrwxrwx), umask 777 запрещает выставление любых прав.

umask 777
umask -S
u=,g=,o=

umask 0
umask -S
u=rwx,g=rwx,o=rwx