Tôi gặp khó khăn trong việc xác định lý do tại sao su
khô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_group
không thêm các /etc/security/group.conf
nhó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.d
theo 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
và /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-auth
và password-auth
tươ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 - username
vớ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 - username
kết quả khiến bạn mất các nhóm đó, vì su
bắ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 - bob
bạ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 - username
và đă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_group
dường như không kích hoạt su
- ngay cả khi tôi vô hiệu hóa pam_rootok
vì 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_rootok
bị 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ể sudo
tự nó và giữ các nhóm, nhưng sudo
ing cho người dùng khác chỉ nhận được các nhóm LDAP. /etc/pam.d/sudo
chỉ bao gồm /etc/pam.d/system-auth
những gì được su
sử 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.