Установка umask для каталога так, чтобы все каталоги, исполняемый файл (.sh, .cmd, .bat) были 750, а обычный файл 640
Необходимо создать и изменить существующий файл и каталог так, чтобы все каталоги и исполняемые файлы (*.sh, *.bat, *.cmd ..) составляли 750, а обычный файл - 640 . Мне нужно это в оболочке и Python как.
Мне нравится устанавливать umask на 027, в то время как по умолчанию 022 для существующей директории.... не могу изменить umask по умолчанию. В основном нужно установить директорию umask
1 ответ
Кажется, вы не можете установить umask для каталога, см. Аналогичные вопросы и ответы.
Давай читать man umask
чтобы увидеть, какие у вас есть варианты:
ОПИСАНИЕ
umask() устанавливает маску создания режима файла вызывающего процесса (umask) на mask & 0777 (т. е. используются только биты разрешения доступа к файлу маски) и возвращает предыдущее значение маски.
Umask используется open(2), mkdir(2) и другими системными вызовами, которые создают файлы для изменения разрешений, предоставляемых вновь создаваемым файлам или каталогам. В частности, права доступа в umask отключены от аргумента mode для open (2) и mkdir(2).
В качестве альтернативы, если родительский каталог имеет ACL по умолчанию (см. Acl(5)), umask игнорируется, ACL по умолчанию наследуется, биты разрешения устанавливаются на основе унаследованного ACL, а биты разрешения, отсутствующие в аргументе mode, преобразуются выкл. Например, следующий ACL по умолчанию эквивалентен umask 022:
u::rwx,g::r-x,o::r-x
Сочетая эффект этого ACL по умолчанию с аргументом режима 0666 (rw-rw-rw-), получаемое разрешение файла будет 0644 (rw-r- r--).
Я бы сказал, что у вас есть три варианта:
- Оставьте umask в покое и периодически запускайте скрипт, который устанавливает необходимые разрешения для файлов и каталогов.
- Бежать
umask 027
когда вы создаете файлы или каталоги в этом конкретном месте - это повлияет на текущий процесс. Бежатьumask 022
когда вы сделали. Включите и используйте ACL. Поскольку вы отметили этот вопрос
setfacl
Вы, вероятно, уже рассматриваете этот метод:setfacl -Rdm u::rwx,g::r-x,o::--- . touch a mkdir b
Бежать
ls -al
а такжеgetfacl *
чтобы увидеть результаты:-rw-r----- a drwxr-x---+ b # file: a user::rw- group::r-- other::--- # file: b user::rwx group::r-x other::--- default:user::rwx default:group::r-x default:other::---
Примечание. Разрешения по умолчанию не различаются в зависимости от расширений файлов: если вы хотите, чтобы.sh,.cmd и.bat имели 750, а другие файлы 640, ваш лучший вариант - 1. выше.