이것이 내가 할 계획입니다:
#!/bin/bash
sudo -i <<'EOF'
iptables-save | awk '/^[*]/ { print $1 }
/^:[A-Z]+ [^-]/ { print $1 " ACCEPT" ; }
/COMMIT/ { print $0; }' | iptables-restore
EOF
위 내용을 저장하고 이름을cleariptables.sh로 지정하겠습니다. 실행 가능하게 만들었습니다.
이는 다음 경로의 bin이라는 폴더에 배치됩니다: /home/cymbal/bin/
(여기서 cymbal은 사용자 이름입니다)
데스크탑에cleariptables.sh에 대한 바로가기를 생성하겠습니다. 바로가기의 내용은 다음과 같습니다.
[Desktop Entry]
Version=1.0
Type=Application
Terminal=true
Icon[en_US]=nm-device-wired
Name[en_US]=ClearIPtables
Exec=gksudo /home/cymbal/bin/cleariptables.sh
Comment[en_US]=Flush iptables filters
Name=ClearIPtables
Comment=Flush iptables script
Icon=nm-device-wired
바탕 화면 바로 가기를 클릭할 때마다 비밀번호를 입력하라는 메시지가 표시되고 스크립트가 실행됩니다.
문제: 바탕 화면 바로가기를 클릭하면 비밀번호를 묻는 메시지가 표시됩니다. 왜냐하면sudo-i스크립트에서 비밀번호를 다시 입력하라는 메시지가 표시됩니까?
답변1
아니요, 비밀번호를 다시 묻는 메시지가 표시되지 않습니다. gksudo
내 경험상 이미 sudo
루트인 경우에는 비밀번호를 묻는 메시지가 전혀 표시되지 않습니다(비록 명시적으로 문서화되어 있는 것을 찾을 수는 없지만).
답변2
당신은 그것을 사용할 수 있습니다비밀번호 없음 WD지시어를 파일에 넣으세요 sudoers
.
/etc/sudoers
파일 에 이 줄을 추가하세요
your_login ALL = (root) NOPASSWD: /path/to/your/script
visudo
이 파일을 편집할 때는 일반 텍스트 편집기 대신 명령을 사용해야 합니다 . 변경 사항을 저장하기 전에 구문 오류를 확인합니다.