Разрешения и владельцы файлов и каталогов в Linux

Разрешения на файлы и каталоги

Разрешение Влияние на файлы Влияние на каталоги
Чтение (R) Чтение содержимого файла Отображение содержимого каталога (имен файлов)
Запись (W) Изменение содержимого файла Создание и удаление любого файла в каталоге не зависимо от разрешения этого файла
Выполнение (X) Выполнение файлов как команд Доступ к содержимому каталога с учетом разрешений для файлов в каталоге
В Linux разрешения настраиваются для владельца (user), для группы (group) и для всех остальных (other). Посмотреть текущие разрешения можно командой
ls -l

Изменять разрешения можно символьным методом или цифровым.

Символьный метод
chmod КтоЧтоМожет <file>
  • Кто: u (user), g (group), o (other), a (all)
  • Что: + (добавить), - (сбросить), = (установить)
  • Может: r (читать), w (записать), x (выполнить)
Примеры:
chmod u+x <file>
chmod g-w <file>
chmod go=rw <file>
chmod a+rwx <file>
Числовой метод
chmod КтоЧтоМожет <file>
  • --- 0
  • --x 1
  • -w- 2
  • -wx 3
  • r-- 4
  • r-x 5
  • rw- 6
  • rwx 7
Примеры:
chmod 640 <file>
chmod 750 <file>
chmod 775 <file>

Специальные разрешения (sticky) на файлы и каталоги

Разрешение Влияние на файлы Влияние на каталоги
u+s (suid) Выполняется от имени пользователя, который владеет файлом ---
g+s (sgid) Выполняется от имени группы, которая владеет файлом Для новых файлов, созданных в каталоге, в качестве группы-владельца задается владелец группы каталога (наследование)
o+t (sticky) --- Пользователи с разрешением на запись в каталог могут удалять только файлы, которыми они владеют.
Символический метод
chmod u+s <file>
chmod g+s <dir>
chmod o+t <dir>
Цифровой метод
chmod 4770 <file>
chmod 2770 <dir>
chmod 1770 <dir>

Владельцы

Для изменения владельца и группы файла или каталога используется chown

  • chown <user> <file> изменение владельца файла
  • chown -R <user> <dir> рекурсивное изменение владельца каталога
  • chown :<group> <file> изменение группы владельца файла
  • chown <user>:<group> <file> изменение владельца и группы владельца файла
  • chown -R <user>:<group> <dir> изменение владельца и группы рекурсивно
  • sudo cp -p <source> <dest> копирование файла, не изменяя его разрешения

Маска

Каждый процесс в системе имеет маску, представленную 8-ричным значением. Каждый бит маски используется для сброса бит соответствующего бита разрешения. То есть из значения 777 вычитается маска и новые файлы или каталоги создаются с получившимися разрешениями.
Вывод маски, которая установлена в системе в данный момент осуществляется командой
umask
Примеры масок с итоговыми разрешениями создаваемых файлов и каталогов
umask 0002 0022 0077
Создаваемый файл 664 (rw- rw- r--) 644 (rw- r-- r--) 600 (rw- --- ---)
Создаваемый каталог 775 (rwx rwx r-x) 755 (rwx r-x r-x) 700 (rwx --- ---)
Значения маски по умолчанию устанавливаются в файлах
/etc/profile
/etc/bash.bashrc
Пользователи могут переопределять системные значения в своих файлах
~/.bash_profile
~/.bashrc