Em zsh, você pode simplesmente subtrair umask
de 0666
para arquivos e 0777
para diretórios para obter permissões padrão:
$ printf "%04d\n" "$((0777 - $(umask)))"
0755
$ printf "%04d\n" "$((0666 - $(umask)))"
0644
Assim, você pode aplicar chmod
:
chmod $((0666 - $(umask))) file
chmod $((0777 - $(umask))) directory
No bash, você precisa usar printf
para forçar a saída em octal:
$ printf "%04d\n" "$((0777 - $(umask)))"
0493
$ printf "%04o\n" "$((0777 - $(umask)))"
0755
Outra forma seria criar um novo arquivo e diretório e usá-los como referência:
touch file2
mkdir directory2
chmod --reference=directory2 directory
chmod --reference=file2 file