2014-07-26 8 views
0

저는 리눅스에서 새롭습니다. nemo 스크립트로 .iso를 마운트하고 마운트 해제하려고합니다. 나는 스크립트 /home/user/.gnome2/nemo-scripts/을 넣었다. 제 문제는 국도와 함께 su와 같은 명령을 1 개만 실행한다는 것입니다. 누가 su와 같은 스크립트를 실행할 수 있습니까?Gksudo로 sudo와 같은 scipt를 실행하십시오.

#!/bin/bash 

gksudo -k /bin/echo "got r00t?" 
BNAME=$(basename "$NEMO_SCRIPT_SELECTED_FILE_PATHS") 

sudo mkdir "/media/$BNAME" 

zenity --info --title "ISO Mounter" --text "$BNAME e $NEMO_SCRIPT_SELECTED_FILE_PATHS" 

if sudo mount -o loop -t iso9660 $NEMO_SCRIPT_SELECTED_FILE_PATHS "/media/$BNAME" 
then 
    if zenity --question --title "ISO Mounter" --text "$BNAME Successfully Mounted. Open Volume?" 
    then 
     nemo /media/$BNAME --no-desktop 
    fi 
    exit 0 
else 
    sudo rmdir "/media/$BNAME" 
    zenity --error --title "ISO Mounter" --text "Cannot mount $BNAME!" 
    exit 1 
fi 

감사합니다.

답변

0

이렇게하는 데는 몇 가지 방법이 있습니다. 위의 스크립트에서 스크립트를 su -c script 또는 sudo script으로 호출하면 전체 스크립트를 root 권한으로 실행할 수 있습니다. 이 작업을 수행하기 전에 스크립트를 편집하고 gksudosudo으로 전화를 제거하십시오. 그런 다음 스크립트 상단에서 효과적인 루트 UID로 스크립트가 실행되도록 테스트를 추가하십시오. 예컨대 :

#!/bin/bash 

if test "$UID" -eq 0 ; then 
    printf "Running script as root\n" 
else 
    printf "error, this script can only be run by root\n" 
    exit 1; 
fi 

그런 다음 당신이 sudo scriptname 또는 su -c scriptname로 스크립트를 실행해야합니다. 또한 스크립트 파일 권한의 실행 비트 세트가 있는지 확인하십시오. chmod 0775 scriptname을 사용하면 간단하게이 작업을 수행하여 ownergroup 읽기/쓰기 실행 권한을 부여하고 읽기 권한을 부여 할 수 있습니다. 세계적인 실행 파일을 원하지 않으면 chmod 0774.

스크립트에 대한 실행 권한을 설정하지 않은 경우 Permission denied 또는 command not found 오류가 표시됩니다. sudo 또는 su 호출에 쉘을 지정하여 스크립트를 실행할 수 있습니다 (예 : sudo bash scriptname 또는 su -c "bash scriptname"이지만 스크립트를 실행 가능하게 설정하는 것이 좋습니다.