2012-05-29 38 views
5

Tôi có một tập lệnh mà tôi muốn chạy ngay sau khi xác thực đăng nhập của người dùng. Để thực hiện điều này, tôi đã thêm tên tập lệnh trong tệp /etc/rc5.d/S##rc.local. Nhưng sau đó tôi đã biết rằng, bất cứ điều gì được thêm vào trong tập tin rc.local được thực hiện trong thời gian khởi động của hệ thống không sau khi xác thực đăng nhập. Bất cứ ai có thể cho tôi biết làm thế nào để chạy kịch bản sau khi xác thực đăng nhập người dùng?Cách chạy tập lệnh sau khi xác thực đăng nhập người dùng trong linux

+1

Bạn đang thực hiện việc này để thuận tiện hay bảo mật? I E. bạn chỉ muốn thiết lập môi trường đăng nhập của mình (thêm bí danh, đặt biến, v.v) hay bạn muốn tập lệnh chạy sau mỗi lần đăng nhập mà không cho phép người dùng xóa nó? – lanzz

+0

Vì mục đích bảo mật. Trên thực tế tôi muốn chạy kịch bản bất cứ khi nào admin đăng nhập vào hệ thống. – user976754

+2

nếu bất kỳ câu trả lời nào dưới đây đã giúp bạn, vui lòng đánh dấu chúng là đã được chấp nhận. cảm ơn. – woohoo

Trả lời

3

Hãy thử thêm này để /etc/pam.d/login của bạn:

session optional pam_exec.so /bin/bash /path/to/your/script.sh 

Bạn sẽ cần phải kiểm tra trong kịch bản của bạn nếu người dùng hiện nay thực sự là một quản trị viên (bằng đường thư theo tiêu chí của bạn vì đã quản trị là).

+0

Xin chào Lanzz, tôi đã thêm phần này vào tập lệnh /etc/pam.d/login. Nhưng không thể có được kịch bản của tôi ... – user976754

+0

'pam_exec' dường như không hiển thị đầu ra của nó trên thiết bị đầu cuối nơi người dùng đăng nhập. Bạn có cần hiển thị bất kỳ thứ gì trong tập lệnh của mình hay chỉ để thực hiện điều gì đó trong nền (ví dụ: gửi thông báo)? Bạn có thể thêm một tệp nhật ký nơi đầu ra của tập lệnh của bạn sẽ được ghi lại: 'phiên tùy chọn pam_exec.so log =/path/to/logfile/bin/bash/path/tới/your/script.sh' – lanzz

+0

Tôi tìm thấy dòng này un my '/ etc/pam.d/login'. Tôi nghĩ rằng đó là lý do tại sao uname được in khi tôi ssh để một machiine: 'phiên tùy chọn pam_exec.so loại = open_session stdout/bin/uname -snrvm' – Nope

13

Hoặc, bạn có thể thêm tập lệnh của mình vào /etc/profile.d thư mục.

Đọc thêm về điều này herehere.

Về cơ bản, bạn nên cung cấp cho tập lệnh của mình phần mở rộng .sh vì tất cả các tệp này được thực hiện trong vòng lặp sau khi người dùng đăng nhập.

+0

Nó làm việc thực sự. Cảm ơn :) – user976754

+1

@ user976754: Tôi rất vui vì nó đã giúp bạn. Vui lòng đánh dấu câu trả lời của tôi là câu trả lời được chấp nhận cho câu hỏi này :) – woohoo

+0

Có vẻ như bạn cần có quyền root để tạo các tệp trong /etc/profile.d Làm cách nào để tệp được thực thi khi người dùng đăng nhập? Vì tệp sẽ được sở hữu bởi root. – ams

Các vấn đề liên quan