Thực hiện một lệnh trên đăng nhập người dùng


23

Trong hệ thống máy tính để bàn Linux, tôi muốn thực thi một lệnh khi người dùng đăng nhập.

Sau khi đọc một số bài viết khác, tôi đã cố gắng chèn lệnh vào ~/.bashrcnhưng không thành công. Hơn nữa, hệ thống sử dụng giao diện đồ họa để đăng nhập người dùng, vì vậy lệnh không nên liên quan đến việc bắt đầu trình bao.

Tôi cũng đã cố nối thêm lệnh vào một trong các tập lệnh chứa trong đó /etc/profile.dmà không có kết quả.

Có một cách khác để làm điều này? Bất kỳ tập tin mà hệ thống đọc sau khi đăng nhập?


Câu trả lời:


21

Không có gì đảm bảo rằng trình quản lý hiển thị đồ họa sẽ đọc các tệp khởi động cổ điển. Điều này thay đổi giữa các bản phân phối và giữa các trình quản lý hiển thị. Một trong những điều sau đây nên làm việc.

  1. Sử dụng phương pháp riêng của môi trường máy tính để bàn của bạn để đặt các ứng dụng khởi động. Các chi tiết sẽ phụ thuộc vào DE bạn đang sử dụng, nhưng bạn có thể tạo một tập lệnh chạy lệnh của bạn và thêm nó vào danh sách các ứng dụng khởi động. Ví dụ: trên hệ thống của tôi (Cinnamon), bạn có thể thực hiện việc này thông qua "Cài đặt hệ thống" => "Ứng dụng khởi động".

  2. Sử dụng ~/.xprofile, điều này có nguồn gốc từ ít nhất các trình quản lý đăng nhập GDM, LDM, LightDM và LXDM.

  3. Nếu cả hai cách trên đều không hoạt động, hãy thử thêm lệnh vào ~/.profile: Đây là tệp khởi tạo chính cho shell đăng nhập và cũng được đọc bởi một số shell đồ họa khi đăng nhập.

  4. Như @derobert đã chỉ ra trong các bình luận, bạn cũng có thể sử dụng các tiêu chuẩn máy tính để bàn miễn phí :

    Các thư mục Autostart là $ XDG_CONFIG_DIRS / autostart như được định nghĩa theo phần "Tham khảo thông số kỹ thuật này" trong "đặc tả thư mục cơ sở máy tính để bàn".

    Nếu cùng một tên tệp được đặt trong nhiều Thư mục Autostart, chỉ nên sử dụng tệp trong thư mục quan trọng nhất.

    Ví dụ: Nếu $ XDG_CONFIG_HOME không được đặt Thư mục tự khởi động trong thư mục chính của người dùng là ~ / .config / autostart /

    Ví dụ: Nếu $ XDG_CONFIG_DIRS không được đặt thì Thư mục tự khởi động trên toàn hệ thống là / etc / xdg / autostart /

    Ví dụ: Nếu $ XDG_CONFIG_HOME và $ XDG_CONFIG_DIRS không được đặt và hai tệp /etc/xdg/autostart/foo.desktop và ~ / .config / autostart / foo.desktop tồn tại thì chỉ có tệp ~ / .config / máy tính để bàn sẽ được sử dụng vì ~ / .config / autostart / quan trọng hơn / etc / xdg / autostart /

Điều ~/.bashrcnày là hoàn toàn không liên quan ở đây, nó chỉ được đọc bởi các shell không đăng nhập tương tác, vì vậy được bỏ qua trên shell đăng nhập, đồ họa hay không.


5
Có thể muốn đề cập ~/.config/autostart/etc/xdg/autostart/đó là các vị trí tiêu chuẩn theo Thông số kỹ thuật tự khởi động ứng dụng máy tính để bàn . Và cũng /etc/X11/Xsession.d~/.xsession.
derobert

6

Một tùy chọn khác là sử dụng pam - điều này sẽ cung cấp cho bạn một cách chính xác để xác định các hành động đăng nhập.

Đối với một hành động chung, bạn có thể dựa vào pam_exec ( http://manpages.ubfox.com/manpages/hardy/man8/pam_exec.8.html ). Tuy nhiên, nếu bạn cần thực hiện một hành động cụ thể hơn theo cách an toàn, có thể tồn tại các mô-đun pam chuyên dụng hơn để phù hợp hơn, chẳng hạn như pam_mount thường được sử dụng (đối với các gắn kết khi đăng nhập - http: //manpages.ubfox. com / manpages / hardy / man8 / pam_mount.8.html ) hoặc pam_echo (đối với các tin nhắn tùy ý cho người dùng - http: //manpages.ub Ubuntu.com/manpages/hardy/man8/pam_echo.8.html ).

Nói chung, pam là một hệ thống rất gọn gàng để tùy chỉnh thông tin đăng nhập, vì vậy bạn có thể muốn tìm hiểu thêm một chút về nó, thay vì dựa vào kịch bản có khả năng không an toàn, như những người khác đã đề xuất.

Thí dụ

Đưa ra một /etc/pam.d/system-auth khá điển hình, chúng ta có thể sử dụng pam_exec sau khi đăng nhập như thế này:

session         optional        pam_ssh.so
session         required        pam_limits.so
session         required        pam_env.so
session         optional        pam_mktemp.so
session         required        pam_unix.so
session         optional        pam_exec.so /usr/local/bin/my_prog
session         optional        pam_permit.so

nơi /usr/local/bin/my_proglà chương trình tùy ý được chạy sau khi người dùng đăng nhập thành công.


2
Đây là một câu trả lời tốt, mặc dù bạn nên bao gồm một ví dụ về dòng mà bạn sẽ thêm pamcấu hình vì đây là không tầm thường.
Graeme

2

Theo chủ đề này: Chạy lệnh tự động sau khi đăng nhập?

Bạn có giải pháp của .bashrc(không phải những gì bạn cần) và giải pháp cho các ứng dụng khởi động. Tôi trích dẫn Daniel S.:

gnome-session-properties có thể được sử dụng để cấu hình các ứng dụng khởi động.

Ngoài ra, nếu bạn muốn một ứng dụng chạy khi khởi động hệ thống, bạn có thể thêm một quy tắc như sau vào crontab của mình (chỉnh sửa crontab với crontab -e):

@reboot /run/this/program/at/boot >/dev/null 2>&1
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.