Mac 프롬프트 "권한이 거부되었습니다"에서 스크립트 실행


83

나는 터미널 명령에 익숙하지 않은 Mac을 처음 사용하고 dvtcolorconvert.rb파일을 내 볼륨의 루트 디렉토리에 넣었습니다. 이 루비 스크립트는 xcode 3 테마를 xcode 4 테마 형식으로 변환 할 수 있습니다 xxxxxxxx.dvtcolortheme.

그런 다음 /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme터미널 에서 스크립트 를 실행 하지만 항상 " Permission denied "라는 메시지가 표시 됩니다.

이것에 무슨 문제가 있습니까? 누구든지이 문제를 해결하도록 도울 수 있습니까? 감사.

답변:


72

실행하기 전에 전체 답변을 읽으십시오. sudo

달리기 sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

sudo 명령은 '수퍼 유저'또는 '루트'권한으로 그 뒤에 오는 명령을 실행합니다. 이렇게하면 명령 줄에서 거의 모든 것을 실행할 수 있습니다. 즉, 이것을하지 마십시오! 컴퓨터에서 스크립트를 실행 중이고 운영 체제의 핵심 구성 요소에 액세스하는 데 필요하지 않은 경우 (홈 디렉토리 (~ /) 내에서 스크립트를 호출하기 때문에 그렇지 않은 것 같습니다), 그런 다음 홈 디렉토리에서 실행되어야합니다.

~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

~ / 또는 하위 디렉토리로 이동하고 거기에서 실행하십시오. 거기에 권한 문제가 있어서는 안되며 OS에 중요한 것을 액세스하거나 수정할 위험이 없습니다.

여전히 문제 ls -l가있는 경우 ruby ​​스크립트와 동일한 디렉토리에서 실행하여 파일에 대한 권한을 확인할 수 있습니다 . 다음과 같은 내용이 표시됩니다.

$ ls -l  
total 13  
drwxr-xr-x    4 or019268 Administ    12288 Apr 10 18:14 TestWizard  
drwxr-xr-x    4 or019268 Administ     4096 Aug 27 12:41 Wizard.Controls  
drwxr-xr-x    5 or019268 Administ     8192 Sep  5 00:03 Wizard.UI  
-rw-r--r--    1 or019268 Administ     1375 Sep  5 00:03 readme.txt

readme.txt 파일 -rw-r--r--이 왼쪽에 표시되어 있음을 알 수 있습니다. 해당 파일에 대한 권한이 표시됩니다. 오른쪽에서 9 개 문자는 'rwx'(읽기, 쓰기, 실행)의 3 개 문자 그룹으로 나눌 수 있습니다. 이 파일에 실행 권한을 추가하려면 실행 chmod 755 readme.txt하고 해당 권한 부분은 rwxr-xr-x. 이제 원하는 경우이 파일을 실행할 수 있습니다 ./readme.txt(./는 bash에게 $ PATH 변수를 검색하는 대신 의도 한 명령을 현재 디렉터리에서 찾도록 지시합니다).

schluchc 는 chmod에 대한 man 페이지를보고 있다고 암시합니다 man chmod. 이것은 주어진 명령에 대한 문서를 얻는 가장 좋은 방법입니다.man <command>


감사! 하지만 홈 디렉토리 (~ /)는 어디에 있습니까? 그것은 데스크탑을 의미합니까?
Andy_24

쉘은 echo ~일반적으로 /Users/$USER. 데스크탑은 그 아래에있는 디렉토리입니다. Unix GUI는보기에서 홈 디렉토리를 숨기지 만 여전히 거기에 있습니다.
Henk Langeveld 2012 년

1
를 실행하여 홈 디렉토리 경로를 가져올 수 있습니다 echo $HOME. / Users / <username> 또는 / Users / <iTunes username>과 같은
형식

@sean_m 자세한 설명을 해주셔서 감사합니다. 이미 알고 있습니다.
Andy_24

놀라운 답장을 보내 주셔서 감사합니다
패리스 Rayhan

243

스크립트를 실행할 수있는 권한을 부여 했습니까?

수퍼 유저로서 다음 명령이이를 수행합니다.

sudo chmod 755 'filename'

자세한 내용은 chmod의 맨 페이지를 읽어야합니다.


4
이것은 받아 들여진 대답이어야합니다. 명확하고 간결하며 작동합니다.
dialex

3
내가 사용 : sudo는 chmod를 777 '파일 이름'
인 Hemant Kaushik이

@HemantKaushik 확실히, 둘 다 작동하지만 차이점을 알고 있습니까?
hally9k

2
@ hally9k 777을 사용하면 모든 사람이 파일을 수정할 수 있습니다. 755를 사용하면 사용자와 루트 사용자 만 파일을 수정할 수 있으므로보다 안전하게 파일을 유지할 수 있습니다.
Steve Breese 2019

4

제 경우에는 shebang에서 어리석은 오타를 만들었습니다.

따라서 뚱뚱한 손가락을 가진 다른 누군가 가이 질문을 우연히 발견하는 경우 :

죄송합니다. #!/usr/local/bin ruby

나는 글을 쓰려고했다. #!/usr/bin/env ruby

ZSH가 제공하는 모호한 오류는 나를 잘못된 경로로 보냈습니다.

ZSH : zsh: permission denied: ./foo.rb

세게 때리다: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied


3

스크립트를 '수퍼 유저'로 실행하고 명령 앞에 'sudo'를 추가하고 메시지가 표시되면 비밀번호를 입력해야합니다.

그래서 시도해보십시오.

sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

그래도 작동하지 않으면 권한을 조정 해보십시오.

sudo chmod 755 /dvtcolorconvert.rb
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme

2
오, 아니 반드시 뭔가 내가있는 거 당신이하지 않는 게 좋을 것 이놈 확인 스크립트 수없는 상처 아무것도.
paxdiablo


1

Ruby 스크립트 (실행 권한이 없을 수 있음), 테마 파일 및 디렉터리 (테마를 읽을 수 없거나 거기에 다른 테마를 만들려고 시도하는 경우) 실행할 때있는 디렉터리 에 대한 권한을 확인합니다. 스크립트 (이 아닌 현재 디렉토리에 임시 파일을 만드는 경우 /tmp).

그들 중 하나가 당신을 슬픔을 유발할 수 있습니다.

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