2016-09-16 1 views
0

У меня есть набор пользователей, которые запускают скрипты в поле Ubuntu, ought, чтобы они могли перезаписать некоторый вывод.Как мои скрипты bash гарантируют, что результирующие файлы имеют права доступа к группе?

Представьте себе следующее:

#!/bin/bash 

NAME=$1 
echo "Hello, $NAME" > output.txt 

Когда один пользователь запускает это, мы получаем следующие разрешения на output.txt: -rw-r--r--. Однако, когда другой пользователь запускает его, мы получаем -rw-r--r--.

Мой ансамбль сценариев включает BASH, Python и Scala. Есть ли что-нибудь, что я могу установить в каталоге или на уровне пользователя, чтобы гарантировать, что новые файлы будут созданы как -rw-rw-r-- по умолчанию?

+0

Почему вы не просто создать файл загодя с правильными разрешениями. Если ничто не удалит файл, его разрешения останутся без изменений. – Barmar

+0

Справа. Я мог бы это сделать, но я искал новые знания и то, что могло бы упростить то, что я делаю. Предоставленный ответ помогает совсем немного. – Larsenal

ответ

2

Вам необходимо использовать команду umask с октальной маской 002.

Пробег:

umask 002 

в начале вашего скрипта, чтобы сделать скрипт как:

#!/bin/bash 

umask 002 
NAME="$1" 
echo "Hello, $NAME" > output.txt 

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 
+0

Вы можете поместить эту команду ** в ** скрипт. – Barmar

+0

Я думал, что он просто хотел обеспечить разрешения на файл, созданный внутри скрипта. Требование пользователей изменить свою среду перед запуском скрипта кажется неправильным. – Barmar

+0

Я думаю, вы правы, я изменил свой ответ. – anubhava