Launch Agent가 .plist 파일을 실행할 때“파일의 의심스러운 소유권”오류가 발생하는 이유는 무엇입니까?


54

.plist 파일을 실행하도록 구성된 시작 에이전트가 있습니다 /Library/LaunchAgent/foo.plist. 이 .plist 내에서 LoginWindow및 동안 실행되도록 설정되어 있습니다 Aqua.

컴퓨터를 시작하고 로그인 화면으로 이동하면이 plist가 실행되지만 대신 콘솔에 다음 오류가 발생합니다.

launchctl : 파일에 대한 의심스러운 소유권 (건너 뛰기) : /Library/LaunchAgents/foo.plist

관리자가 아닌 계정으로 로그인을 시도하면 동일한 오류 메시지가 나타납니다. 관리자 계정으로 로그인을 시도하면 정상적으로 작동합니다.

솔직히 말하면, Mac OS X 권한 및 권한에 대해 잘 모르고 있습니다.

파일을 만들려면, 나는 그것을 열어 emacs함께 sudo합니다 (사용 예 관리자 계정에 susudo는 권한이없는 다른 계정 때문에 명령) 한 다음 저장.

모든 사용자가 사용할 수 있도록 파일을 만들려면 어떤 계정을 사용해야합니까?
sudo 명령을 사용해야합니까?
파일 권한을 변경해야 chmod합니까 (예 :) ?
파일을 다시 만들지 않고 기존 파일을 가져 와서 소유권을 변경하는 쉬운 방법이 있습니까?
누군가이 오류가 발생하는 이유를 설명해 주시겠습니까?


ls -l은 /Library/LaunchAgent/foo.plist에 대해 무엇을 제공
합니까

1
-rw-r--r--@ 1 admin staff 653 Oct 17 14:31 /Library/LaunchAgents/foo.plist
@Mark

로딩 ( -F) 을 강제 할 수도 있습니다 .
kenorb

답변:


51

plist가 root에 의해 소유되고 root 이외의 사용자가 쓸 수있는 경우 보안 문제입니다.

을 사용하여 소유자를 루트로 sudo chown root <filename>변경하고 sudo chmod 644 <filename>(읽기 액세스의 경우 4, 쓰기 액세스의 경우 2, 실행 액세스의 경우 1)을 추가 하여 권한을 변경할 수 있습니다. 첫 번째 숫자는 소유자, 두 번째는 그룹, 세 번째는 여러분.)


작동합니다. 왜 소유자를 루트로 변경해야하는지 혼란스러워합니다. LaunchAgents에 사용되는 사용자는 root입니까?
Senseful

1
예, 그렇게 생각합니다.
Michiel de Mare

1
나는 이것이 오래된 게시물이라는 것을 알고 있지만 이것은 훌륭한 답변입니다! /system/library/launchdaemons/com.apple.mdnsresponder에 대한 권한을 변경하여 Apple이 권장하는 수정을 시도했지만 나중에로드하려고 할 때 위에서 언급 한 오류가 발생합니다. 위에서 설명한대로 소유자와 권한을 변경하는 것이 인터넷 연결을 다시 얻는 유일한 방법이었습니다. 감사!

이제 똑같이 직면하고 해결했습니다. 나는 파일의 소유자가 많이 호출한다고 생각했다 launchctl. 파일을 일반 사용자로 만들고로 실행했습니다 sudo. 따라서 오류가 발생했습니다. root는 파일의 소유자가 아니므로 No sudo는 필요하지 않습니다. 나는없이 달렸고 sudo잘 작동했습니다.
Bibhas

14

로부터 launchctl (1) 맨 페이지 의의 설명 load부속 :

사용자 별 구성 파일 (LaunchAgent)은 해당 파일을로드하는 사용자가 소유해야합니다. 모든 시스템 데몬 (LaunchDaemons)은 루트가 소유해야합니다. 구성 파일은 그룹 또는 월드 쓰기 가능하지 않아야합니다. 실행 된 구성 파일에 대한 쓰기 기능을 허용하면 실행할 실행 파일을 지정할 수 있으므로 보안상의 이유로 이러한 제한 사항이 적용됩니다.

launchctl 에는 몇 가지“Dubious…”메시지가 있습니다. launchd에의 (예를 들어) 10.6.7위한 코드는 세 이러한 메시지 갖는다 launchctl.c(함수 참조 path_goodness_check).

  1. Dubious permissions on file (skipping): <pathname>
  2. Dubious ownership on file (skipping): <pathname>
  3. Dubious path. Not a regular file or directory (skipping): <pathname>

이러한 메시지를 피하려면 경로 이름은 (# 3) 루트 또는 호출 사용자가 소유하고 (# 2) "그룹"또는 "기타가 아닌 일반 파일 또는 디렉토리 1 (또는 하나에 대한 심볼릭 링크 )이어야합니다 . 쓰기 가능 (즉 chmod go-w).

1 명명 된 파이프, 블록 / 캐릭터 특수 장치 노드, 로컬 도메인 소켓 등 없음


해당 사용자로 로그인 할 때 메시지가 표시되지 않는다고 말했기 때문에 파일은 아마도 관리자가 소유 한 것입니다 (경로 이름은 호출하는 사용자가 소유 함).
다른 사용자의 경로 이름을 작동 시키려면 루트가 소유해야합니다.

이것을 준비하려면 다음을 수행하십시오.

sudo chown root /Library/LaunchAgent/foo.plist

1

답변 (소유자를 루트로 변경)에 감사드립니다. 그게 전부입니다.

이것을 '나도'게시물보다 조금 더 만들기 위해 ... 복잡한 경로를 통해 여기에 도착했습니다. 이에 대한 답을 찾으면 데몬과 에이전트에 관한 Apple의 기술 노트에 '아쿠아 세션'오류를 해결하는 방법을 설명했지만 '의심스러운 소유권'문제가 생겼습니다. 그것이 내가 여기에 왔던 방법이며, 최종 문제가 해결되었습니다.

이 토론에이 내용을 모두 추가하면 일부 검색 엔진이이 페이지를 선구적인 문제 중 하나에 연결하여 미래의 모험가를 구할 수 있습니다.


이것은 답변이 아닌 의견이어야합니다.
studgeek

1
나는 논평했지만 내 명성은 충분히 높지 않았다. (평판이 좋지만 댓글을 달 수는 없지만 '답변'할 수있는 것은 거꾸로 보이지 않습니까?)
Matt Strange

-2

root가 아닌 사용자가 ~ / Library / LaunchAgent가 소유 한 파일의 경우, 루트 사용자가 아닌 경우 소유권을 변경해야합니다.


-3

이것은 사람들이 어떻게 sudo작동 하는지 모르는 경우에 발생 합니다. 사용자가 소유 한 파일에있는 서비스를 비활성화하려면 launchtl없이 전화하십시오 sudo.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.