Изменение прав доступа к файлам #

Васильев Андрей Михайлович, 2024

Версии презентации

Изменение прав доступа #

  • Для изменения прав доступа к файлу или каталогу применяется приложение chmod
  • Изменить права на файл может только его владелец или суперпользователь
  • Для описания прав можно воспользоваться цифровой или буквенной нотацией

Использование цифровой нотации #

Восьмеричное Бинарное Режим
0 000
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx

Применение восьмеричных чисел #

С помощью трёх восьмеричных чисел можно описать права для владельца, группы и остальных

$ > test
$ ls -l test
-rw-r--r-- 1 andrey andrey 0 окт  5 15:46 test
$ chmod 600 test
$ ls -l test
-rw------- 1 andrey andrey 0 окт  5 15:46 test

С помощью одной команды мы забрали права у группы и остальных, а также удостоверились, что владелец может читать и записывать в файл

Наиболее часто используемые цифры: 7, 6, 5, 4 и 0

Буквенная нотация #

При описании буквенной нотации надо придерживаться следующего формата:

[ugoa...][[-+=][perms...]...
  • На первом месте указывается для кого надо применить права. Если не указать, то применяется для всех
  • Затем указывается что мы хотим сделать с правами
    • - убрать права
    • + выдать права
    • = установить права
  • В конце указывается список разрешений
  • Можно указать несколько изменений через запятую

Изменение прав с буквенной нотацией #

$ > words
$ ls -l words
-rw-r--r-- 1 andrey andrey 0 окт  5 16:03 words
$ chmod u+x words
$ ls -l words
-rwxr--r-- 1 andrey andrey 0 окт  5 16:03 words
$ chmod go-r words
$ ls -l words
-rwx------ 1 andrey andrey 0 окт  5 16:03 words
  • Числовая нотация обычно короче
  • Числовая нотация совсем непонятна «неинициированным»
  • Буквенную запись можно сделать более понятной
  • Буквенная нотация позволяет изменять только лишь нужные части прав доступа, не изменяя остальные

Права файлов по умолчанию #

Пользователь и владелец #

Создаваемому файлу присваивается UID пользователя, от имени которого была создан данный файл

Группой создаваемого файла становится GID группы пользователя по умолчанию

Права по умолчанию #

Права файла зависят от режима, который контролируется с помощью umask

$ help umask
umask: umask [-p] [-S] [режим]
    Отображение или указание маски режима для файлов.

Режим описывается с помощью четырёх восьмибитных цифр

Формат режима umask #

  • Первая цифра описывает специальные права
  • Вторая по четвёртую цифру описывает права для владельца, группы и остальных
$ umask
0022
$ > test
$ ls -l test
-rw-r--r-- 1 andrey andrey 0 окт  5 16:24 test
$ umask 0002
$ > test-two
$ ls -l test-two
-rw-rw-r-- 1 andrey andrey 0 окт  5 16:24 test-two

Режим де-факто описывает битовую маску, которая указывает какие биты следует отбросить из режимов

  • Для файла базовым режимом является 666
  • Для каталогов базовым режимом является 777

Создание нового файла по шагам #

Предположим, что пользователь выполняет команду на создание нового файла

  • По умолчанию базовый режим для файла 666 или 110110110 в битовом представлении
  • К режиму применяется маска пользователя 0022 или 000000010010 в битовом представлении
  • Все биты, равные 1 в базовом режиме заменяются на 0, если в маске тоже стоит 1:
       110110110
    000000010010
    =  110100100
  • Результирующий режим 110100100 или 644 в восьмеричном представлении.

Специальные права umask #

setuid bit, 4000, u+s #

Если он установлен у исполняемого файла, тогда при запуске процесса из этого файла, он будет запущен с правами пользователя, которому принадлежит исполняемый файл. Обычно применяется для небольшого количества программ, которые должен запускать обычный пользователь, но для её работы нужны повышенные привилегии

setgit bit, 2000, g+s #

Если флаг установлен у каталога, то новые файлы созданные в этом каталоге будут принадлежать к группе данного каталога, а не основной группе пользователя её создавшей. Применяется для создания общих каталогов между пользователями

sticky bit, 1000, +t #

Если флаг установлен у каталога, то препятствует переменованию или удалению файлов в каталоге, если пользователь не является их владельцем или владельцем каталога