Почему у plan.txt запись была у группы, но не у остальных? Это решила маска процесса.
Программа, которая создаёт файл, просит права с запасом: rw-rw-rw- (666) для файла и rwxrwxrwx (777) для каталога. Маска процесса, umask, убирает из них лишние буквы. Записывают её цифрами, как режим, только цифра здесь значит «убрать»:
| Маска | Новый файл | Новый каталог |
|---|---|---|
002 |
rw-rw-r-- (664) |
rwxrwxr-x (775) |
022 |
rw-r--r-- (644) |
rwxr-xr-x (755) |
umask без аргументов печатает маску своей оболочки — у тебя 0002. Ведущий ноль можно не писать: umask 022 и umask 0022 значат одно и то же.
У процесса маска 027. Какие права получит файл, который он создаст?
-
Цифра 2 у группы убирает
w: отrw-остаётсяr--. Проверь:bash -c 'umask 027; touch m.txt', затемls -l m.txt. -
Так выходит с маской 022. Цифра 7 у остальных убирает все три буквы — остаётся
---. -
Так выйдет у нового каталога: он начинает с 777. Файл начинает с 666, и
xв нём нет ни у кого — маска его не добавляет.
Из запрошенных 666 маска 027 убирает w у группы и всё у остальных: остаётся 640, rw-r-----. Проверь в отдельной оболочке: bash -c 'umask 027; touch m.txt', затем ls -l m.txt.
Маску процесс получает от родителя, как и группы: umask 022, набранная в терминале, действует в этой оболочке до выхода из неё.
Начальную маску задаёт вход в систему: Ubuntu ставит 0002 пользователю с личной группой. Строка umask 022 в ~/.profile меняет маску при входе — этот файл читает оболочка входа. sudo -u alice оболочку входа не запускает и ~/.profile не читает, а sudo -iu alice запускает: так работает и настоящий вход alice.
Создай файл от alice двумя способами
В конце ~/.profile у alice стоит строка umask 022. Создай в /srv/team файл от alice через sudo -u и через sudo -iu, потом сравни их в ls -l.
Сначала предположи
Какие права ls -l покажет у a2.txt — файла от sudo -iu alice?
Теперь начни упражнение, выполни команду и сверь прогноз с выводом.