/etc/motd?에서 명명된 파이프가 표시되지 않습니까?

/etc/motd?에서 명명된 파이프가 표시되지 않습니까?

젠투 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.

  1. 파일 크기를 확인하세요.
  2. 이 크기의 버퍼를 할당하십시오.
  3. 전체 파일을 버퍼로 읽어옵니다.
  4. 사용된 출력 방법을 통해 버퍼를 출력합니다. (PAM은 결국 모듈식이므로 터미널이라고 가정할 수 없습니다.)

파이프에 파일 크기가 없기 때문에 1단계에서 실패합니다.

편집하다:애초에 PAM이 크기에 관심을 갖는 이유는 무엇입니까? 이는 의도적이거나 의도하지 않은 서비스 거부를 방지하기 위한 것이라고 가정합니다. PAM은 파일 크기를 확인할 때 파일이 64KB보다 큰 경우 motd 출력도 거부합니다. 예를 들어, 누군가 DVD 영화 파일을 /etc/motd에 연결했다면 시스템에 로그인하려는 사람은 매우 실망스러울 것입니다. 메모리가 얼마나 필요한지는 말할 것도 없고요.

답변2

이것협회필요한 모든 단계를 안내해 드립니다.

관련 정보