เหตุใดสิ่งหนึ่งจึงเป็นที่ต้องการเหนือสิ่งอื่นในตัวอย่างนี้
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