Fedora 20 설치에서 다음 스크립트를 실행하려고 합니다.
#!/bin/bash
password={password}
echo "$password" | sudo -Sk /bin/bash -c '[[ $EUID -eq 0 ]]'
[[ $? -ne 0 ]] && zenity --error --text failed. || zenity --error --text success.
터미널 에뮬레이터에서 실행하려고 하면 성공이 보고되지만 파일 관리자(이 경우 Thunar)에서 스크립트를 두 번 클릭하면 실패가 보고됩니다.
일부 다른 배포판(예: Debian Wheezy)에서는 일관된 동작을 보입니다.
왜 이런 일이 발생합니까? 이 문제를 해결하려면 어떻게 해야 합니까?
답변1
/etc/sudoers 파일(visudo를 사용하여 액세스 가능)에서 다음을 수행 requiretty
하여 프로그램에 대해 이 기능을 끌 수 있습니다.
Defaults!/path/to/program !requiretty
귀하의 경우에는 bash를 사용하고 있으므로 이 경로는 에서 얻는 모든 것이 됩니다 which bash
.
답변2
/etc/sudoers
sudo가 파일에 tty를 요구하지 않는지 확인해야 합니다 ( requiretty
설정하면 안 됨).