젠투 3.4.0 실행
최근에 /etc/motd 파일에 대해 들었을 때 나는 이 파일로 무작위 황소 경주 운세를 표시하려고 했습니다. 일부 포럼에서 볼 수 있듯이 데몬 역할을 하는 임의의 bash 스크립트를 작성하여 /etc/motd를 명명된 파이프로 제공했습니다.
파이프가 잘 작동하기 때문에 스크립트에 문제가 있다고 생각하지 않지만 로그인 시 MOTD가 표시되지 않습니다(일반 파일을 사용하면 작동함)!
fira@nyan ~ % cat /etc/motd
_______________________________________
/ We didn't put in ^^ because then we'd \
| have to keep telling people what it |
| means, and then we'd have to keep |
| telling them why it doesn't short |
| circuit. :-/ |
| |
| -- Larry Wall in |
\ <[email protected]> /
---------------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/
나는 분명한 것을 놓치고 있습니까?
.hushlogin 또는 이와 유사한 것을 사용하지 마십시오. 여러 셸을 사용해 보십시오. 파이프는 a+r로 읽을 수 있습니다.
답변1
당신은 명백한 것을 놓치고 있지 않습니다. 깊이 연구했어요pam_motd
모듈 소스이것을 알아내세요.
비결은 pam_motd
다음을 수행 하는 것입니다 /etc/motd
.
- 파일 크기를 확인하세요.
- 이 크기의 버퍼를 할당하십시오.
- 전체 파일을 버퍼로 읽어옵니다.
- 사용된 출력 방법을 통해 버퍼를 출력합니다. (PAM은 결국 모듈식이므로 터미널이라고 가정할 수 없습니다.)
파이프에 파일 크기가 없기 때문에 1단계에서 실패합니다.
편집하다:애초에 PAM이 크기에 관심을 갖는 이유는 무엇입니까? 이는 의도적이거나 의도하지 않은 서비스 거부를 방지하기 위한 것이라고 가정합니다. PAM은 파일 크기를 확인할 때 파일이 64KB보다 큰 경우 motd 출력도 거부합니다. 예를 들어, 누군가 DVD 영화 파일을 /etc/motd에 연결했다면 시스템에 로그인하려는 사람은 매우 실망스러울 것입니다. 메모리가 얼마나 필요한지는 말할 것도 없고요.
답변2
이것협회필요한 모든 단계를 안내해 드립니다.