Права доступа хранятся в inode и занимают 2 байта(16 бит).
- первые 4 бита хранят кодировку о типе файла.
- следующие 3 задают особые свойства испоняемых фалов
- оставшиеся 9 бит формируют права доступа. По 3 бита на каждую группу.
Устанавливать права можно как в текстовом, так и в числовом формате. Числовой формат лично мне кажется более простым, и он чаше используется. При установке в числовом формате каждой группе User, Group, Other присваивается итоговая сумма прав доступа. Rea d = 4, Write = 2, eXecute = 1.
Число 750 расшифровать можно как: Вадельцу разрешена 4+2+1, группе разрешено 4+1, а всем остальным доступ закрыт
chmod
Команда используется для изменения прав доступа к файлам.
флаг | значение |
---|---|
-c | Сообщает о всех файлах которые успешно изменены |
-f | Не выдавать сообщения о тех файлах, которые не удаётся отредактировать |
-v | Подробный вывод процесса |
-R | Рекурсивное обход для всех директорий и файлов. |
- При числовом формате изменения прав
chmod -c myfolder 700
- При буквенном
chmod -c -u+rwx myfolder
Сначала устанавливаем группу (-u — владелец, -g — группа, -o — другие). После ставим флаг действия(+ или —) добавляем права или убираем. И только потом перечисляем права над которыми мы совершаем действия(rwx).
Установка прав для новых файлов
Изначально при создании нового файла его могут изменять все и вся! То есть его права 777. Однако если вы создадите новый каталог.
mkdir temp
и посмотрите на его права доступа
stat temp
Вы увидите что некоторые ограничения система всё-таки поставила. Всё дело в маске которая накладывается на права 777, отсекая ненужное.
введите команду
umask
Вы должны увидеть четыре числа, например
0022
Это говорит о что, что при создании файла из прав 777 вычитается 022, таким образом у файла будут права 755. Ограничивая группе и остальным пользователям записывать информацию, если это файл и задавать новые права, если это каталог.
итоговое значение маски
маска | файл | директория |
---|---|---|
0 | read write | read write executex |
1 | read write | read write |
2 | read | read execute |
3 | read | read |
4 | write | write execute |
5 | write | write |
6 | — | execute |
7 | — | — |
Смена маски
Первый способ самый простой. Действуя от имени пользователя, чтобы установить маску по умолчанию — использовать команду umask
umask 0037
новые файлы будут создаваться с правами 740.
Но при следующем запуске терминала, установленные права сбросятся. Поэтому это решение только одной сессии.
Второй способ — это установить маску всем пользователям открывающим shell. Для этого вам необходимо открыть файл /etc/profile
nano /etc/profile
и в конце файла добавить
umask 077
в директории /etc/procfile.d можно создать скрипты, которые будут выполняться при каждом запуске shell
И третий способ, это устновить маску по умолчанию конкретному пользователю. Для этого перейдите в домашний каталог конкретного пользователя и найдите в нём системный файл .bashrc — это файл настроек, которые подгружаются в момент запуска терминала. Введите команду
nano .bashrc
и в самом конце файла добавьте строку
umask 0077
Чтобы изменения вступили в силу перезапустите терминал или введите комаду для повторного считывания настроек файла .bashrc.
source .bashrc
- добавьте в файл .bashrc следующие строки
export HISTCONTROL=ignoredups # игнорировать дубликаты в истории
export HISTSIZE=1000 # размер истории
alias l.='ls -d .* --color=auto' # вывести все скрытые файлы
- Создайте папку music_library, в которую все пользователи группы hogwarts могли бы сохранять файлы и просматривать файлы других пользователей, но удалять чужие файлы запрещается.