อนุญาตให้ sudo กับผู้ใช้รายอื่นโดยไม่มีรหัสผ่าน


46

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

ตัวอย่างเช่น:

หากการเข้าสู่ระบบของฉันคือ user1 และผู้ใช้ที่ฉันต้องการ 'su' ถึงคือ user2:

ฉันจะใช้คำสั่ง:

su - user2

แต่จากนั้นมันก็เตือนฉันด้วย

Password:


ขอรหัสผ่านจากผู้ใช้รายอื่น อย่างน้อยผู้ใช้รายอื่นก็รู้ว่ามีอะไรที่กระทำภายใต้ / id ของตน
เร่ร่อนระดับโลก

1
สิ่งนี้ไม่เกี่ยวกับผู้ใช้ทางกายภาพรายอื่น ID ทั้งสองเป็นของฉัน ฉันรู้รหัสผ่านเมื่อฉันสร้างบัญชี ฉันไม่ต้องการพิมพ์รหัสผ่านทุกครั้ง
zio

มันจะโอเคกับผู้ใช้หรือคุณต้องการรับเชลล์หนึ่งอันโดยเฉพาะและต้องการให้ su ทำงานได้หรือไม่?
bmike

1
@zio กรณีการใช้งานที่ยอดเยี่ยม ไม่open -na Skypeได้ผลสำหรับคุณ?
bmike

1
นอกจากนี้คุณยังสามารถลองคัดลอกกำปพลิเคชันและการเปลี่ยนแปลง CFBundleIdentifier
Lri

คำตอบ:


66

sudo สามารถทำเพื่อคุณ :)

ต้องมีการกำหนดค่าเล็กน้อย แต่เมื่อเสร็จแล้วคุณจะทำสิ่งนี้เท่านั้น:

sudo -u user2 -s

และคุณจะเข้าสู่ระบบในฐานะผู้ใช้ 2 โดยไม่ต้องป้อนรหัสผ่าน

องค์ประกอบ

ในการกำหนดค่า sudo visudoคุณต้องแก้ไขไฟล์การกำหนดค่าผ่าน: หมายเหตุ: คำสั่งนี้จะเปิดการกำหนดค่าโดยใช้viเท็กซ์เอดิเตอร์หากคุณไม่สบายใจกับสิ่งนั้นคุณต้องตั้งค่าตัวแก้ไขอื่น (โดยใช้export EDITOR=<command>) ก่อนที่จะดำเนินการตามบรรทัดต่อไปนี้ แก้ไขบรรทัดคำสั่งอีกบางครั้งการยกย่องให้เป็นง่ายขึ้นดังนั้นคุณจะทำอย่างไรnano export EDITOR=/usr/bin/nanoโดยปกติคุณต้องมีสิทธิ์ผู้ใช้ขั้นสูงสำหรับvisudo:

sudo visudo

ไฟล์นี้มีโครงสร้างในส่วนต่าง ๆ นามแฝงจากนั้นเริ่มต้นและท้ายที่สุดคุณก็จะมีกฎ นี่คือที่ที่คุณต้องการเพิ่มบรรทัดใหม่ ดังนั้นคุณนำทางในตอนท้ายของไฟล์และเพิ่มนี้:

user1    ALL=(user2) NOPASSWD: /bin/bash

คุณสามารถแทนที่ยัง/bin/bashโดยALLและจากนั้นคุณสามารถเปิดคำสั่งใด ๆ ที่เป็น user2 sudo -u user2 <command>โดยรหัสผ่าน:

หากคุณต้องการที่จะเปลี่ยนไปใช้ผู้ใช้เพียงแค่ใช้

user1    ALL=(ALL) NOPASSWD: /bin/bash

ปรับปรุง

ฉันเพิ่งเห็นความคิดเห็นของคุณเกี่ยวกับ Skype คุณสามารถพิจารณาเพิ่ม Skype โดยตรงไปยังไฟล์การกำหนดค่าของ sudo ฉันถือว่าคุณติดตั้ง Skype ในโฟลเดอร์แอปพลิเคชันของคุณ:

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

จากนั้นคุณจะโทรจากสถานี:

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

สิ่งนี้มีความซับซ้อนน้อยกว่าความคิดของปุ่ม ssh ดังนั้นให้ใช้สิ่งนี้เว้นแต่ว่าคุณต้องการปุ่ม ssh สำหรับการเข้าถึงระยะไกลเช่นกัน
bmike

2
สิ่งหนึ่งที่ควรทราบจากมุมมองด้านความปลอดภัยคือการระบุคำสั่งเฉพาะหมายความว่าควรเป็นคำสั่งแบบอ่านอย่างเดียวสำหรับ user1; มิฉะนั้นพวกเขาสามารถเขียนทับคำสั่งด้วยสิ่งอื่นและเรียกใช้ในฐานะผู้ใช้ 2 และหากคุณไม่สนใจสิ่งนั้นคุณอาจระบุว่า user1 สามารถเรียกใช้คำสั่งใด ๆในฐานะ user2 ดังนั้นจึงมีการกำหนดค่า sudo ที่ง่ายขึ้น
Stan Kurdziel

@StanKurdziel เป็นจุดที่ดี! แม้ว่ามันจะเป็นสิ่งที่ต้องระวัง แต่ก็ไม่ค่อยจะมีระบบปฏิบัติการที่ผู้ใช้สามารถเขียนได้เว้นแต่คุณจะรูท แต่ในกรณีนี้คุณไม่จำเป็นต้องใช้ sudo ;-) แต่คุณมีสิทธิ์ที่จะเพิ่มความคิดเห็นนี้เพราะมันไม่ค่อย ว่าฉันอาจจะมองข้ามมากกว่าหนึ่งครั้ง
Huygens

เพื่อให้ใกล้เคียงกับพฤติกรรมsu - user2แทนที่จะsu user2เป็นคำสั่งทั้งหมดควรเกี่ยวข้องsudo -u user2 -iเพื่อจำลองการเข้าสู่ระบบเริ่มต้นในฐานะผู้ใช้ 2
Gert van den Berg

4

ฉันจะตั้งค่าคีย์สาธารณะ / ส่วนตัว ssh สำหรับบัญชีที่สองและเก็บรหัสในบัญชีแรก

จากนั้นคุณสามารถเรียกใช้คำสั่งเช่น:

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

คุณยังคงมีปัญหาที่ Skype สับสนเนื่องจากสองอินสแตนซ์กำลังทำงานอยู่ในบัญชีผู้ใช้เดียวและไฟล์ที่โปรแกรมอ่าน / เขียนโดยอาจขัดแย้งกัน มันอาจทำงานได้ดีพอสำหรับความต้องการของคุณและคุณไม่จำเป็นต้องมี iPod touch ในการใช้งานอินสแตนซ์ Skype เครื่องที่สองของคุณ


1
นี่เป็นโซลูชันที่ปลอดภัยที่ดีสำหรับกรณีทั่วไปของการเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่านกับบัญชีใด ๆ ในโฮสต์ใด ๆ แต่ฉันว่ามันอาจเกินความเป็นจริงเมื่อทั้งสองบัญชีอยู่ในโฮสต์เดียวกันและเป็นของผู้ใช้เดียวกัน
calum_b

@scottishwildcat มีความปลอดภัยมากกว่าทางเลือกในการเขียนสคริปต์รหัสผ่านและป้อนเป็นข้อความที่ชัดเจนหรือใช้ตัวแปรและเก็บรหัสผ่านในพวงกุญแจและใช้เครื่องมือเช่นexpectสคริปต์โต้ตอบ ฉันแค่ใช้sudo su - blahและพิมพ์รหัสผ่านของฉัน ฉันคิดว่าคำตอบอื่น ๆ ครอบคลุม sudo ดีพอที่จะเก็บไว้เป็นความคิดเห็น
bmike

โอ้ฉันไม่ได้แนะนำให้ลบคำตอบของคุณอย่างแน่นอน ... ฉันไม่ได้ลงคะแนนเลยมันเป็นคำตอบที่ดีมาก
calum_b

เราดูเหมือนจะอยู่ในข้อตกลงทั้งหมด - ขอบคุณสำหรับการเพิ่ม - อย่าลังเลที่จะแก้ไขมันเป็นคำตอบหากคุณสามารถปรับปรุงได้
bmike

โซลูชันที่ได้รับการยอมรับ ( sudo -u user2 <...>) มีข้อได้เปรียบที่ไม่สามารถใช้งานจากระยะไกลได้ซึ่งอาจช่วยรักษาความปลอดภัย - ไม่มีรหัสส่วนตัวสำหรับ user1 ที่สามารถขโมยได้
Gert van den Berg
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.