如何查找给定系统用户的 umask 值?

如何查找给定系统用户的 umask 值?

我想找到特定系统用户的 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目录设置为您想要的任何模式。

相关内容