mount는 격리 플래그를 추가하여 다음을 유발합니다. / bin / bash : 잘못된 인터프리터 : 작업이 허용되지 않지만 일반적인 용의자는 아닙니다.


8

좋아, 나는 비슷한 문제가있다 : -bash : Applications / mvim : / bin / sh : 잘못된 인터프리터 : 작업이 허용되지 않는다 -그러나 같은 문제는 아니다. 나는 같은 결과를 얻고 있습니다.

com.apple.quarantine 플래그 가 아닌 것을 이미 확인했습니다 .

줄 끝 이 아닙니다 (스크립트는 vi에서만 만들어졌습니다). 다음을 사용하여 스크립트를 실행할 수 있습니다.

bash simpleshell.sh

결과는 다음과 같습니다.

fawkes:tmp kylar$ vi simpleshell.sh
fawkes:tmp kylar$ chmod +x simpleshell.sh 
fawkes:tmp kylar$ ./simpleshell.sh 
-bash: ./simpleshell.sh: /bin/bash: bad interpreter: Operation not permitted
fawkes:tmp kylar$ cat simpleshell.sh 
#!/bin/bash
export FOO=Hey
echo $FOO
fawkes:tmp kylar$ which bash
/bin/bash
fawkes:tmp kylar$ bash simpleshell.sh 
Hey
fawkes:tmp kylar$ xattr -l simpleshell.sh 
fawkes:tmp kylar$ 

업데이트 : 나는 그것이 noexec로 마운트 된 파일 시스템이라고 생각하지 않습니다. / tmp, ~ 및 / source의 3 가지 다른 위치에서 스크립트를 실행하려고했습니다.

UPDATE2 : 좋아, 더 파고 나면 / source 안에 마운트 된 dmg 인 스크립트를 만들었습니다. 여기서 xattr -l을 실행했지만 아무것도 찾지 못했습니다. 스크립트를 ~로 cp하고 xattr -l을 실행하면 com.apple.quarantine xattr이 생겼습니다. 순식간에 / source에 대한 마운트 속성을보고 다음을 발견했습니다.

/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)

이 dmg를 마운트하면 격리로 설정됩니다. 격리 플래그로 마운트하지 않도록 mount에 알리려면 어떻게해야합니까? ~에서 플래그를 제거하면 스크립트가 정상적으로 실행되었습니다.


여기에 답이 없으면 UNIX 및 Linux SE에 문의하십시오.
bot47

나는 어쨌든 그것을 교차 게시 할 수 있습니다-이것은 기본적으로 어떤 작업도 수행하지 못하게합니다 :(
Kylar

같은 방식으로 같은 파일 시스템에서 다른 프로그램을 실행할 수 있습니까? 사용하고 chmod +x file.sh; ./file.sh있습니다. 해당 파일 시스템이 "noexec"플래그로 마운트되었을 수 있습니다.
cm2

2
이제 검역 플래그를 사용하지 않도록 mount에 지시하는 방법에 대해서만 질문을 다시 작성하면 도움이 될 수 있습니다. 이제는 이것이 실제 문제인 것으로 판단 되었기 때문입니다. 또한 특정 볼륨에 대해 볼륨을 비활성화하는 방법을 모르지만 격리를 모두 비활성화하는 방법은 무엇입니까 defaults write com.apple.LaunchServices LSQuarantine -bool NO?
houbysoft

2
좋아, 나는 그것을 해결했다. .dmg 파일에 com.apple.quarantine xattr이 설정되었습니다. 마운트를 해제하고 xattr을 지우고 dmg를 다시 마운트해야했습니다. GAH. @ houbysoft : 완전히 끄는 팁에 감사드립니다.
Kylar

답변:


1

스크립트는 격리 플래그가 설정된 .dmg 내부에서 실행되었습니다. .dmg가 마운트되었을 때 상속되었지만 격리되지 않은 격리 플래그로 마운트했습니다. .dmg를 마운트 해제하고 격리 플래그를 제거했다가 다시 마운트했습니다.


감사합니다. 비슷한 문제가 있었고, 그것은 나를 미치게했다 : Vim (또는 고양이)에 의해 만들어진 검역 xattr이없는 Perl 스크립트. 그러나 스크립트는 마운트 된 스파 스 번들에 상주했습니다. 이 페이지를 읽은 후 파일 시스템을 마운트 해제하고 번들 내부를 살펴 보았습니다. "com.apple.quarantine"xattr이 설정된 "token"이라는 파일이 있습니다. xattr을 삭제하고 스파 스 번들 파일 시스템을 다시 마운트하면 Perl 스크립트의 "나쁜 해석기"문제가 사라졌습니다.
Lee Johnson

0

간단한 해결책이 있습니다 : cat configure.sh> test.sh 그런 다음 test.sh를 실행하십시오.

에디터 문제로 밝혀졌습니다 : https://discussions.apple.com/thread/3733470?start=30&tstart=0


아니요, 그것은 내 상황에 대한 해결책이 아닙니다. 질문을 읽으면서 vi를 사용하여 스크립트를 작성했습니다. 그래도 흥미로운 링크입니다.
Kylar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.