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/suvà /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-authvà password-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.