2016-05-31 2 views
0

내가이 스크립트, 기본적으로 그것이 무엇을하면 램 캐시를 삭제하는 것입니다 쓴 무시되고있다. 나는 지저분한 알고 - 주위의 모든 '에코' '당신이 볼이 단지 작품 청소기를 만들기 위해, 내가 명령 사이에 빈 줄을 좋아파일 권한 플래그 '의 setuid'

#!/bin/bash 
free -m && wait 
echo ''; echo '' 
while true; do 
    read -p "Vuoi liberare la RAM? [y,n]" domanda 
    case $domanda in 
     y|Y) echo ''; sync; sudo echo 3 > /proc/sys/vm/drop_caches; echo ''; free -m; echo ''; break ;; 
     n|N) echo ''; echo 'Sei tu il saggio Jack ;)'; echo ''; break ;; 
     *) echo ''; echo 'Come prego?'; echo '' ;; 
    esac 
done 

어쨌든, 스크립트가 작동하지만 순서.. 그것이 따를 때 내가 사용 권한을 설정했다 작동하는지 :. 빈, 내 가정에서, 내부의 스크립트를 복사 한 후 나는 추가 :

sudo chown root.root <my script> 

sudo chmod 4755 <my script> 

나는 그것이 작동 말했듯이 을 나는 하위 디렉토리 호출을 생성 내 .profile에서이 라인 :

export PATH="/home/jacklapinza/.bin:$PATH" 

따라서 새 경로는 제대로 작동하지만 스크립트는 더 이상 작동하지 않습니다. 나는 '아니오'를 선택하면 작동하지만 난 'y'를 누르면 에러가 튀어 의미 :

permission denied. 

나는 파일에 동일한 권한을 설정했습니다.

내가 뭘 잘못하고있어?

+0

파일 내부에서 sudo 호출을 제거하고 sudo를 사용하여 스크립트를 호출하는 데 익숙해집니다. 스크립트가'$ (id -nu)'와 함께 루트로 실행되는지 확인할 수 있습니다. '수출 PATH = "$ PATH에 : /home/jacklapinza/.bin": $ 홈 /'또는'수출 PATH = "$ PATH에 –

+0

은 참고 당신은 일반적으로이 대신 사용, 정상적인 경로하기 전에 사용자 디렉토리를 추가해서는 안됩니다. bin "' – andlrc

답변

1

나는 여기에 문제가 파일 시스템이 setuid 플래그를 지원하지 않는다는 것입니다 생각합니다.

ext4을 사용하는 경우 마운트 옵션을 확인하는 것이 좋습니다. nosuid 옵션이 설정되었을 수 있습니다.

어쨌든, 나는 그것이 너무 위험하다 setuid 플래그를 싫어하며 약간의 이점을 제공합니다 : sudo를 사용에서 우리를 살려?

나의 추천은이를 무시하고는 sudo를 사용하여 스크립트를 호출한다. 이것이 옵션이 아니라면 마운트 플래그를 확인해야합니다.

+0

당신은 절대적으로 옳습니다. 왜 내가 그것에 대해 생각하지 않았는지 모르겠다. 고마워. –