เหตุใดสิ่งหนึ่งจึงเป็นที่ต้องการเหนือสิ่งอื่นในตัวอย่างนี้
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
โปรดระบุลิงก์ไปยังเอกสารของ Ubuntu
เหตุใดสิ่งหนึ่งจึงเป็นที่ต้องการเหนือสิ่งอื่นในตัวอย่างนี้
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
โปรดระบุลิงก์ไปยังเอกสารของ Ubuntu
คำตอบ:
sudo suคำสั่งย่อมาจาก "ผู้ใช้สวิทช์" และช่วยให้คุณสามารถที่จะกลายเป็นผู้ใช้รายอื่น อนุญาตให้ผู้ใช้ที่ได้รับอนุญาตรันคำสั่งเป็น superuser หรือผู้ใช้อื่นตามที่ระบุในไฟล์ sudoers
ตัวเลือก (i (จำลองการเข้าสู่ระบบครั้งแรก) รันเชลล์ที่ระบุโดยรายการฐานข้อมูลรหัสผ่านของผู้ใช้เป้าหมายเป็นเชลล์ล็อกอิน ซึ่งหมายความว่าไฟล์ทรัพยากรเฉพาะการเข้าสู่ระบบเช่น. profile หรือ .login จะอ่านโดยเชลล์ หากระบุคำสั่งคำสั่งจะถูกส่งไปยังเชลล์เพื่อดำเนินการผ่านตัวเลือก shellc ของเชลล์ หากไม่ได้ระบุคำสั่งเชลล์เชิงโต้ตอบจะถูกดำเนินการ
ที่มา: ManPage
sudo suคุณจะถูกถามรหัสผ่านไม่ใช่รหัสผ่านรูท ผู้ใช้รูทไม่จำเป็นต้องมีรหัสผ่าน ไม่ว่าหากผู้ดูแลระบบใช้รหัสผ่านรูทนั่นไม่ได้หมายความว่าผู้ใช้ปกติทุกคนจะรู้
sudoทำงานsuเป็นรูทและsuผู้ใช้รูทสามารถทำได้โดยไม่ต้องรู้รหัสผ่าน ความเข้าใจผิดขั้นพื้นฐานเกี่ยวกับวิธีการทำงานของระบบที่สมควรได้รับ IMO downvote
sudo -iจะไม่ถามรหัสผ่านของรูทด้วยดังนั้นจึงไม่เกี่ยวข้องกับคำถาม
sudo suเปลี่ยนผู้ใช้ปัจจุบันเป็นรูทเท่านั้น การตั้งค่าสภาพแวดล้อม (เช่น PATH) ยังคงเหมือนเดิม
sudo -i สร้างสภาพแวดล้อมใหม่ราวกับว่ารูทเพิ่งเข้าสู่ระบบ
ความแตกต่างนั้นชัดเจนมากขึ้นหากคุณใช้ผู้ใช้รายอื่น หลังจากsudo su bobคุณจะบ๊อบ แต่อยู่ในสถานที่เดียวกัน หลังจากsudo -i -u bobคุณจะเป็นคนบ็อบในไดเรกทอรีบ้านของบ๊อบด้วยเปลือกเริ่มต้นของบ๊อบและกับบ๊อบ.profileและสคริปต์การเข้าสู่ระบบอื่น ๆ ที่ถูกเรียกใช้
ดูman sudoรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่-iทำ โชคไม่ดีman suที่รายละเอียดอ่อน
พบรุ่นman su(จากการเข้าสู่ระบบ -1: 4.1.4.2 + svn3283-3ubuntu5.1) ที่มีดังต่อไปนี้จะพูดว่า:
$ PATH รีเซ็ตตามตัวเลือก /etc/login.defs ENV_PATH หรือ ENV_SUPATH (ดูด้านล่าง);
$ IFS รีเซ็ตเป็น“ <space> <tab> <newline>” หากตั้งไว้
โปรดทราบว่าพฤติกรรมเริ่มต้นสำหรับสภาพแวดล้อมดังต่อไปนี้:
ตัวแปรสภาวะแวดล้อม $ HOME, $ SHELL, $ USER, $ LOGNAME, $ PATH และ $ IFS จะถูกรีเซ็ต
ถ้า --login ไม่ได้ใช้สภาพแวดล้อมจะถูกคัดลอกยกเว้นตัวแปรข้างต้น
หาก --login ถูกใช้ตัวแปรสภาพแวดล้อม $ TERM, $ COLORTERM, $ DISPLAY และ $ XAUTHORITY จะถูกคัดลอกหากตั้งค่าไว้
สภาพแวดล้อมอื่นอาจถูกตั้งค่าโดยโมดูล PAM
ดังนั้นsudo suการเปลี่ยนแปลงสภาพแวดล้อมจะขึ้นอยู่กับการกระจายและการตั้งค่าของคุณ ดังนั้นในsudo -iทางทฤษฎีแล้วพกพาได้มากกว่าในทางทฤษฎี
su ไม่ตั้งค่าสภาพแวดล้อมที่เปลี่ยนแปลงและสามารถนำมาใช้ในการจำลองการเข้าสู่ระบบโดยใช้หรือ- -lแม้จะไม่ได้-l, $PATH มีการเปลี่ยนแปลง ทดสอบการอ้างสิทธิ์เหล่านี้ก่อนตัดสินใจ! (คุณหมายความว่าPWDยังคงเหมือนเดิมหรือไม่)
sudo su -และsudo -i?
$PATHมีการเปลี่ยนแปลงเมื่อฉันใช้suโดยไม่ต้องsudo(ใช้รหัสผ่านรูท) ตามที่info su(ซึ่งอาจเป็นสิ่งที่ดีกว่าในการเชื่อมโยงไปยังคำตอบของคุณ) suไม่แน่นอนอ่านรายการรหัสผ่านสำหรับผู้ใช้ที่คุณกำลังจะกลายเป็น อาจเป็นไปได้ว่า$PATHการเปลี่ยนแปลงที่ฉันสังเกตเห็นนั้นขึ้นอยู่กับระบบ (ฉันใช้ Debian 7)
man su(ซึ่งเป็นเวลานานกว่าคนที่คุณเชื่อมโยงกับ) shadow-utils 4.1.5.1บอกว่ามันเป็นส่วนหนึ่งของ manหน้าของฉันยังบอกว่า$PATHตั้งไว้แม้ว่า--preserve-environmentจะใช้ suดังนั้นผมคิดว่าจริงๆมันเป็นเพียงความแตกต่างระหว่างรุ่นที่แตกต่างกันของ
/etc/pam.d/sudoและ/etc/pam.d/suอาจถูกตั้งค่าให้ทำสิ่งที่แตกต่างอย่างสิ้นเชิงหรือเหมือนกันทุกประการ
ปัญหาหลักคือการตั้งค่าสภาพแวดล้อมที่มีเหตุผลอย่างใดอย่างหนึ่ง
การใช้sudo suเชลล์ใหม่รับสภาพแวดล้อมจากผู้ใช้ที่ออกคำสั่ง - ซึ่งอาจเป็นปัญหา
ด้วยsudo -iคุณจะได้รับเปลือกรูตที่สะอาด
ดูหมายเหตุพิเศษเกี่ยวกับ sudo และ shells
ยังคงต้องสังเกตว่าแทบไม่จำเป็นเลยในการสร้างรูตเชลล์
sudo -iคล้ายกับsudo su -ที่จริงไม่ได้รับสภาพแวดล้อมจากผู้ใช้ที่ออกคำสั่ง
sudo su sudo -i