我的 bash 脚本如何确保生成的文件具有组读取权限?

Lar*_*nal 2 bash file-permissions

我有一组用户在 Ubuntu 机器上运行脚本,应该允许他们覆盖一些输出。

想象一下以下情况:

#!/bin/bash

NAME=$1
echo "Hello, $NAME" > output.txt
Run Code Online (Sandbox Code Playgroud)

当一个用户运行此命令时,我们将获得以下权限output.txt-rw-r--r--。然而,当不同的用户运行它时,我们得到-rw-r--r--

我的脚本组合包括 BASH、Python 和 Scala。我可以在目录或用户级别设置什么以确保默认情况下创建新文件吗-rw-rw-r--

anu*_*ava 5

您需要使用umask带有八进制掩码的命令002

跑步:

umask 002
Run Code Online (Sandbox Code Playgroud)

在脚本的开头将脚本制作为:

#!/bin/bash

umask 002
NAME="$1"
echo "Hello, $NAME" > output.txt
Run Code Online (Sandbox Code Playgroud)

umask 002会将默认目录权限设置为775并将默认文件权限设置为664.

八进制表示法如下:

0 : read, write and execute
1 : read and write
2 : read and execute
3 : read only
4 : write and execute
5 : write only
6 : execute only
7 : no permissions
Run Code Online (Sandbox Code Playgroud)