ล็อกอินเป็นผู้ใช้ที่ไม่ใช่รูทในเทอร์มินัล


18

นี่เป็นคำถามที่ฉันคาดว่าจะได้รับคำตอบจาก google อย่างรวดเร็ว อย่างไรก็ตาม Google ก็ทำให้ฉันล้มเหลว สมมติว่าฉันเข้าสู่เซสชันเทอร์มินัลและฉันต้องการทำงานชั่วคราวในฐานะผู้ใช้ที่ไม่ใช่รูทคนอื่นซึ่งมีรหัสผ่านที่ฉันรู้จักโดยไม่ต้องออกจากเซสชันของฉัน เมื่อเข้าสู่ระบบในฐานะผู้ใช้รายนี้ฉันต้องการไดเรกทอรีบ้าน ฯลฯ สำหรับผู้ใช้รายนี้ตั้งค่าอย่างถูกต้องจนกว่าฉันจะออกจากระบบ ฉันจะทำอย่างไร

ฉันเหนื่อย

su -- username

จากนั้นป้อนรหัสผ่านมันไม่ได้เกิดข้อผิดพลาด แต่ฉันไม่เห็นการเปลี่ยนแปลงของพรอมต์คำสั่งที่มองเห็นได้ แต่ยังคงบอกว่า myname @ myhost โฮมไดเร็กตอรี่นั้นเป็นของชื่อฉันและไม่ใช่ชื่อล็อกอินใหม่ที่ฉันพยายามจะล็อกอินด้วย

ฉัน - ตามที่เห็นได้ชัดตอนนี้ - ค่อนข้างไม่มีประสบการณ์ใน linux / Ubuntu ดังนั้นข้อมูลใด ๆ ก็ยินดีต้อนรับ

คำตอบ:


18

คุณต้องการเปลี่ยนเป็นผู้ใช้ใด

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

คุณสามารถตรวจสอบว่าผู้ใช้มีเชลล์ที่กำหนดโดยดูใน/etc/passwdไฟล์แค่ดูที่ส่วนท้ายของบรรทัดของผู้ใช้แต่ละคนหรือไม่ถ้ามันบอกว่า/bin/falseมันหมายความว่าไม่มีเชลล์ที่กำหนดไว้หากมีอะไรที่คล้าย/bin/bashๆ เชลล์จากนั้นคุณควรจะสามารถ "su" ลงในผู้ใช้รายนั้น

เมื่อฉันพูดว่า "เปลือกที่ได้รับมอบหมาย" มันก็หมายความว่ามันมี "การเข้าถึงเปลือก"

อย่างไรก็ตามหากผู้ใช้ไม่มีสิทธิ์เข้าถึงเชลล์คุณสามารถเรียกใช้คำสั่งในฐานะผู้ใช้นั้นได้ตลอดเวลา

 sudo -u user command

ยังหากผู้ใช้ไม่สามารถเข้าถึงเชลล์คุณสามารถดำเนินการคำสั่งในฐานะผู้ใช้นั้นด้วย "sudo -u user command"
Sam

ผนวกคำสั่ง-s /bin/bashของคุณsuหรือใช้chsh -u username -s /bin/bashเพื่อเปลี่ยนเปลือกสำหรับผู้ใช้ ระวังความปลอดภัยที่อาจเกิดขึ้น
gertvdijk

6

หากคุณมีสิทธิ์เข้าถึง sudo ฉันจะแนะนำ

sudo su username -

มันทำสิ่งเดียวกัน แต่คุณต้องรู้รหัสผ่านของคุณไม่ใช่ผู้ใช้รายอื่น

อย่างไรก็ตามหากคุณมีรหัสผ่านผู้ใช้รายอื่น:

su username - ควรทำงานได้ดี

สังเกตเห็นว่า 1 - และมันเป็นที่สิ้นสุด


อย่างใดทั้งสองวิธีที่คุณอธิบายทำงานเหมือนฉัน - คำสั่งได้รับการยอมรับโดยไม่มีข้อผิดพลาด แต่ไดเรกทอรีบ้านไม่ถูกต้องและแจ้งให้บอกว่าฉันยังคงเป็นผู้ใช้เดิม หากฉันออกจากระบบหลังจากที่ฉันออกจากระบบอย่างสมบูรณ์
Andrew Savinykh

ตกลงเป็นผู้ใช้ของคุณเข้าสู่ระบบตามที่ได้รับอนุญาตให้เข้าสู่ระบบ? คุณสามารถบล็อกบัญชีจากการเข้าสู่ระบบโดยการตั้งค่าเปลือกของพวกเขาเป็น "จริง" และที่จะทำตามที่คุณอธิบาย สิ่งนี้เคยถูกใช้งานมากในบัญชี "ระบบ" เช่น "apache" และ "ftp" ในการตรวจสอบsudo cat /etc/passwdอย่าวางเนื้อหาที่นี่ เพียงแค่ลูกตามันและตรวจสอบให้แน่ใจว่าผู้ใช้มีเปลือกจริงเป็นบรรทัดสุดท้ายของพวกเขา
coteyr

1
วิธีที่เหมาะสมกว่าในการทำเช่นนี้คือการตั้งค่าเชลล์เป็น "false" ซึ่งจะทำให้เกิดข้อผิดพลาด แม้ว่าบางระบบและบัญชีจะยังคงใช้งานจริงสำหรับเหตุผลด้านเทคนิคหรือความปลอดภัยของ psudo (เพื่อทำให้เลว
ทรามมากขึ้นจากผู้ที่ตกเป็นเหยื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.