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.