/ etc / motd không được hiển thị khi một ống có tên?


8

Chạy Gentoo 3.4.0

Gần đây đã nghe về tập tin / etc / motd, tôi đã cố gắng để nó hiển thị vận may Coway ngẫu nhiên. Tôi đã viết một số tập lệnh bash ngẫu nhiên để hoạt động như một trình nền, cho / etc / motd như một ống dẫn có tên, như đã thấy trên một số diễn đàn.

Tôi không nghĩ có bất kỳ vấn đề nào với tập lệnh bởi vì đường ống hoạt động tốt, nhưng Bộ GTVT sẽ không hiển thị khi đăng nhập (sử dụng tệp thông thường hoạt động)!

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                      |
\ <199707300650.XAA05515@wall.org>      /
 --------------------------------------- 
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/

Tôi có thiếu một cái gì đó rõ ràng?

Không sử dụng bất cứ thứ gì như .hushlogin hoặc whatnot, đã thử sử dụng nhiều shell, ống có thể đọc được a + r.

Câu trả lời:


7

Bạn không thiếu thứ gì rõ ràng. Tôi đi sâu vào nguồn của pam_motdmô-đun để tìm ra cái này.

Bí quyết là pam_motdlàm như sau với /etc/motd:

  1. Kiểm tra kích thước của tập tin.
  2. Phân bổ một bộ đệm có kích thước đó.
  3. Đọc toàn bộ tập tin vào bộ đệm.
  4. Xuất bộ đệm thông qua bất kỳ phương thức đầu ra nào đang được sử dụng. (Rốt cuộc, PAM là mô-đun; không thể cho rằng đó là một thiết bị đầu cuối.)

Vì một đường ống không có kích thước tệp, điều này thất bại ở bước 1.

EDIT : Tại sao PAM quan tâm đến kích thước ở nơi đầu tiên? Tôi tưởng tượng đó là để ngăn chặn sự từ chối dịch vụ, dù là cố ý hay vô ý. Khi PAM kiểm tra kích thước tệp, nó cũng từ chối xuất motd nếu tệp lớn hơn 64 kbyte. Tôi tưởng tượng bất cứ ai cố gắng đăng nhập vào hệ thống sẽ rất buồn nếu ai đó quản lý để đưa tập tin phim DVD vào / etc / motd, chẳng hạn - không đề cập đến việc có thể chiếm bao nhiêu bộ nhớ.


Chà, cuối cùng tôi chỉ xây dựng lại PAM bằng một bản vá tùy chỉnh để nó đọc chính xác đường ống nếu nó là một => pastebin.com/bMpbLskH
Fira

Nguồn mở là tuyệt vời theo cách đó. ^ _ ^ Tôi đã thêm suy nghĩ của mình về lý do tại sao PAM kiểm tra kích thước tệp, điều mà tôi nghĩ rằng bạn có thể đã nghi ngờ từ ghi chú "cần thêm kiểm tra" trong bản vá của mình. Tôi đoán việc dễ làm nhất là ngừng đọc tẩu sau 64k.
Jander

2

Đây liên kết sẽ hướng dẫn bạn qua tất cả các bước cần thiết


1
Đẹp. Bạn cũng nên thêm các bước trực tiếp vào câu trả lời, vì vậy nếu liên kết bị hỏng trong tương lai, câu trả lời của bạn sẽ vẫn hữu ích.
Jander

Vì vậy, vô hiệu hóa MotD, và hiển thị một cái gì đó bằng tay thay thế? Tại sao không, nhưng tôi có thể làm điều này một cách toàn cầu, độc lập với bash? Tôi đang sử dụng ZSH nên nội dung của / etc / profile không được thực thi
Fira
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.