เหตุใดฉันจึงเรียกใช้ 'su` ไม่ได้ (และฉันควรทำอย่างไร)


33

เมื่อใดก็ตามที่ฉันพยายามที่จะออกsuฉันได้รับนี้:

$ su  
Password:  
su: Sorry

ไม่จำเป็นต้องบอกว่าฉันป้อนรหัสผ่านผู้ดูแลระบบที่ถูกต้องซึ่งใช้งานsudoได้ สิ่งที่ฉันต้องการไม่จำเป็นต้องใส่sudoในแต่ละครั้ง

คำตอบ:


34

ใน MacOS X ผู้ใช้รูทจะถูกปิดใช้งานตามค่าเริ่มต้นดังนั้นsuจะไม่ทำงาน ขณะที่คนอื่น ๆ sudoได้กล่าวว่ามันเป็นที่ดีที่สุดในการใช้งาน

หากคุณต้องเปิดการใช้งานผู้ใช้รากดูที่ technote แอปเปิ้ล: เปิดใช้งานและใช้ "ราก" ของผู้ใช้ใน Mac OS X


13
sudo suยังคงใช้งานได้ดังนั้นจึงไม่ได้ปิดใช้งานจริงๆ มันไม่มีรหัสผ่าน
ชื่อปลอม

@FakeName นี่คือแบ็คดอร์ที่เฮฮาที่สุด! หากคุณสามารถวิ่งsudo suได้อะไรคือสิ่งที่โลกกำลังปิดการใช้งานsu?
Kolob Canyon

3
@KolobCanyon - จุดไม่ได้จริงๆที่จะ "ปิดsu" ก็เพื่อป้องกันไม่ให้เข้าสู่ระบบราก เมื่อไม่อนุญาตให้ลงชื่อเข้าใช้rootคุณจะป้องกันปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นได้ ไม่อนุญาตให้คนที่สามารถsudoจะsuเป็นชนิดของโง่ โดยทั่วไปsuเพียงแค่เปลี่ยน user-id ปัจจุบันและดำเนินการคำสั่ง (เชลล์ถ้าไม่ได้ระบุ) หากรหัสผู้ใช้เป็น 0 (รูท) แล้วเช่นเมื่อดำเนินการกับsudoไม่มีสิ่งใดที่ต้องทำดังนั้นมันจะดำเนินการเชลล์ sudo bashคุณจะได้รับผลที่คล้ายกันด้วยการทำ
ชื่อปลอม

1
@FakeName ยังคงสับสน อะไรคือความแตกต่างระหว่างการเข้าสู่ระบบในฐานะ root และใช้งาน 'sudo su' มันไม่ได้มีประสิทธิภาพในระดับเดียวกันหรือไม่
Kolob Canyon

2
@KolobCanyon - ไม่ โดยทั่วไปหากคุณปิดใช้งานการเข้าสู่ระบบก็หมายความว่าหากมีช่องโหว่ในกระบวนการเข้าสู่ระบบแฮ็กเกอร์ไม่สามารถใช้งานเพื่อรับรูทได้โดยตรง โดยพื้นฐานแล้วมันจะย้ายการประนีประนอมรากที่ต้องการจาก "การประนีประนอมการเข้าสู่ระบบ" ไปยัง "การเข้าสู่ระบบประกอบด้วยบัญชีผู้ใช้ + สิทธิ์" มันทำโดยทั่วไปเป็นสิ่งที่ป้องกันในเชิงลึก
ชื่อปลอม

14

คุณมีสองตัวเลือก สิ่งแรกคือการใช้sudo -s- สิ่งนี้จะช่วยให้คุณเข้าถึง superuser ได้ แต่คุณจะยังคง 'ตัวคุณเอง' (ดังนั้นพูด) ดังนั้นสิ่งต่าง ๆ เช่น~นี้จะยังคงเป็นไดเรกทอรีบ้านของคุณ หรือคุณสามารถใช้sudo suซึ่งจะให้เชลล์แก่คุณในฐานะผู้ใช้รูทที่แท้จริงของ Mac ของคุณ


5
Apple Way (tm) คือการใช้sudoเพื่อเรียกใช้คำสั่งที่ต้องการสิทธิ์ในการยกระดับไม่ต้องเปลี่ยนเป็นรูทเชลล์และทำงานจากนั้น
Ian C.

3
@Ian C. - ไม่, นั่นคือวิธีที่ใช้ระบบปฏิบัติการยูนิกซ์ Apple ใช้เพียงเพราะมันเป็น * nix เช่นกัน
ชื่อปลอม

@ ชื่อปลอม: แอปเปิ้ลผ่านความเจ็บปวดที่ยอดเยี่ยมที่จะไม่พูดคุยหรือเปิดเผยเปลือกหอยให้กับผู้ใช้ คุณสามารถพูดได้ว่าพวกเขานำsudoจรรยาบรรณมาสู่สุดขั้ว แต่อะไรก็ตาม: ความหมาย อย่าใช้รูทเชลล์ใน OS X
Ian C.

1
@Ian C - Apple ไม่ได้ทำอะไรมากไปกว่าที่นักออกแบบ * ระวัง แต่ Apple ก็ไม่ได้พูดถึงมันมากนัก ในทั้งสองกรณีมันอยู่ที่นั่นด้วยสิ่งต่างๆเช่นลินุกซ์เท่านั้นพวกเขาบอกวิธีใช้งานได้ง่าย หากสิ่งนั้นทำให้มีการใช้อย่างแพร่หลายมากขึ้นก็ไม่ได้บ่งบอกถึงความแตกต่างของสถาปัตยกรรมพื้นฐาน
ชื่อปลอม

1

ตัวอย่างเช่นหากคุณต้องการย้ายไฟล์หรือใช้ git โดยใช้ CLI ในกรณีนั้นทางออกที่ดีที่สุดคือการใช้sudo -sคำสั่ง หลังจากคำสั่งนั้นคุณไม่จำเป็นต้องป้อนรหัสผ่านซ้ำแล้วซ้ำอีก


1

ฉันคิดว่าคุณไม่สามารถทำสิ่งนี้ในฐานะผู้ใช้ "ปกติ" ...

หากมีบัญชีผู้ใช้อื่นที่มีสิทธิ์ผู้ดูแลระบบคุณต้องใช้บัญชีนี้

restricted user$ su
Password:(the root password here)
Sorry!

restricted user$ su - (an admin account here)
password:(the admin account password)
$ su - root
Password:(The root password here)
# -> You are root user now

1

โซลูชั่นที่ทันสมัย: sudo -u

sudo -uเมื่อต้องการเรียกใช้กับการใช้งานอื่นใช้

ตัวอย่างเช่นเมื่อต้องการรันtext-editorเช่นnano :

sudo -u someuser nano

…และป้อนรหัสผ่านผู้ใช้ Mac admin ของคุณเมื่อได้รับแจ้ง ในช่วงหัวเลี้ยวหัวต่อนี้มันเป็นผู้ใช้ผู้ดูแลระบบ Mac ของคุณที่มีการเรียกใช้sudoไม่ใช่someuserผู้ใช้ดังนั้นคุณไม่ต้องป้อนsomeuserรหัสผ่าน

  • sudo หมายถึงการทำงานบางอย่างโดยใช้สิทธิ์ superuser
  • -u หมายถึง“ เรียกใช้คำสั่งที่ระบุเป็นผู้ใช้ที่ระบุนี้”
  • someuser ควรแทนที่ด้วยชื่อผู้ใช้ที่คุณต้องการ

-Iเพื่อจำลองการเข้าสู่ระบบเริ่มต้นเป็นผู้ใช้โดยเฉพาะอย่างยิ่งรวมถึงการทำงานสคริปต์เริ่มต้นของพวกเขาใช้

sudo -u someuser -i nano

สิ่งนี้จะเรียกใช้nanoแอปในฐานะผู้ใช้someuserแต่หลังจากรันสคริปต์เริ่มต้นสำหรับผู้ใช้นั้นแล้วเท่านั้น

หากเราเลือกที่จะไม่ระบุคำสั่งหรือแอพที่จะเรียกใช้เราจะได้รับเชลล์แบบโต้ตอบที่ทำงานเป็นผู้ใช้

sudo -u someuser -i

โรงเรียนเก่า: sudo su someuser

อีกวิธีหนึ่งที่ใช้คำสั่งในการทำงานร่วมกับsu คำสั่งหมายถึง“ผู้ใช้สวิทช์”sudosu

sudo su someuser

หรือเมื่อต้องการรวมการเรียกใช้สคริปต์เริ่มต้นของผู้ใช้เพิ่มยัติภังค์

sudo su - someuser

root ผู้ใช้งาน

rootผู้ใช้ในระบบปฏิบัติการ Unix ที่เกี่ยวข้องกับการมีอำนาจที่จะทำอะไร

Apple ได้เลือกที่จะปิดการใช้งานrootบัญชีใน macOS เพื่อหลีกเลี่ยงช่องโหว่ด้านความปลอดภัยและเพื่อป้องกันคุณจากการถูกยิง แอปเปิ้ลได้สร้างความคิดของผู้ดูแลระบบบัญชีผู้ใช้ที่มีอำนาจหลายอำนาจมากขึ้นกว่ามาตรฐานบัญชีผู้ใช้ แต่ไม่ได้อำนาจเหมือนrootมี ดูบันทึกย่อฝ่ายสนับสนุนของ Appleเพื่อการสนทนา

หากจำเป็นคุณสามารถเปิดrootใช้งานผู้ใช้ใน macOS แล้วสลับไปใช้ผู้ใช้นั้น สิ่งนี้เป็นกำลังใจอย่างยิ่ง ฉันจะลงไปสู่เส้นทางนี้เป็นทางเลือกสุดท้ายเท่านั้น


สำหรับการอภิปรายเรื่องนี้ในบริบทของpostgresผู้ใช้เรียกใช้Postgresระบบฐานข้อมูลบน MacOS ดูคำถามนี้บนเว็บไซต์น้องสาว, DBA Stack แลกเปลี่ยน

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