질문
나는 동적 MOTD(오늘의 메시지, /etc/motd)를 가지려고 노력하고 있으며 파일을 편집하려면 sudo를 실행해야 합니다. 또한 /etc/profile에 /etc/motd에 쓰는 Python 스크립트를 호출하도록 했습니다.
/etc/profile에서 generateMOTD.py를 호출 sudo python generateMOTD.py
하고 열고, 쓰고, 닫습니다.
새 탭이나 터미널을 열면 MOTD(변경 전 이전 탭)라고 표시된 다음 비밀번호를 묻는 메시지가 표시됩니다. 여기에는 비밀번호가 필요하지 않은 것 같습니다.
나는 그것을 고치려고 노력한다
이 문제를 해결하기 위해 다음 두 가지를 모두 포함하도록 /etc/sudoers를 편집했습니다.
<user> ALL=(ALL:ALL) NOPASSWD:/etc/generateMOTD.py
<user> ALL=(ALL:ALL) NOPASSWD:/etc/profile
내 사용자 이름은 어디에 있습니까 <user>
?
이제 명령줄에서 /etc/profile 또는 /etc/generateMOTD.py를 호출하면 암호를 묻지 않는 이 방법을 사용할 수 있습니다.
그러나 예상대로 실행하면(세션 시작 시) 비밀번호를 묻는 메시지가 나타납니다. 대부분의 이전/이후 단계(예: 구성 파일에서 generateMOTD.py를 호출하기 전후, generateMOTD.py에서 generateMOTD.py를 호출하기 전후)에 echo/print 문을 추가했습니다. 따라서 총 4개의 문이 콘솔에 기록됩니다 profileBefore > pythonCodeBefore > pythonCodeAfter > profileAfter
. 세션 시작 시(새 탭/터미널) 실행할 때 첫 번째 메시지(profileBefore) 이후, 나머지 메시지 이전에 비밀번호를 묻는 메시지가 표시됩니다. 그래서 이것은 내 진술과 관련이 있지만 sudo python generateMOTD.py
나는 그것을 알아낼 수 없습니다.
내가 작업 중인 모든 파일:
/etc/sudoers:
...
<user> ALL=(ALL:ALL) NOPASSWD:/etc/generateMOTD.py
<user> ALL=(ALL:ALL) NOPASSWD:/etc/profile
/etc/구성 파일
...
echo "BEFORE PROFILE PYTHON CALL:"
sudo python /etc/generateMOTD.py
echo "AFTER PROFILE PYTHON CALL:"
/etc/generateMOTD.py
print ("IN THE MIDDLE OF THE PYTHON CALL, BEFORE!")
f= open("/etc/motd","w+")
f.write("!MOTD!\n")
f.close()
print ("IN THE MIDDLE OF THE PYTHON CALL, AFTER WRITE!")