umask
é global em bash
. Uma coisa que você pode fazer é criar um mkdir
wrapper (um script, você dá o nome a ele) que mudaria a máscara depois de executá-la.
#!/bin/bash
umask 0701 ; /path/to/real/mkdir $1 ; umask 0604
Isso foi respondido aqui:
Lembre-se: Para diretórios, as permissões base são ( rwxrwxrwx
) 0777
e, para arquivos, elas são 0666
, ou seja, você não obterá permissões de execução na criação de arquivos dentro do seu shell, mesmo que o umask permita. Isso é feito claramente para aumentar a segurança na criação de novos arquivos .
Exemplo:
[admin@host test]$ pwd
/home/admin/test
[admin@host test]$ umask
0002
[admin@host test]$ mkdir test
[admin@host test]$ touch test_file
[admin@host test]$ ls -l
total 4
drwxrwxr-x 2 admin admin 4096 Jan 13 14:53 test
-rw-rw-r-- 1 admin admin 0 Jan 13 14:53 test_file
umask
Especificação Unix não informa nada sobre os detalhes específicos da matemática dessa permissão de arquivo. Cabe aos desenvolvedores do shell decidir (e criadores do sistema operacional).