在构建脚本中,我想创建一个具有唯一生成名称的临时文件,然后向其中写入一些数据,然后将该文件重命名为其最终名称(此过程的原因是我希望重命名发生(主要是)原子)。
但如果我使用mktemp
,新文件将具有非常严格的权限:
文件创建为 u+rw,目录创建为 u+rwx,减去 umask 限制。
...并且当文件重命名时,这些权限将被保留。但是,我希望生成的文件具有“正常”权限;也就是说,它应该与touch
shell 重定向创建的文件具有相同的权限。
实现这一目标的推荐方法是什么?是否有一个(常见的)替代方案mktemp
;或者是否有一种简单可靠的方法可以将文件权限更改为正常umask
权限?
答案1
答案2
使用此链接获取您想要的权限http://permissions-calculator.org/
手动的
创建一个脚本文件,该文件创建一个新文件,然后更改其权限。
#!/bin/bash
Filename=$1
Perms=$2
#Create a temp file
touch $Filename
#Change the file's permissions (Use your own desired permissions)
chmod $Perms $Filename
使脚本可执行后chmod +x myscript.sh
,像这样执行脚本文件./myscript.sh tempfile 600
使用 Umask(不推荐)
umask 600
您可以使用例如临时更改默认文件权限。
要永久更改默认文件权限,请编辑用户根目录中的 .bashrc 文件。
nano ~/.bashrc
添加umask 600
到文件底部。当然,请确保符合您所需的权限。确保您也编辑了正确的用户。
如果这是用于构建脚本,我将使用手动方法而不是依赖 umask。特别是如果您的构建脚本将在不同的系统上使用。