我想找到特定系统用户的 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 是特定于进程的),因此您不应该每次都依赖它。如果您需要知道用户在运行 shell 脚本时拥有什么 umask,只需将umask
命令添加到该 shell 脚本中即可。或者完全忽略 umask 并将chmod
目录设置为您想要的任何模式。