sh 스크립트 실행: 실행 가능 비트 및 루트 권한에도 불구하고 "권한이 거부되었습니다"

sh 스크립트 실행: 실행 가능 비트 및 루트 권한에도 불구하고 "권한이 거부되었습니다"

데비안을 설치했어요가상 상자(일반적으로 내 시스템을 손상시키는 다양한 실험의 경우) VirtualBox 게스트 플러그인 스크립트를 시작해 보았습니다. 루트로 로그인하고 부팅을 시도했지만 autorun.sh"권한이 거부되었습니다"라는 메시지가 표시되었습니다. ls -l스크립트에 실행 권한이 있음을 나타냅니다.

죄송합니다. 출력을 복사할 수 없습니다. VirtualBox는 플러그인 없이는 전혀 쓸모가 없습니다. 공유 디렉터리나 공유 클립보드가 작동하지 않기 때문입니다. 하지만 확실히 하기 위해 제가 직접 권리를 복사했습니다.

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

처음에는 스크립트가 오류를 일으키는 무언가를 실행하고 있다고 생각했습니다. /bin/sh이와 같은 것으로 바꾸려고 시도했지만 #/pathtorealsh/sh -xv출력이 없습니다. 스크립트가 실행되지도 않는 것 같습니다.

나는 그 원인이 무엇인지조차 모릅니다.

답변1

어쩌면 파일 시스템이 noexec옵션 세트로 마운트되어 실행 파일을 실행할 수 없을 수도 있습니다. ~에서문서:

실행되지 않음

마운트된 파일 시스템에서는 바이너리를 직접 실행할 수 없습니다. (최근까지는 /lib/ld*.so /mnt/binary와 같은 명령을 사용하여 바이너리를 실행하는 것이 가능했습니다. 이 트릭은 Linux 2.4.25/2.6.0부터 실패합니다.)

노력하다:

mount | grep noexec

그런 다음 파일 시스템이 출력에 나열되어 있는지 확인하십시오.

그렇다면 다음 옵션을 사용하여 파일 시스템을 다시 마운트하여 이 문제를 해결할 수 있습니다 exec.

mount -o remount,exec filesystem

답변2

bash -x ./filename.filetype작동해야합니다. 루트 사용자로서 권한이 거부되었을 때 저에게 효과적이었습니다.

답변3

이 문제에 대한 나의 해결책은 다음을 사용하는 것입니다.원천. 매우 중요한 데이터를 저장하고 있습니다. 볼륨이 noexec 모드로 마운트되었습니다. 실행할 수 있는 간단한 셸 스크립트가 있지만 권한 문제가 발생합니다.

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

내 우분투에서만 테스트되었습니다.

답변4

Virtual Box의 Debian Buster 복사본에 게스트 추가 기능을 설치할 때도 똑같은 문제가 발생했습니다.

해결 방법으로 파일을 VBoxLinuxEditions.runDebian 홈 디렉터리에 복사하고 sudo를 사용하여 실행했습니다. 이것은 스크립트가 작동하지 않는 것에 대한 해결책은 아니지만 적어도 게스트 추가를 설치할 수는 있었습니다.

흥미롭게도 MX Linux는 Debian 기반이지만 Virtual Box에 설치된 MX Linux 버전에 Guest Additions를 설치하는 데 문제가 없었습니다.

관련 정보