비밀번호 없이 이 원격 서버에 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
하지만 여러분은 자신에게 맞는 곳에 넣을 수 있습니다).