Các cách khác nhau mà một tin nhắn có thể được hiển thị cho bash shell sau khi người dùng đăng nhập là gì?


13

Tôi có VPS CentOS 5.7 sử dụng bash làm vỏ của nó hiển thị lời chào thương hiệu ngay sau khi đăng nhập qua SSH. Tôi đã cố gắng sửa đổi nó, nhưng dường như không thể tìm thấy nó ở đâu trong những nơi thông thường. Cho đến nay tôi đã xem motdtập tin và kiểm tra sshd_configcài đặt tập tin banner. Một tập tin banner không được đặt.

Tôi có thể tìm nơi khác thông điệp đăng nhập ở đâu?


1
Bạn có thể thử đệ quy greptrong /etcmột số tập hợp con của tin nhắn.
Kevin

@Kevin Chờ đã, bạn đang theo dõi tôi trên twitter phải không? Tôi chỉ trầm ngâm rằng tôi đang sử dụng grep -r để tìm thứ gì đó. Ngoại trừ tôi là một kẻ ngốc nghếch và quyết định bắt đầu lúc / =)
Wesley

Tôi cũng đã bắt đầu /, mất mãi mãi trên đĩa 1TB, để tôi nói với bạn ... Nhưng tôi chưa bao giờ lên twitter :)
Kevin

@WesleyDavid bạn có thể đăng ảnh chụp màn hình không?
Karlson

Câu trả lời:


21

Các hệ thống unix truyền thống hiển thị /etc/motdsau khi người dùng được xác thực thành công và trước khi trình bao của người dùng được gọi. Trên các hệ thống hiện đại, điều này được thực hiện bởi pam_motdmô-đun PAM, có thể được cấu hình trong /etc/pam.confhoặc /etc/pam.d/*để hiển thị một tệp khác.

Máy chủ ssh có thể được cấu hình để in /etc/motdnếu PrintMotdtùy chọn không được tắt /etc/sshd_config. Nó cũng có thể in thời gian đăng nhập trước đó nếu PrintLastLogkhông tắt.

Một thông điệp truyền thống khác có thể cho bạn biết liệu điều đó You have new mailhay You have mail. Trên các hệ thống có PAM, điều này được thực hiện bởi pam_mailmô-đun. Một số vỏ có thể in một tin nhắn về thư có sẵn.

Sau khi trình bao của người dùng được khởi chạy, các tệp khởi động của người dùng có thể in các thông báo bổ sung. Để đăng nhập tương tác, nếu vỏ đăng nhập của người dùng là vỏ theo kiểu Bourne, hãy xem /etc/profile,~/.profile cộng thêm ~/.bash_profile~/.bash_logincho bash. Đối với một đăng nhập tương tác để zsh, nhìn vào /etc/zprofile, /etc/zlogin, /etc/zshrc, ~/.zprofile, ~/.zlogin~/.zshrc. Để đăng nhập tương tác vào csh, hãy xem /etc/csh.login~/.login.

Nếu shell đăng nhập của người dùng là bash và đây là đăng nhập không tương tác, thì bash thực thi ~/.bashrc(điều này thực sự kỳ lạ, vì ~/.bashrcđược thực thi cho shell tương tác chỉ khi shell không phải là shell đăng nhập). Đây có thể là một nguồn gây rắc rối; Tôi khuyên bạn nên bao gồm đoạn mã sau ở đầu ~/.bashrcđể bảo lãnh nếu vỏ không tương tác:

if [[ $- != *i* ]]; then return; fi

Đó là một loạt tiếng vang trong .bash_profile của tôi. > _ <Câu hỏi này không liên quan đến bản gốc, nhưng: Không lặp lại những điều trong .bash_profile có vẻ như là một cách gửi tin nhắn kém? Có lẽ sẽ tốt hơn nếu bạn chỉ muốn gửi tin nhắn đến một người dùng. Cuối cùng, đây là tài khoản root. Sau đó, một lần nữa, tôi là một người mới nên tôi không ở vị trí để đánh giá mọi thứ quá nghiêm trọng.
Wesley

@WesleyDavid Báo lại một cái gì đó .bash_profilechỉ gửi một tin nhắn cho chính bạn. Một số người thích xem các tin nhắn hữu ích hoặc hài hước khi họ đăng nhập. Tôi không thể nói cho tài khoản gốc của hệ thống của bạn vì tôi không biết nội dung của tin nhắn cũng như mọi người và cài đặt có liên quan.
Gilles 'SO- ngừng trở nên xấu xa'

Đưa tin nhắn vào / etc / motd hoạt động trên Mac OS X, đó là tất cả những gì tôi cần. Cảm ơn vì điều đó.
dgig

8

Có một vài:

/etc/motd
/etc/issue
/etc/profile - Could echo the message
/etc/profile.d/* - Would be called from /etc/profile

Ngoài ra

/etc/bash_bashrc
/etc/.bashrc
/etc/bashrc
$HOME/.profile
$HOME/.bashrc

Bạn cũng có thể phải trải qua mọi chương trình được gọi từ các tập lệnh đó bởi vì một cái gì đó giống như fortunecó thể lưu trữ các quip mà nó hiển thị trong/usr/share . Để cô lập nó, bạn có thể làm:

. /etc/profile
. /etc/bash.bashrc
. $HOME/.profile
. $HOME/.bashrc

Trên Ubuntu cũng có tệp:

/etc/motd.tail

1
/etc/issuetheo truyền thống được hiển thị trước khi người dùng đăng nhập, không phải sau đó.
Chris Xuống

Cảm ơn! Không biết về profileprofile.d. Than ôi, tất cả bốn đề nghị của bạn đã không đưa ra bất cứ điều gì. Tôi đang tự hỏi nếu một cái gì đó tùy chỉnh được biên dịch thành nhị phân bash ...?
Wesley

@ChrisDown Đúng nhưng tôi không biết bất kỳ hệ thống nào sẽ đưa bất cứ thứ gì lên màn hình sau khi dấu nhắc được hiển thị.
Karlson

@WesleyDavid Tôi đã sửa đổi câu trả lời.
Karlson

Cảm ơn rất nhiều cho tất cả các thông tin! Điều này đã cho tôi rất nhiều trong cách học các cách khác nhau mà các shell có thể gửi thông tin đến các phiên TTY. =)
Wesley

3

Các hệ thống mới hơn lưu trữ các thành phần MOTD /etc/update-motd.dđể có thể chạy các macro khác nhau để tùy chỉnh motd để có thông tin cập nhật, cảnh báo hệ thống, v.v. khi đăng nhập.

Thêm tùy chỉnh của bạn như là một tập tin khác với ưu tiên từ 00đến99

99-footerthường tải /etc/motd.tailnếu sắp xếp nó vào cuối là đủ và bạn không muốn sử dụng bất kỳ mục macro nào.


1

Bạn có thể nhìn vào /etc/shell, đó là nơi tôi tìm thấy một thông điệp mà tôi đang cố gắng thay đổi. Không cần bình luận với "#" bạn chỉ cần xóa bất kỳ văn bản nào và thêm văn bản của riêng bạn. Ngoài ra, khoảng trắng và dòng mới sẽ xuất hiện khi bạn đặt chúng vào tệp.

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.