SSH를 통해 원격 서버에 bash 스크립트를 실행하려고 하면 권한이 거부됩니다.

SSH를 통해 원격 서버에 bash 스크립트를 실행하려고 하면 권한이 거부됩니다.

비밀번호 없이 이 원격 서버에 SSH 연결을 설정할 수 있습니다. 또한 bash 스크립트 대신 한 줄 명령을 실행하면 제대로 작동합니다. 하지만 SSH를 통해 bash 스크립트를 실행하려고 하면 다음과 같이 표시됩니다.

bash: /home/username/script.sh: Permission denied

이 문제를 어떻게 해결할 수 있나요? 아무 문제 없이 SSH를 통해 한 줄 명령을 실행할 수 있습니다.

답변1

이 명령을 실행하려고 하면:

/home/username/LastBootupTime.sh

다음과 같은 권한이 있습니다.

-rwxr--r-- 1 root root 42 Nov  3 14:01 LastBootUpTime.sh

그게 root우리가 할 수 있는 전부입니다. 다른 모든 사람은 오류를 받게 됩니다 bash: /home/username/LastBootUpTime.sh: Permission denied.

그 이유는 권한이 다음과 같기 때문입니다.

  • rwx- 소유자(이 경우 루트)는 스크립트를 읽고, 쓰고, 실행할 수 있습니다.
  • r--- 그룹(이 경우 루트 그룹)은 스크립트를 읽을 수 있지만 스크립트를 쓰거나 실행할 수는 없습니다.
  • r--- 다른 사람은 스크립트를 읽을 수 있지만 쓰거나 실행할 수는 없습니다.

이제 귀하의 경우 다음 명령을 명시적으로 지정했습니다.

bash /home/user/LastBootupTime.sh

따라서 읽기 권한이 필요하지만원하지 않는다실행 권한이 필요합니다. 따라서 오류 메시지가 나타나는 또 다른 이유가 있습니다. 사용자는 디렉터리 중 하나에 액세스할 수 없을 가능성이 높습니다.

아마도 실제 명령은 다음과 같습니다.

bash /root/LastBootupTime.sh

이 경우 root사용자 만 /root디렉터리에 액세스할 수 있으므로 다른 모든 사용자에게는 권한 거부 오류가 발생합니다. 해결책은 스크립트를 액세스 가능한 적절한 디렉토리에 넣는 것입니다(저는 /usr/local/bin이것을 제 시스템에서 사용합니다. 다른 사람들은 이것을 선호 /opt/bin하지만 여러분은 자신에게 맞는 곳에 넣을 수 있습니다).

관련 정보