Khi chạy 'su - tên người dùng', pam_group không thêm các nhóm bổ sung từ /etc/security/group.conf nhưng đăng nhập sshd thì sao?


7

Tôi gặp khó khăn trong việc xác định lý do tại sao sukhông hoạt động như cấu hình PAM sẽ ngụ ý. Nói tóm lại, sử dụng suđể trở thành người dùng khác nên tải các nhóm thứ cấp theo cấu hình PAM, nhưng pam_groupkhông thêm các /etc/security/group.confnhóm, chúng tôi chỉ kết thúc với các nhóm LDAP của mình. Khi đăng nhập qua SSH với tư cách là người dùng, bạn có các nhóm từ cả hai nguồn.

Thiết lập của chúng tôi không quá xa so với CentOS 6.5 mặc định, chúng tôi đang sử dụng SSSD để cung cấp thông tin đăng nhập qua Kerberos / LDAP nhưng không thực hiện thay đổi trực tiếp cho bất cứ điều gì /etc/pam.dtheo như tôi nhớ, những thay đổi được thực hiện bởi:

authconfig --updateall --enablesssd --enablesssdauth --enablemkhomedir

Tất nhiên có riêng biệt /etc/pam.d/su/etc/pam.d/sshd, nhưng cả hai đều bao gồm các tệp giống nhau pam_group.sođược gọi (bao gồm system-authpassword-authtương ứng, nhưng hai tệp được bao gồm giống hệt nhau).

Phần có liên quan của /etc/pam.d/su:

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

Phần có liên quan của /etc/pam.d/sshd:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       include      password-auth

Trong tệp bao gồm:

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        optional      pam_group.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so
...

Khi đăng nhập qua SSH, dòng pam_group.so sẽ thêm các nhóm thông qua /etc/security/group.conf, thêm nhóm 'apache' (trong số những người khác) cho bất kỳ ai đăng nhập:

*;*;*;Al0000-2400;apache,devs,rvm

Khi chạy su - usernamevới quyền root (hoặc sudo su - ...như bất kỳ ai khác) và trở thành người dùng khác, pam_group này không xuất hiện để thêm các nhóm bổ sung này. Trên thực tế, khi đăng nhập bằng root cung cấp cho bạn các nhóm này (vì pam_group đã làm việc đó), chạy su - usernamekết quả khiến bạn mất các nhóm đó, vì subắt đầu từ không có gì và chỉ thêm vào các nhóm mà nó nhận được từ PAM (về cơ bản là các nhóm LDAP, vì pam_group không đang làm việc)

Ở đây bạn có thể thấy, đăng nhập với quyền root ban đầu, tôi có apache (48), devs (501) và rvm (504), nhưng chạy chỉ su -để đăng nhập với quyền root tôi mất tất cả trừ root (0). Hơn nữa, đăng nhập với tư cách là người dùng 'bob' bằng cách sử dụng su - bobbạn có thể thấy tôi có rất nhiều nhóm từ LDAP (cộng với một nhóm được mã hóa cứng từ / etc / nhóm không hoạt động), nhưng không có gì từ đó /etc/security/group.conf.

[root@dev-web pam.d]# id -G
0 48 501 504
[root@dev-web pam.d]# su -
[root@dev-web ~]# id -G
0
[root@dev-web ~]# logout
[root@dev-web pam.d]# su - bob
[bob@dev-web ~]$ id -G
1005001 10 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

Cuối cùng, giao diện SSH như bob trông như thế nào - một lần nữa tôi có apache (48), devs (501) và rvm (504).

[bob@dev-web ~]$ id -G
1005001 10 48 501 504 1001000 1001001 1001002 1001003 1001004 1001005 1001008 1001009 1001010 1001011 1001012 1001017 1001018 1001025 1001027 1001028 1001033 1001034

Mọi người có thể cho rằng sự khác biệt giữa su - usernamevà đăng nhập bằng SSH là trong trường hợp SSH có mật khẩu có sẵn cho các mô-đun khác nhau sử dụng try_first_pass, nhưng vì chúng tôi thường đăng nhập bằng Kerberos nên không có mật khẩu cho các mô-đun này.

Tôi sẽ cung cấp thêm thông tin (trong lý do) nếu nó sẽ giúp chẩn đoán sự khác biệt này. Cảm ơn trước!

biên tập:

Tôi đã bật gỡ lỗi PAM và pam_groupdường như không kích hoạt su- ngay cả khi tôi vô hiệu hóa pam_rootokvì vậy tôi phải đăng nhập (để đảm bảo rằng nó thực sự đã cố gắng đi qua phần còn lại của ngăn xếp pam). Bất kể nó ở đâu trong ngăn xếp, các vật phẩm khác sẽ bắn (một lần pam_rootokbị vô hiệu hóa, vì trạng thái "đủ" của nó dường như làm chập mạch ngăn xếp).

Ngoài ra, nó chỉ xảy ra với tôi để kiểm tra sudo, và nó dường như có vấn đề gần như tương tự. Root có thể sudotự nó và giữ các nhóm, nhưng sudoing cho người dùng khác chỉ nhận được các nhóm LDAP. /etc/pam.d/sudochỉ bao gồm /etc/pam.d/system-authnhững gì được susử dụng cùng ngăn xếp , do đó không nên gây ngạc nhiên. Tôi cho rằng sudođủ thông minh để không thực sự bỏ quyền / chuyển người dùng nếu người dùng mục tiêu giống với người dùng hiện tại, do đó các nhóm giữ gốc.

Câu trả lời:


1

Tôi giả sử vấn đề của bạn là tệp su-pam và pam_rootokmô-đun.

#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            include         system-auth

Điều sufficientkhoản cắt ngắn quá trình xác thực. Vì vậy, hệ thống-auth không bao giờ được bao gồm, có nghĩa là mô-đun pam_group không bao giờ được kích hoạt cho phiên này.

Sau đó, thở dài tôi đọc bản chỉnh sửa của bạn. Dù sao, nó chắc chắn là một khởi đầu để tìm ra điều này. Có thể bật gỡ lỗi cho pam_group để xem liệu nó có trả về một trong các giá trị lỗi được ghi lại ( man pam_group) không.

Về sudo, thực sự có ý nghĩa rằng sau khi xác thực người dùng thông qua PAM, tất cả thông tin tài khoản sẽ bị loại bỏ / vô hiệu hóa. Nó có cơ chế riêng để thêm người dùng vào nhóm. Hãy thử thêm preserve_groupstùy chọn cho mục sudo có liên quan.

Tất cả điều này làm tôi tự hỏi: Tại sao pam làm cho mô-đun nhóm chỉ liên quan đến auth . Trên thực tế, nó nên là một phần của tài khoản .


0

Các dòng auth chỉ được xem xét khi xử lý mật khẩu, vì vậy được bỏ qua cho su khi bạn root hoặc cho ssh sử dụng khóa chung.

Tôi đã không tìm thấy một cách để làm cho công việc này.

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.