새로운 motd 스크립트가 실행되지 않습니다

새로운 motd 스크립트가 실행되지 않습니다

다른 모든 스크립트처럼 실행되는 99-wlan0-RWB새 스크립트를 만들었습니다 . /etc/update-motd.d단독으로 실행하거나 를 통해 실행하면 작동 run-parts하지만 로그인하면 작동하지 않습니다. 무엇이 문제인가요? (라즈베리 파이에서도 같은 문제가 발생했습니다.전혀스크립트를 실행 중입니다 update-motd.d. )( 에는 아무것도 없습니다 /var/log/syslog.)

$ ssh root@mini31
Linux mini31 4.19.0-18-amd64 #1 SMP Debian 4.19.208-1 (2021-09-29) x86_64
External IP: xx.yyy.zzz.www
 ______________________________________
/ 1st graffitiist: QUESTION AUTHORITY! \
|                                      |
\ 2nd graffitiist: Why?                /
 --------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
df: 43G (81%)
    O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.11, 5:0.14, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +52.0
No mail.
mini31 # cd /etc/update-motd.d/
mini31 # ./98-data
df: 43G (81%)
    O2: 1.65 GB / 3.3 GB
Lebara: 6.49 MB / 66 MB
up: 10 days, la: 1:0.18, 5:0.15, 15:0.10
mssql tempdb.mdf is 515M
CPU temp.: +50.0°C
mini31 # ./99-wlan0-RWB
wlan0 is up
mini31 #

답변1

나도 같은 문제가 있었고 무슨 일이 일어나고 있는지 알아내는 데 3일 밤이 걸렸습니다. 하지만 파일 이름에 대문자가 있습니다. 파일 이름을 모두 소문자로 바꾸면 작동이 시작됩니다. 실망스럽게도 명명 규칙에 대한 문서에는 이 내용이 명시되어 있지 않습니다(https://manpages.ubuntu.com/manpages/jammy/en/man5/update-motd.5.htm)

답변2

최신 시스템의 경우 MOTD는 pam_motdPAM 인증/권한 부여 하위 시스템을 통해 제어됩니다(참고자료 참조 man pam_motd). 세션이 열릴 때 sshd및 도구에 의해 트리거됩니다 .login

관련 항목의 출처는 다음과 같습니다./etc/pam.d/sshd

# Print the message of the day upon successful login.
# This includes a dynamically generated part from /run/motd.dynamic
# and a static (admin-editable) part from /etc/motd.
session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so  noupdate

첫 번째 항목에서 참조된 파일은 /run/motd.dynamic처리 디렉터리의 실행 가능한 스크립트에 의해 생성됩니다 /etc/update-motd.d/. 즉, 사용자가 로그인할 때마다 파일이 업데이트됩니다.

두 번째 항목은 단순히 고정된 파일의 내용을 출력합니다 /etc/motd.

이제 스크립트가 실행되지 않는 이유에 대해 두 가지 제안이 있습니다.

  1. 연결된 디렉터리 및/또는 파일에 대한 권한이 /etc/update-motd.d너무 광범위합니다. (이것이 문제인지는 모르겠지만 루트로 실행되기 때문에 문제가 될 것입니다.)
  2. PAM 정의 파일의 항목이 누락되었거나 주석 처리되었습니다.

답변3

/etc/motd로그인 시 업데이트 방법은 다음과 같습니다. 나는 이것을 내 RPi OS 깨진 시스템에서 테스트했고 그것은 나에게 효과적입니다. pam_motd동일하거나 유사한 결과를 얻을 수 있는 다른 방법(예: 사용)이 있습니다 . 제가 주의를 기울이지 않으면 단순한 MOTD가 상당히 복잡해졌습니다. 이것데비안 위키motdRaspberry Pi OS와 같은 Debian 기반 배포판에 대한 대부분의 세부 정보를 다루고, 기타 motd여러 일반적인 배포판을 처리하는 방법도 요약합니다.

로그인 시 파일을 생성/새로 고치는 한 가지 방법 /etc/motd은 로그인 시 명령을 실행하여 업데이트하는 것입니다. 로그인 스크립트 의 경우 bash이 파일에서 실행할 수 있습니다 ~/.profile.

pi다음은 SSH 로그인을 통해 내 시스템에서 작동하는 간단한 예입니다. user 끝에 추가된 한 줄의 명령 시퀀스입니다 ~/.profile. 수정하려면 권한이 필요하므로 다음을 /etc/motd통해 root파일에 가장 편리하게 쓸 수 있습니다 .teesudo

printf "Hello from .profile for  %s.\n" $USER | sudo tee -a /etc/motd >/dev/null

-a많은 사용 사례에 적합하지 않을 수 있는 tee옵션을 첨부하는 것은 단순히 인수를 생략하여 재정의(동등한)를 호출하는 것입니다 . 또한 리디렉션을 사용하면 MOTD가/etc/motd>-a/dev/null반복하다터미널의 로그인 화면에서

노트:

  1. sudo사용자가 pi파일에 설정을 가지고 있기 때문에 여기서 호출이 작동합니다. 현재NOPASSWDsudoers기본RPi OS 차단기 설정.

  2. SSH 로그인을 위한 MOTD 표시통제된다고 하네요/etc/ssh/sshd_config패스( ) 에서 PrintMotd.하지만, Debian 배포판의 경우 이 옵션을 기본값( ) no으로 설정해야 MOTD가 에서 한 번, 다시 에서 두 번 출력됩니다 .sshdyessshdpam_motd

  3. re의 의견을 읽어보세요 ~/.profile. ~/.bash_profile아니면 존재 ~/.bash_login.

관련 정보