Eu tenho um agente Lançamento configurado para executar um arquivo .plist por exemplo: /Library/LaunchAgent/foo.plist
. Dentro deste .plist, ele está configurado para ser executado durante LoginWindow
e Aqua
.
Quando tento iniciar o meu computador e chegar à tela de login, essa lista deve ser executada, mas, em vez disso, fornece o seguinte erro (no console):
launchctl: Propriedade duvidosa no arquivo (pulando): /Library/LaunchAgents/foo.plist
Quando tento fazer login em uma conta que não seja de administrador, ela exibe exatamente a mesma mensagem de erro. Quando tento fazer login com uma conta de administrador, ele funciona bem.
Serei honesto, não sei muito sobre os privilégios e permissões do Mac OS X.
Para criar o arquivo, abri-lo em emacs
, com sudo
a conta de administrador (por exemplo, usando o su
comando já que a outra conta não tem privilégios sudo) e depois salvou.
Qual conta eu preciso usar para criar o arquivo para que ele funcione para todos os usuários?
Preciso usar o comando sudo?
Preciso alterar as permissões do arquivo (por exemplo, uso chmod
)?
Existe uma maneira fácil de pegar um arquivo existente e alterar sua propriedade em vez de ter que recriar o arquivo?
Alguém poderia explicar por que esse erro ocorre?
fonte
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
-F
).Respostas:
Se um plist é de propriedade de root e gravável por um usuário que não seja root, isso é um problema de segurança.
Você pode alterar o proprietário para o root
sudo chown root <filename>
e alterar as permissões comsudo chmod 644 <filename>
(4 para acesso de leitura, 2 para acesso de gravação, 1 para acesso de execução, somadas. O primeiro número é para o proprietário, o segundo para o grupo e o terceiro para todos.)fonte
launchctl
. Criei o arquivo como meu usuário normal e estava executando comsudo
. Daí o erro. Como o root não é o proprietário do arquivo, Nosudo
não era necessário. Eu corri semsudo
e funcionou bem.Na descrição do subcomando da página de manual launchctl (1)
load
:O launchctl possui várias mensagens "Duvidosas ...". O código launchd para 10.6.7 (por exemplo) possui três dessas mensagens
launchctl.c
(consulte a funçãopath_goodness_check
).Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
Para evitar essas mensagens, um nome de caminho deve ser (# 3) um arquivo ou diretório regular 1 (ou um link simbólico para um) que seja (# 1) pertencente ao usuário raiz ou que está chamando e (# 2) não seja "grupo" ou "outro ”Gravável (ie
chmod go-w
).1 Nenhum canal nomeado, nós de dispositivo especial de bloco / caractere, soquetes de domínio local, etc.
Seu arquivo provavelmente pertence ao usuário administrador, pois você diz que não recebe a mensagem ao fazer login como esse usuário (nesse caso, o nome do caminho pertence ao usuário que está chamando).
Para fazer o nome do caminho funcionar para outros usuários, ele deve ser de propriedade do root.
Para organizar isso, faça:
fonte
Obrigado pela resposta (alterando o proprietário para o root) - é tudo o que eu precisava.
Para tornar isso um pouco mais do que um post 'eu também' ... cheguei aqui por um caminho complicado: Eu estava recebendo os erros "Esta API só pode ser usada por um processo em execução em uma sessão do Aqua" para um demo de inicialização. Procurar uma resposta para isso me levou à nota técnica da Apple sobre daemons e agentes, que explicava como resolver o erro 'Aqua session', mas isso me deixou com problemas de 'propriedade duvidosa'. Foi assim que cheguei aqui, onde minha questão final foi resolvida.
Talvez adicionar tudo isso a esta discussão faça com que algum mecanismo de pesquisa vincule esta página a um dos problemas precursores, economizando assim algum futuro aventureiro.
fonte
para arquivo em ~ / Library / LaunchAgent, de propriedade do usuário e não root, não sudo, se você precisar alterar a propriedade, uma vez que está carregando o usuário root
fonte
É o que acontece quando as pessoas não sabem como
sudo
funciona. Para desativar os serviços que estão nos arquivos pertencentes ao seu usuário, basta ligarlaunchtl
semsudo
.fonte