คำตอบนี้ควรจะช่วยคุณได้แม้จะคำนึงถึงการแก้ไขคำถามด้วย โดยเฉพาะอย่างยิ่งบัญชีที่สร้างโดย
--disabled-loginไม่มีการตั้งรหัสผ่านและไม่มีวิธีการอื่นในการเข้าสู่ระบบแต่ควรจะสามารถใช้sudo(อธิบายด้านล่าง) เพื่อเรียกใช้คำสั่งหรือเชลล์ในฐานะผู้ใช้ ในความเป็นจริงนี่คือวิธีการ
rootตั้งค่าบัญชีใน Ubuntu
มีปัญหาหลาย ๆ su - irssiที่มีคำสั่งที่มี
คำสั่งนี้จะพยายามที่จะเริ่มต้นเปลือกเป็นเจ้าของโดยผู้ใช้ที่ชื่อirssi
มันจะล้มเหลวถ้า:
- ไม่มี
irssiผู้ใช้
irssiบัญชีของผู้ใช้ถูกปิดใช้งาน
irssiบัญชีของผู้ใช้ถูกปิดใช้งานสำหรับการเข้าสู่ระบบแบบโต้ตอบ บางครั้งบัญชีได้รับอนุญาตให้ใช้บริการเช่น FTP /bin/falseแต่ห้ามไม่ให้เข้าสู่ระบบตามปกติโดยการตั้งค่าเปลือกของพวกเขากับสิ่งที่ลาออกทันทีเช่น จากนั้นเข้าสู่ระบบจะสิ้นสุดลงทันทีโดยไม่มีข้อความ
- รหัสผ่านที่คุณป้อนไม่ถูกต้องสำหรับ
irssiผู้ใช้
การ-ตั้งค่าสถานะทำให้เชลล์ทำการจำลองเชลล์ล็อกอินเริ่มต้นนั่นคือดังนั้นจึงเหมือนกับการเข้าสู่ระบบเป็นirssiอย่างมาก หากไม่มี-แฟล็กหากsuคำสั่งประสบความสำเร็จคุณจะยังคงได้รับเชลล์เป็นเจ้าของirssiแต่ตัวแปรสภาพแวดล้อมเช่นHOMEนั้นจะไม่เปลี่ยนแปลง
หากคุณต้องการเรียกใช้โปรแกรมที่เรียกว่า irssiคุณต้องเรียกใช้suแตกต่างกัน:
su username - -c irssi
หากคุณออกไปมันก็เหมือนกับ - มันพยายามที่จะเรียกใช้คำสั่งเป็นรูต-c username-c root
หรือคุณสามารถเริ่มเชลล์แล้วเรียกใช้คำสั่ง :
- เริ่มต้นเปลือกด้วย
su username -
- ในเชลล์ให้รันคำสั่ง (
irssi)
exitถ้าคุณทำเสร็จแล้วออกจากเปลือกโดยการเรียกใช้
กำลังเรียกใช้คำสั่งเป็น root
หากคุณต้องการที่จะทำงานirssiเป็นroot, suไม่ได้เป็นวิธีที่จะทำมัน เข้าสู่ระบบรากจะถูกยกเลิกโดยปริยายบน Ubuntu และมีเพียงไม่ค่อยเหตุผลใด ๆ อีกครั้งช่วยให้พวกเขา หากคุณได้เปิดใช้งานrootการเข้าสู่ระบบแล้วคุณควรจะสามารถที่จะใช้จะกลายเป็นsu rootเหตุผลก็ไม่จำเป็นที่จะช่วยให้การrootบัญชีคือว่าไม่ว่าจะเป็นหรือไม่ที่คุณทำคุณยังสามารถเรียกใช้คำสั่งเป็นกับrootsudo
เมื่อคุณเรียกใช้คำสั่งกับsudoคุณใส่ในของคุณรหัสผ่านไม่ได้รหัสผ่านของผู้ใช้ภายใต้ตัวตนของคุณต้องการคำสั่งในการวิ่ง ผู้ดูแลระบบเท่านั้นที่สามารถเรียกใช้คำสั่งโดยพลการเช่นเดียวrootกับsudo(เว้นแต่คุณsudoจะกำหนดค่าใหม่เพื่อให้ผู้อื่นทำเช่นนั้นแน่นอน) ดังนั้นผู้ใช้ที่ไม่ได้รับอนุญาตให้จัดการระบบจึงไม่ได้รับอนุญาตให้เรียกใช้คำสั่งเหมือนกับrootรหัสผ่านของตนเอง
เมื่อต้องการเรียกใช้irssiเป็นrootกับsudo:
sudo irssi
และคุณจะป้อนของคุณรหัสผ่านเมื่อได้รับแจ้งไม่ได้root's
ยกเว้นรหัสผ่านที่คุณป้อนสิ่งนี้จะเหมือนกับ:
su -c irssi
ยกเว้นsudoเวอร์ชันสามารถประสบความสำเร็จได้เนื่องจากไม่จำเป็นต้องrootเปิดใช้งานบัญชี
เช่นเดียวกับsuที่คุณสามารถใช้sudoเพื่อเรียกใช้คำสั่งเป็นอื่นที่ไม่ใช่rootผู้ใช้ เมื่อต้องการเรียกใช้irssiเป็นusernameกับsudo:
sudo -u username irssi
หากคุณต้องการsudo ทำตัวเหมือนsu -เคารพ -HOMEนั่นคือคุณต้องการใช้HOMEตัวแปรสภาพแวดล้อมของผู้ใช้เป้าหมายคุณสามารถรันsudoด้วยการ-Hตั้งค่าสถานะ:
sudo -H irssi
sudo -H -u username irssi
คุณสามารถเริ่มต้นเปลือกทั้งหมดด้วยเช่นคุณสามารถมีsudo suยกเว้นรหัสผ่านที่คุณใส่คำสั่งนี้มีผลเหมือนกับsu:
sudo -s
และคำสั่งนี้มีผลเช่นเดียวกับsu -:
sudo -i
( iย่อมาจากเชลล์ล็อกอินเริ่มต้น )
คุณสามารถเริ่มเชลล์ในฐานะผู้ใช้อื่นได้เช่นกัน:
sudo -u username -s
sudo -u username -i
อ่านเพิ่มเติมเกี่ยวกับ sudo
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับsudoลองดูที่:
ทำไมถึงgksuทำงานเมื่อsuไม่ได้?
gksuอาจจะทำงานโดยการทำงานsudo
gksuเป็นส่วนหน้าสำหรับทั้งสอง และsu sudoใน Ubuntu มันเป็นค่าเริ่มต้นที่จะใช้sudo(เนื่องจากใน Ubuntu suมักจะไม่ได้ใช้สำหรับการเป็นrootและเป็นเพียงวิธีรองในการกลายเป็นอื่น ๆ ไม่ใช่rootผู้ใช้)
คุณสามารถทำให้gksuการใช้งานเป็นส่วนหน้าโดยใช้sugksu --su-mode
คุณสามารถหาว่าgksuอยู่ในsuโหมดหรือsudoโหมด (ถ้าคุณต้องการ) gksu-propertiesเปลี่ยนการตั้งค่านี้โดยการทำงาน นี่คือการตั้งค่าต่อผู้ใช้
เมื่อgksuอยู่ในโหมดมันจะทำงานเช่นเดียวกับsudogksudo
อ่านเพิ่มเติมเกี่ยวกับ gksu
การวิเคราะห์หลังการแก้ปัญหา
ในที่สุดคุณก็พบว่าคุณสามารถรันคำสั่งที่จำเป็นด้วย:
sudo -u username irssi
(ซึ่งเป็นเทคนิคที่ระบุไว้ข้างต้น)
ในที่สุดคุณรายงานข้อมูลสองชิ้นซึ่งเพียงพอที่จะอธิบายว่าทำไมมันถึงเป็นเพราะเทคนิคอื่นล้มเหลว แต่ก็ประสบความสำเร็จ:
usernameบัญชีถูกสร้างขึ้นด้วย--disabled-loginธงซึ่งทำให้มันมีรหัสผ่านไม่ (และไม่มีวิธีการอื่นในการเข้าสู่ระบบ) มีรหัสผ่านไม่ไม่ได้หมายความว่ามันเป็นไปได้ที่จะเข้าสู่ระบบด้วยรหัสผ่านว่างเปล่า มันหมายความว่าไม่มีรหัสผ่านเพียงพอที่จะรับรองความถูกต้อง เมื่อใช้ร่วมกับการกำจัดวิธีการรับรองความถูกต้องแบบอื่นวิธีนี้usernameไม่สามารถรับรองความถูกต้องได้เลย
ดังนั้นsuโซลูชันที่มีพื้นฐานทั้งหมดจึงออกมา sudoสามารถทำงานได้เนื่องจากsudoคุณไม่ได้ตรวจสอบสิทธิ์ในฐานะผู้ใช้ที่คุณกำลังจะแอบอ้างบุคคลอื่น แต่คุณจะต้องได้รับอนุญาตให้ปลอมตัวและรับรองความถูกต้องด้วยตัวคุณเอง (เช่นป้อนรหัสผ่านของคุณเองไม่ใช่ของพวกเขา)
เป็นไปได้ที่จะตั้งรหัสผ่านในบัญชีซึ่งจะลบสิ่งกีดขวางนี้เพื่อเข้าสู่ระบบ:
sudo passwd username
อย่างไรก็ตามอาจมีเหตุผลที่ดีที่ผู้ใช้ไม่ได้รับอนุญาตให้เข้าสู่ระบบตัวอย่างเช่นหากผู้ใช้นี้ได้รับอนุญาตให้เข้าสู่ระบบและเข้าสู่ระบบแบบกราฟิกปัญหาที่ไม่ดีจะเกิดขึ้นจากสภาพแวดล้อมของผู้ใช้ ? หากผู้ใช้รายนี้สามารถเข้าสู่ระบบได้จะทำให้สามารถเข้าสู่ระบบจากระยะไกลในฐานะผู้ใช้รายนั้น (สำหรับเครื่องที่คุณใช้บริการเครือข่าย)
หากคุณต้องการปิดการใช้งานอีกครั้ง:
sudo passwd -dl username
ที่เกี่ยวข้อง: ปิดใช้งานrootบัญชีอีกครั้งหลังจากเปิดใช้งานชั่วคราว
usernameบัญชีมี/bin/falseเป็นเปลือกเข้าสู่ระบบของมัน
เมื่อเชลล์ชอบbashรันเป็นเชลล์ล็อกอินของคุณเชลล์จะตั้งค่าสภาวะแวดล้อมของคุณและให้พร้อมต์แบบโต้ตอบเพื่อควบคุมเครื่อง
เมื่อ/bin/falseวิ่งบนมืออื่น ๆ มันไม่ทำอะไรเลยและรายงานความล้มเหลว ( /bin/trueไม่ทำอะไรเลยและรายงานความสำเร็จ)
falseและtrueคำสั่งที่มีประโยชน์ในการเขียนสคริปต์และวัตถุประสงค์ในการทดสอบต่างๆ แต่ยังสำหรับการปิดการใช้งานบัญชีเพื่อที่ว่าเมื่อบันทึกคนที่อยู่ในเซสชั่นการเข้าสู่ระบบของพวกเขาสิ้นสุดลงทันที วิธีการที่ใช้รหัสผ่าน (หรือวิธีการอื่นในการตรวจสอบ) สามารถเปิดใช้งานและผู้คนสามารถเข้าสู่ระบบเพียงแค่ไม่ได้สำหรับการเข้าถึงเปลือก ตัวอย่างเช่นหากมีเซิร์ฟเวอร์ FTP พวกเขายังสามารถเข้าถึงบัญชีของตนผ่านทาง FTP หากมีเซิร์ฟเวอร์ SSH พวกเขาจะไม่สามารถรับเชลล์ผ่าน SSH แต่พวกเขายังคงสามารถใช้sftpและscpถ่ายโอนไฟล์ได้
ตั้งแต่username's เปลือกเข้าสู่ระบบเป็น nonfunctional คำสั่งชอบ, , และอาจจะไม่ได้ทำงานsu usernamesu - usernamesudo -u username -ssudo -u username -i
แต่คำสั่งที่ไม่ให้เชลล์เหมือนหรือยังใช้งานได้sudo -u username commandsu username -c 'command'
เนื่องจากสามารถรันคำสั่งได้คุณสามารถเปลี่ยนเชลล์ล็อกอินของผู้ใช้เป็นฟังก์ชันได้:
sudo chsh -s /bin/bash username
อย่างไรก็ตามสิ่งนี้ควรทำด้วยความระมัดระวังเนื่องจากอาจมีเหตุผลที่ดีในการปิดใช้งานการเข้าสู่ระบบแบบโต้ตอบสำหรับผู้ใช้
ที่นี่usernameทั้งคู่มีรหัสผ่านที่ปิดใช้งานและเชลล์ "พิการ" การไม่มีรหัสผ่านการทำงานใด ๆ จะช่วยป้องกันไม่ให้suโซลูชั่นที่ทำงานอยู่ทั้งหมดในขณะที่การไม่มีล็อกอินเชลล์แบบโต้ตอบที่ใช้งานได้ทำให้เชลล์ที่วางไข่แบบเชลล์ทำงานทั้งหมดยกเว้นการเรียกใช้เชลล์ด้วยตนเองเช่น)sudo -u username bash
sudo -u username command คือสิ่งที่เหลืออยู่