ฉันไม่สามารถเข้าสู่ระบบด้วยรูทด้วยคำสั่ง su แต่ใช้กับ SSH


17

เป็นไปได้อย่างไรที่ฉันไม่สามารถเข้าสู่ระบบในฐานะ root โดยsu rootหรือsu(ฉันได้รับข้อผิดพลาดรหัสผ่านไม่ถูกต้อง) แต่ฉันสามารถเข้าสู่ระบบด้วยssh root@localhostหรือssh root@my_local_IPด้วยรหัสผ่านเดียวกันได้หรือไม่

ฉันใช้ CentOS 6.4


อัปเดต 1 :

cat /etc/pam.d/su

ให้:

#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

อัปเดต 2 :

$ sudo grep su /var/log/secure | grep -v sudo

ให้:

Feb 23 13:12:17 fallah su: pam_unix(su:auth): authentication failure;
logname=fallah uid=501 euid=501 tty=pts/0 ruser=fallah rhost=  user=root

ทำซ้ำประมาณ 20 ครั้ง


1
ลองล้างไฟล์/etc/securetty( cp /etc/securetty{,.old}; : > /etc/securetty) /etc/pam.d/suหากยังไม่ได้ผลให้เนื้อหาของ
Patrick

2
แน่นอนว่าssh 192.168.1.218คุณเพียงแค่ลงชื่อเข้าใช้ด้วยตัวเอง? เพื่อเข้าสู่ระบบเป็นรากผ่านsshจะต้องได้ตามปกติหรือssh root@192.168.1.218 ssh root@localhost
แกรม

1
รับ PID (12345) จากเชลล์ของคุณ ( echo $$) เปิด (เช่นผ่านssh) รูทเชลล์ (จำเป็นสำหรับการติดตาม SUID ไบนารี) และเริ่มstraceเชลล์นั้น: strace -o su.strace -p 12345 -fและมองหาข้อผิดพลาดแปลก ๆ ก่อนเกิดข้อผิดพลาด หรือคัดลอก 30 บรรทัดสุดท้ายก่อนข้อความแสดงข้อผิดพลาดลงในคำถามของคุณหากคุณไม่คุ้นเคยกับผลลัพธ์ประเภทนั้น
Hauke ​​Laging

1
@HaukeLaging กล่าวว่าProcess 11736 attached - interrupt to quit
Alireza Fallah

2
ตกลงนั่นคือเหตุผลที่มันไม่ทำงาน / bin / su ต้องเปิดบิต setuid เพื่อที่เมื่อผู้ใช้ธรรมดา (ที่ไม่ใช่รูท) ใช้มันจะสามารถเข้าถึงรายการรหัสผ่านใน / etc / shadow พิมพ์เป็น root chmod 4755 /bin/suเพื่อแก้ไขปัญหานี้
Mark Plotnick

คำตอบ:


23

ในความคิดเห็นของคุณคุณกล่าวว่า/bin/suมีโหมด / เจ้าของต่อไปนี้:

-rwxrwxrwx. 1 root root 30092 Jun 22 2012 /bin/su

มีสองปัญหาที่นี่

  • จำเป็นต้องเปิดบิต set-uid เพื่อให้สามารถทำงานได้โดยมีสิทธิ์การใช้งานไม่เช่นนั้นเมื่อผู้ใช้ทั่วไป (ที่ไม่ใช่รูท) ใช้งานจะไม่สามารถเข้าถึงข้อมูลรหัสผ่านได้/etc/shadowหรือไม่สามารถตั้งค่า userid เป็นผู้ใช้ใหม่ที่ต้องการ

  • มันควรจะมีบิตgroupและotherเขียนปิดเพื่อให้ผู้ใช้รายอื่นไม่สามารถแก้ไขได้

ในการแก้ไขปัญหานี้ให้ลงชื่อเข้าใช้ด้วยroot- คุณบอกว่าคุณสามารถทำได้ด้วยssh- และพิมพ์

chmod 4755 /bin/su

หรืออีกวิธีหนึ่งคือ

chmod u+s,g-w,o-w /bin/su

( เอกสารมาตรฐานสำหรับ chmodจะมีรายละเอียดเพิ่มเติมเกี่ยวกับประเภทของอาร์กิวเมนต์ที่ต้องใช้) สิ่งนี้จะคืนค่าบิตโหมดให้เป็นแบบเดิมเมื่อติดตั้งระบบปฏิบัติการเป็นครั้งแรก เมื่อคุณแสดงรายการไฟล์นี้มันควรจะมีลักษณะดังนี้:

-rwsr-xr-x. 1 root root 30092 Jun 22 2012 /bin/su

ดังที่ @ G-Man บันทึกไว้ไฟล์ที่เป็นโหมด 777 อาจถูกเขียนทับโดยผู้ใช้ที่ไม่น่าเชื่อถือและหากเป็นเช่นนั้นคุณอาจต้องการติดตั้งใหม่จากสื่อที่ใช้ในการกระจายหรือสำรองข้อมูล


1
ฉันมักจะชอบ: chmod 755 /bin/suสิ่งที่พิเศษ4สำหรับ?
Alireza Fallah

4ในตำแหน่งแรกหมายถึงได้รับอนุญาตตั้ง UID ฉันได้แก้ไขคำตอบของฉันเพื่อเพิ่มวิธีอื่นในการใช้ chmod โดยใช้ชื่อสัญลักษณ์สำหรับบิตสิทธิ์ หวังว่าจะมีความชัดเจนมากขึ้น
Mark Plotnick

ขอบคุณมาก ๆ. ตอนนี้ฉันคิดว่าฉันดำเนินการchmod -R 777 /binโดยไม่ได้ตั้งใจและนั่นคือเหตุผลที่ฉันถูกสาป: D
Alireza Fallah

ฉันยังถาม คำถามอีกข้อคุณจะโปรดดูบางทีคุณอาจรู้คำตอบ
Alireza Fallah

cyberciti.biz/tips/…อธิบายถึงวิธีใช้rpmในการคืนค่าการอนุญาตของไฟล์ แต่ฉันยังไม่ได้ลอง
Mark Plotnick

10

1. กลุ่มล้อ?

นี่อาจเป็นเพราะ useid ของคุณไม่ได้อยู่ในwheelกลุ่ม บน Red Hat distros คุณสามารถไม่อนุญาตผู้ใช้ที่ไม่ได้อยู่ในกลุ่มนี้จากการเรียกใช้suคำสั่งอย่างชัดเจน

นี่คือการsuกำหนดค่า PAM ที่มีลักษณะตามค่าเริ่มต้น:

$ more /etc/pam.d/su
#%PAM-1.0
auth        sufficient  pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient  pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth       required    pam_wheel.so use_uid
auth        include     system-auth
account     sufficient  pam_succeed_if.so uid = 0 use_uid quiet
account     include     system-auth
password    include     system-auth
session     include     system-auth
session     optional    pam_xauth.so

บรรทัดนี้สามารถ จำกัด การเข้าถึงsuคำสั่งให้กับผู้ใช้ในwheelกลุ่ม:

auth        required    pam_wheel.so use_uid

จากเสียงของมันมันถูกเปิดใช้งานและหมายเลขผู้ใช้ของคุณไม่ได้รับอนุญาตให้ใช้งานsuคำสั่ง

SSH ทำงานได้เนื่องจากผ่านกลไก PAM ที่แตกต่างกัน SSH ยังมีสิ่งอำนวยความสะดวกสำหรับการ จำกัด การเข้าสู่ระบบด้วยเช่นกัน โดยทั่วไปการเข้าสู่ระบบรูทจะได้รับอนุญาตตามค่าเริ่มต้นอย่างน้อยที่สุดใน Red Hat distros ส่วนใหญ่:

$ sudo grep PermitRoot /etc/ssh/sshd_config 
#PermitRootLogin yes
# the setting of "PermitRootLogin without-password".

แม้ว่าความเห็นด้านบนจะแสดงความคิดเห็น แต่เป็นค่าเริ่มต้นและเป็นวิธีที่ OpenSSH แสดงให้เห็นว่าเป็นการตั้งค่าเริ่มต้นในการกำหนดค่า

ทำงานกับสิ่งนี้หรือไม่

หากระบบของคุณมีการกำหนดค่าเช่นนี้คุณสามารถเพิ่มชื่อผู้ใช้ของคุณไปยังwheelกลุ่ม

$ useradd -G wheel saml

หลังจากออกจากระบบและกลับเข้ามาใหม่:

$ groups
saml wheel

หมายเหตุ:หมายเลขผู้ใช้ของฉันคือ "saml" ด้านบน

2. สิทธิ์ในการ su?

ตรวจสอบว่าไฟล์ที่รันได้นั้นเป็นของ root

$ type -a su
su is /usr/bin/su
su is /bin/su

$ ls -l /usr/bin/su /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /bin/su
-rwsr-xr-x. 1 root root 32064 Jan 13 06:31 /usr/bin/su

นอกจากนี้ยังยืนยันว่าไฟล์ปฏิบัติการsเปิดใช้งานบิตของมัน สิ่งนี้ทำให้พวกเขาตั้งค่าดังนั้นเมื่อพวกเขาถูกดำเนินการพวกเขาจะทำงานเป็นของตัวเองรูท

3. บันทึกพูดอะไร

เมื่อคุณพยายามทำsu -คำสั่งคุณควรเห็นรายการ/var/log/secureเกี่ยวกับความพยายาม

$ sudo grep su /var/log/secure | grep -v sudo
Feb 23 23:31:26 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=0)
Feb 24 00:27:32 greeneggs su: pam_unix(su-l:session): session closed for user root
Feb 24 01:34:12 greeneggs su: pam_unix(su-l:session): session opened for user root by saml(uid=1000)
Feb 24 01:34:26 greeneggs su: pam_unix(su-l:session): session closed for user root

ศึกษาบันทึกนี้เพื่อดูว่าคุณได้รับข้อมูลเพิ่มเติมใด ๆ

4. คุณแน่ใจหรือว่ารหัสผ่านไม่ใช่ปัญหา?

เมื่อฉันพยายามที่จะเข้าสู่ระบบโดยใช้su -ฉันได้รับต่อไปนี้เมื่อฉันให้รหัสผ่านไม่ถูกต้อง:

$ su -
Password: 
su: Authentication failure
$

ฉันลองสร้างบัญชีอื่นและดูว่าบัญชีรองนี้สามารถทำงานได้su -สำเร็จหรือไม่


ขอขอบคุณจากคำตอบของคุณที่ดีสิ่งที่ฉันพยายามหลังจากที่ได้อ่านคำตอบของคุณ: usermod -a -G wheel my_usernameและผลจากการมีgroups fallah wheelดังนั้นผลลัพธ์ของcat /etc/pam.d/suคำถามนี้ก็คือในตอนนี้และอีกครั้งฉันไม่สามารถเข้าสู่ระบบโดยใช้คำสั่ง su โดย !!!
Alireza Fallah

นี่คือบรรทัดสุดท้ายของ/var/log/secure:Feb 24 10:19:45 fallah su: pam_unix(su:auth): authentication failure; logname=fallah uid=501 euid=501 tty=pts/2 ruser=fallah rhost= user=root
Alireza Fallah

และบรรทัดนี้จะถูกทำซ้ำประมาณ 20 ครั้งใน/var/log/secure
Alireza Fallah

4: แต่เมื่อฉันลอง: su: incorrect password - และรหัสผ่านนั้นถูกต้องเพราะฉันสามารถเข้าสู่ระบบด้วยรหัสผ่านเดียวกันใน SSH
Alireza Fallah

ฉันยังพยายามที่จะเข้าสู่ระบบด้วยบัญชีอื่นเช่นsu alirezaและอีกครั้งปัญหาเดียวกัน
Alireza Fallah

0

หากคุณได้รับข้อความแสดงข้อผิดพลาดเช่นนี้

su: PAM adding faulty module: /lib64/security/pam_tally.so
su: PAM unable to dlopen(/lib64/security/pam_tally.so): /lib64/security/pam_tally.so: cannot open shared object file: No such file or directory

ทำตามขั้นตอนนี้:

ln -s /lib64/security/pam_tally2.so /lib64/security/pam_tally.so

จากนั้นลอง su มันควรจะทำงาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.