
- •1. Клиент-серверная организация системного программного обеспечения.
- •2. Система электронной документации.
- •5. Процессы в состоянии zombie.
- •6. Атрибуты процесса. Ключевые слова команды ps.
- •Id,state,time,sl,re,pagein,vsz,rss,lim,tsiz,%cpu,%mem, command.
- •7. Сигналы.
- •9. Встроенные команды управления атрибутом cdir
- •10. Встроенная команда изменение атрибута umask
- •11. Управление заданиями.
10. Встроенная команда изменение атрибута umask
Атрибут umask управляет какие права будут назначаться новым файлам, создаваемым процессом. Команда изменения этого атрибута:
umask [-p] [-S] [ mode ] – изменяется атрибут процесса “маска”, определяющий какие значения будут устанавливаться в поле mode для создаваемых процессом файлов. В противоположность команде chmod, в которой установленный бит означает разрешение соответствующего действия, в маске установленный бит означает, что на соответствующее действие с создаваемым файлом разрешения не будет, а сброшенные биты означают разрешения действий. Аргумент mode задает новое значение маски процесса, причем допускает как форму 4-х или 3-х разрядного 8-ного числа. Значимыми являются только младшие 3 восьмеричные цифры (9 младших бит), старшие биты suid, sgid и sticky-bit маской не управляются, эти разрешения могут устанавливаться вручную командой chmod.
Например, команды
umask 0243
umask 243
имеют одинаковый результат, создаваемые директории будут получать права:
dr-x-wxr--
Если аргумент mode в команде опущен, то в STDOUT выводится текущая маска процесса. Если опций нет – вывод производится в виде 4-разрядного восьмеричного числа. Если задать опцию -p , то в STDOUT выведется текст командной строки для восстановления текущей маски (“umask 0022”). Текст, выводимый в STDOUT, можно запомнить в переменной, чтобы получить его в виде строки в командной строке, команду, которая выводит текст, нужно “закавычить” бек-тиками: oldmask=`umask –p` . Любая команда, закавыченная бек-тиками, является особым литералом в командной строке: она автоматически запускается (fork-exec) под дочерней копией оболочки, а все, что она выведет в STDOUT подставляется как строковый литерал в командную строку, обрабатываемую родительской интерактивной оболочкой. Фактически интерактивная оболочка выполнит команду: oldmask=“umask 0022”, т.е. текст команды восстановления текущей маски будет запомнен в локальной переменной среды интерактивной оболочки c именем oldmask.
После этого можно производить любые изменения маски, создавать файлы и директории, просматривать их атрибут mode, проведя все интересные вам эксперименты можно восстановить старое значение маски, просто задав на приглашение ввода командной строки подстановку переменной: $oldmask.
Если в команде umask использовать опцию -S , то в STDOUT будет выведены значения атрибута mode создаваемых файлов в символьном виде, точно так как они задаются в команде chmod: “u=rxw,g=rx,o=rx” (без опции –S будет выведено 0022).
Для изменения маски тоже допускается символьная форма команды umask, которая, как и в команде chmod описывает, что должно быть разрешено для создаваемых файлов и директориев, маска 0243 может быть задана командой:
umask 0243 или эквивалентной командой: umask u=rx,g=wx,o=r .
После аутентификации пользователя при запуске его login-shell в начале каждого сеанса отрабатывается файл /etc/login.conf в котором содержатся атрибуты оболочки, назначаемые для каждого класса пользователей, по умолчанию (класс default) “umask=0022”, поэтому пока вы не измените маску оболочки, все запускаемые вами процессы будут наследовать эту маску при fork-exec и соответственно ей присваиваться права создаваемым директориям. Файлам других типов все процессы, кроме компиляторов, по умолчанию не присваивают право запуска на выполнение, даже если это разрешено маской процесса.
Завершая описание команды umask, подчеркнем ее отличие от chmod:
chmod: - утилита для изменения прав на уже существующие файлы;
umask: - builtin для изменения атрибута процесса (оболочки)