Theo tôi biết, PAM không xác định trình bao của người dùng, phần này được để lại cho ứng dụng. Các mô-đun phiên của PAM thực hiện các hành động và kiểm tra chung phải được thực hiện cho mỗi lần đăng nhập bằng dịch vụ cụ thể đó. Nếu sau đó ứng dụng muốn khởi động trình bao, thì có thể tự do làm điều đó và thường sẽ tra cứu trình bao trong cơ sở dữ liệu người dùng.
Giả sử câu hỏi của bạn là về OpenSSH , đó chính xác là những gì nó làm: một khi người dùng được xác thực và công cụ phiên PAM đã được thực hiện (nếu được định cấu hình để sử dụng PAM¹), máy chủ ssh sẽ tìm kiếm shell trong cơ sở dữ liệu người dùng (trực tiếp, không thông qua thư viện PAM).
Cơ sở dữ liệu người dùng không giới hạn /usr/passwd
và bạn bè. Trên Linux (mà tôi cho rằng bạn đang sử dụng kể từ khi bạn đề cập shadow
), điều gì tạo nên cơ sở dữ liệu người dùng được xác định bởi passwd
cài đặt trong /etc/nsswitch.conf
. Trong các thiết lập đa máy tính, các bổ sung phổ biến cho cơ sở dữ liệu cục bộ là NIS và LDAP . Nếu bạn muốn sử dụng lớp vỏ không phải là cái trong /etc/passwd
, đây có thể là cấu hình (mặc dù nó hơi lạ và có thể mọi người có thể đưa ra đề xuất tốt hơn nếu bạn cho chúng tôi biết bạn đang cố gắng thực hiện điều gì).
Nếu bạn muốn có người dùng không có quyền truy cập shell đầy đủ, giải pháp tự nhiên là thay đổi /etc/passwd
để đặt shell bị hạn chế - có lẽ rssh chỉ cho phép một vài ứng dụng loại sao chép tệp như scp, rsync và cvs. Bạn cũng có thể sử dụng các lệnh bắt buộc trong ~/.ssh/authorized_keys
tệp của người dùng .
Nếu bạn muốn xem dấu vết của những gì máy chủ ssh đang làm, hãy khởi động trình nền như ssh -ddd
. Bạn cũng có thể có được chế độ xem của khách hàng ssh -vvv
, mặc dù ở đây, chế độ xem của máy chủ là điều bạn sẽ quan tâm nhất.
¹
OpenSSH chỉ sử dụng PAM nếu nó được cấu hình với sự hỗ trợ PAM và UsePAM
chỉ thị được thiết lập để yes
ở sshd_config
. Ngay cả khi nó sử dụng PAM, nó cung cấp các phương thức xác thực khác ngoài PAM; đặc biệt xác thực khóa công khai không đi qua PAM.