
Я хотел бы найти значение umask для конкретного системного пользователя, которое применяется, когда скрипт, запущенный от имени этого пользователя, создает новый каталог. Я использую обе системы Ubuntu 16.04 и 20.04.
Самый близкий ответ, который я могу найти, этоэтот вопрос. Я не понимаю ни слова, но я попробовал сценарий.
for user in $(awk -F: '{print $1}' /etc/passwd);
do
printf "%-10s" "$user" ; su -c 'umask' -l $user 2>/dev/null
done
указанный в принятом ответе; он вывел слово «root», а затем заморозил систему.
Как узнать значение umask для данного пользователя системы?
решение1
Чтобы определить umask пользователя в определенное время, вы можете просто запустить команду umask
от имени этого пользователя. Скрипт, который вы привели в вопросе, извлекает список пользователей из /etc/passwd
файла, а затем запускает umask
команду для каждого из них по очереди. Но у него есть некоторые проблемы, не последней из которых является то, что он зависнет, ожидая ввода пароля, если будет запущен от имени пользователя, не являющегося пользователем root.
Пользователь может изменить свою umask в любое время (на самом деле, пользователь даже неиметьumask, umask зависит от процесса), поэтому вам не следует полагаться на то, что это будет одно и то же каждый раз. Если вам нужно знать, какой umask у пользователя, когда он запускает скрипт оболочки, просто добавьте команду umask
в этот скрипт оболочки. Или просто полностью проигнорируйте umask и chmod
каталог в любом желаемом вами режиме.