Definir um umask personalizado no macOS

Todos os ficheiros ou pastas do Mac possuem um conjunto de permissões. Ao criar um novo ficheiro ou pasta, o umask determina essas definições de permissões.

Acerca de permissões e umasks

Estas instruções destinam-se a utilizadores empresariais. Tenha cuidado quando alterar permissões de ficheiros e umasks. Se as definir incorretamente, pode diminuir a segurança dos ficheiros, das pastas ou das apps do Mac. Também pode impedir algumas apps de funcionar.

Permissões

Todos os ficheiros, pastas e apps que armazena num disco de arranque do Mac ou num volume ligado têm definições de permissões. As permissões determinam quais são as contas de utilizador que podem ler, escrever em ou executar o ficheiro, a pasta ou a app. Estas incluem permissões POSIX e listas de controlo de acesso (ACLs). 

Para tornar as permissões POSIX de um utilizador mais ou menos restritivas, pode ajustar o valor umask.

Umasks

Um número de três dígitos pode representar as permissões POSIX para um ficheiro. Pode ver as permissões representadas desta forma quando as visualiza a partir do Terminal. Cada dígito é entre zero e sete. Quando cria um ficheiro, o valor umask é subtraído de um valor predefinido (normalmente 666 para ficheiros e 777 para pastas) to determinar as permissões para o novo ficheiro ou pasta.

Por exemplo, um umask predefinido de 022 define 644 permissões em novos ficheiros e 755 em novas pastas. Estas permissões permitem que grupos e outros utilizadores possam ler os ficheiros e abrir as pastas, mas apenas o proprietário pode efetuar alterações. 

Certifique-se de que compreende o funcionamento dos umasks antes de continuar. Se definir um umask incorretamente, poderá perder inadvertidamente o acesso aos ficheiros ou conceder acesso a outros utilizadores. Consulte a secção MODES da página do manual chmod(1) para obter mais informações.

Pode definir o umask em várias localizações diferentes. Cada localização afeta apps diferentes.

Umask para apps de utilizador no macOS High Sierra, macOS Sierra, OS X El Capitan e OS X Yosemite

No OS X Yosemite 10.10.3 e posterior, inicie sessão como administrador e execute o seguinte comando no Terminal:

sudo launchctl config user umask nnn

Substitua nnn pelo valor umask pretendido, tal como 027 ou 002. Depois de executar este comando, terá de reiniciar o Mac.

Este comando define o umask do utilizador para todas as apps que este abra, tais como o Finder, TextEdit ou Final Cut Pro. E define o unmask para todas as apps a que o utilizador pode aceder a partir da linha de comandos. Este comando também controla as permissões que são definidas nos novos ficheiros que estas apps criam.

Se vir a mensagem "Não foi possível escrever a configuração: ficheiro ou diretório inexistente", certifique-se de que tem uma pasta /private/var/db/com.apple.xpc.launchd/config. Se esta pasta não existir, utilize o seguinte comando para a criar:

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

Depois de criar esta pasta, execute o comando sudo launchctl config user umask nnn de novo. Para obter mais informações sobre como definir o umask no OS X Yosemite, execute o comando man launchctl.

Umask para processos do sistema no OS X Yosemite

No OS X Yosemite 10.10.3 e posterior, inicie sessão como administrador e execute o seguinte comando no Terminal:

sudo launchctl config system umask nnn

Substitua nnn pelo valor umask pretendido, tal como 027 ou 002. Depois de executar este comando, terá de reiniciar o Mac.

Este comando define o umask do utilizador para cada daemon executado no contexto do sistema. Alterar este valor não é recomendado pois pode alterar as permissões para ficheiros utilizados pelo software do sistema. Se definir permissões que são demasiado restritivas, o software dependente poderá não funcionar. Se definir permissões demasiado abertas, poderá introduzir problemas de segurança.

Se vir a mensagem "Não foi possível escrever a configuração: ficheiro ou diretório inexistente", certifique-se de que tem uma pasta /private/var/db/com.apple.xpc.launchd/config. Se a pasta não existir, utilize o seguinte comando para a criar:

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

Para obter mais informações sobre como definir o umask no OS X Yosemite, execute o comando man launchctl.

Umask para apps de utilizador no OS X Mavericks e anterior

No OS X Mavericks e anterior, crie um ficheiro etc/launchd-user.conf que contém umask nnn. Substitua nnn pelo valor umask pretendido, tal como 027 ou 002. Deste modo, define o umask do utilizador para todas as apps que este abra, como o Finder, TextEdit ou Final Cut Pro. Também controla as permissões que são definidas nos novos ficheiros que estas apps criam.

Se utilizar o OS X Lion, deverá proceder à atualização para o OS X Lion 10.7.4 ou posterior. Depois de atualizar, o umask do utilizador é aplicado aos ficheiros e pastas que são criados no Finder.

Umask para processos do sistema no OS X Mavericks e anterior

Em versões do OS X anteriores ao Yosemite, crie um ficheiro /etc/launchd.conf que contém um umask nnn. Substitua nnn pelo valor umask pretendido, tal como 027 ou 002. Deste modo, define o umask para todos os processos. Alterar este valor não é recomendado pois pode alterar as permissões para os ficheiros utilizados pelo software do sistema. Se definir permissões que são demasiado restritivas, o software dependente poderá não funcionar. Se definir permissões demasiado abertas, poderá introduzir problemas de segurança.

Umask para um LaunchAgent ou LaunchDaemon específico

No Mac OS X 10.4 e posterior, os administradores avançados podem definir um umask em separado para um LaunchAgent ou LaunchDaemon específico. Para esse efeito, adicionam um valor umask ao ficheiro launchd.plist. Esta definição substitui a definição do umask em /etc/launchd.conf ou /etc/launchd-user.conf apenas para esse processo. Para obter mais informações sobre esta opção, execute o comando man launchd.plist.

Data de publicação: