ทำไมถึงเรียกว่า sudo


30

ทำไมเราใช้sudoเพื่อดำเนินการคำสั่ง terminal ในฐานะผู้ดูแลระบบ ทำไมมันไม่ได้เป็น adminอย่างอื่น? มีเหตุผลsudoหรือไม่?


19
อ่านsudo lsเป็น "superuser, do ls" (และไม่ใช่ไม่ใช่เรื่องไร้สาระคำย่อมีความสำคัญสำหรับการจดจำคำสั่ง) (และไม่น่าจะหมายถึง " sแม่มดu ser และทำได้เนื่องจากนั่นsuหมายถึงผู้ใช้สวิตช์ แต่ฉันพบว่าอร่อยที่สุดในอดีต -))
Rmano

1
superuser ดีกว่า admin :) ขอบคุณสำหรับการตอบกลับ
Mohammad

2
มันคือวูดู sudo ที่คุณทำ :)
Shadur

14
สนุกจริง: ในภาษาอิตาลีsudoหมายถึง(ฉัน) เหงื่อ ผมชอบที่จะตีความsudo Xเป็นเหงื่อออกเพราะกลัวของการให้คำสั่งที่ไม่ถูกต้องและเช็ดข้อมูลของฉันทั้งหมด สิ่งนี้จะช่วยให้ทราบว่าคุณควรเพิ่มsudoต่อหน้าคำสั่งเมื่อ 1) จำเป็นเท่านั้น 2) คุณรู้ว่าคุณกำลังทำอะไรอยู่ 3) คุณเขียนและอ่านบรรทัดคำสั่งอย่างระมัดระวังเพื่อหลีกเลี่ยงการพิมพ์ผิด (โดยเฉพาะช่องว่างที่ไม่ดี จับและสามารถทำให้ได้ผลลัพธ์ที่ไม่คาดคิดที่น่ากลัวจริงๆ)
Bakuriu

2
@Rmano su แต่เดิมหมายถึง “ผู้ใช้ super”,“ใช้แทน” มาในภายหลัง
Gilles 'ดังนั้น - หยุดความชั่วร้าย'

คำตอบ:


32

จากวิกิพีเดีย :

sudo เป็นโปรแกรมสำหรับระบบปฏิบัติการคอมพิวเตอร์ที่เหมือน Unix ที่อนุญาตให้ผู้ใช้รันโปรแกรมด้วยสิทธิ์ความปลอดภัยของผู้ใช้รายอื่น (โดยปกติคือ superuser หรือ root) ชื่อของมันคือการต่อข้อมูล "su" (ผู้ใช้สำรอง) และ "ทำ" หรือดำเนินการ

ซึ่งแตกต่างจากคำสั่ง su ผู้ใช้มักจะให้รหัสผ่านของตนเองเพื่อ sudo มากกว่ารหัสผ่าน root หลังจากการพิสูจน์ตัวตนและหากไฟล์การกำหนดค่า / usr / local / etc / sudoers (บางครั้งพบที่ / etc / sudoers) ไฟล์การอนุญาตให้เข้าถึงผู้ใช้ระบบจะเรียกใช้คำสั่งที่ร้องขอ ไฟล์การกำหนดค่า sudoers เปิดใช้งานการกำหนดค่าจำนวนมากรวมถึง แต่ไม่ จำกัด เพียง: การเปิดใช้งานคำสั่งรูทจากเทอร์มินัลการเรียกใช้เท่านั้น ไม่ต้องการรหัสผ่านสำหรับคำสั่งบางอย่าง ต้องการรหัสผ่านต่อผู้ใช้หรือกลุ่ม ต้องป้อนรหัสผ่านใหม่ทุกครั้งหรือไม่ต้องการรหัสผ่านเลยสำหรับบรรทัดคำสั่งเฉพาะ นอกจากนี้ยังสามารถกำหนดค่าให้อนุญาตให้ผ่านอาร์กิวเมนต์หรือคำสั่งหลายคำสั่งและยังรองรับคำสั่งที่มีการแสดงออกปกติ

มันเป็นคำสั่งเพียงครั้งเดียวชั่วคราวที่มีสิทธิ์ superuser (ผู้ดูแลระบบ) โดยไม่ต้องเข้าสู่ระบบรากโดยตรง


11
ส่วน wiki นั้นถูกต้อง ความคิดเห็นเกี่ยวกับ "Mac is Su" ไม่ถูกต้อง Macs มีทั้งsudoและsuเช่นเดียวกับ BSD และ Linux ทำ
daviewales

@Virusboy สวัสดีฉันขอโทษที่ลองในหัวข้อนี้ แต่ฉันต้องรู้ว่ามันง่ายต่อการใช้ Ubuntu 14.04 กับ Toshiba M840 i3-3110M หรือไม่ ขอขอบคุณ.
บอนน์

มันง่ายสำหรับพีซีทุกเครื่อง
Virusboy

21

xkcd: แซนด์วิช

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

เนื่องจากปัญหานี้Sudo ปรากฏ จุดมุ่งหมายคือการใช้สิทธิพิเศษระดับผู้ดูแลระบบในช่วงเวลาสั้น ๆ และเมื่อจำเป็นเท่านั้น นอกจากนี้จะเป็นการหลีกเลี่ยงไม่ให้ผู้ใช้ลงชื่อเข้าใช้บัญชีอื่น นี้เห็นได้ชัดจะเสริมสร้างระบบความปลอดภัย

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

ข้อเสียของsudo:

  • คำสั่งใดที่คุณอนุญาตผ่าน sudo
  • คุณต้องเขียนsudoก่อนทุกคำสั่งที่ต้องการสิทธิ์ผู้ดูแลระบบ
  • ดังนั้นทุกครั้งที่คุณต้องre-พิมพ์รหัสผ่าน

อะไรsudoหมายถึง? ชื่อของมันคือการต่อข้อมูล "su" (ผู้ใช้สำรอง) และ "ทำ"

ทำไมsudoไม่admin? ฉันคิดว่ามีความsudoหมายadminสำหรับเวลาที่เฉพาะเจาะจงและเมื่อคุณต้องการมัน

ผู้ที่มาจากสภาพแวดล้อม windows ควรเข้าใจว่าทำไมจึงไม่ใช่admin :)

ข้อมูลอ้างอิง: รูปภาพไซต์
: xkcd


เหตุใดจึงไม่เรียกว่าโรโด
JamesRyan

3
ย่อหน้า“ before sudo” ของคุณผิด ไม่มีความแตกต่างระหว่างsuและsudoในส่วนนี้ความแตกต่างเพียงอย่างเดียวระหว่างสองคือการใช้ข้อมูลประจำตัว การใช้sudoแทนที่จะsuไม่ปลอดภัยกว่า (อันที่จริงแล้วมันค่อนข้างปลอดภัยน้อยกว่า) ประโยชน์หลักของ sudo (และเหตุผลที่ Ubuntu เลือก) คือความเรียบง่ายสำหรับผู้ใช้ (จำรหัสผ่านเดียวเท่านั้น)
Gilles 'หยุดชั่วร้าย'

11

จาก Linux.com ผลิตภัณฑ์ของมูลนิธิ Linux:

Sudo ย่อมาจาก " ตัวแทนผู้ใช้แทน " หรือ " ผู้ใช้ขั้นสูง " (ขึ้นอยู่กับว่าคุณต้องการมองอย่างไร) สิ่งที่ sudo ทำนั้นสำคัญและมีความสำคัญอย่างยิ่งต่อการกระจาย Linux หลาย ๆ อย่าง อย่างมีประสิทธิภาพ sudo ช่วยให้ผู้ใช้เรียกใช้โปรแกรมในฐานะผู้ใช้อื่น (ส่วนใหญ่ผู้ใช้รูท)

[เหมืองเน้น.] ที่มา


3

superuser ทำ

มีคำสั่ง su สำหรับการเป็น superuser ดังนั้นคุณอาจพูดว่า

$ su
# apt-get install somehorror
# exit
$

sudo ช่วยให้คุณทำสิ่งนี้ได้ในคราวเดียวและคุณไม่ต้องจำที่จะสละพลังเวทย์มนตร์ของคุณ

$ sudo apt-get install somehorror

2
su("ผู้ใช้สำรอง") ช่วยให้คุณกลายเป็นผู้ใช้ใด ๆ : คุณสามารถระบุชื่อผู้ใช้เป็นอาร์กิวเมนต์
David Richerby

1
ที่จริงแล้วทั้งสองไม่เหมือนกัน แต่มีความคล้ายคลึงกันในกรณีส่วนใหญ่ แต่ sudo ส่วนใหญ่ช่วยให้คุณสามารถเรียกใช้โปรแกรมด้วยสิทธิ์ผู้ใช้ขั้นสูง แต่ทำให้สภาพแวดล้อมปกติของคุณเหมือนเดิม จริง ๆ แล้วซูทำให้คุณผู้ใช้ super กับสภาพแวดล้อมของผู้ใช้ super
Marty Fried

3

เกี่ยวกับสาเหตุที่ไม่ใช่ "admin" - หรือทางอ้อมทำไม su ไม่ใช่ "switchUser" หรืออะไรทำนองนั้น - คำสั่ง Unix แบบดั้งเดิมมีแนวโน้มที่จะเป็นตัวย่อเล็กน้อยสำหรับเหตุผลทางประวัติศาสตร์ที่เกี่ยวข้องกับต้นกำเนิดของ Unix

ด้วยเหตุผลพื้นฐานที่สุดเราจำเป็นต้องกลับไปที่เหตุผลเดียวกันเรียกว่า Unix ตั้งแต่แรก Unix ส่วนใหญ่ได้รับแรงบันดาลใจจากหนึ่งในระบบปฏิบัติการมัลติทาสกิ้งมัลติทาสก์รุ่นแรกของ Multicres (Unix ได้ชื่อเป็น "เอกพจน์ของ Multics" หรือ "ตอน Multics" ขึ้นอยู่กับว่าคุณถามใครและอารมณ์ของพวกเขาในขณะนี้)

ในบรรดานวัตกรรมอื่น ๆ ของ Multics นั้นได้แนะนำแนวคิดของการแยกตำแหน่งไฟล์จริงจากข้อมูลไดเรกทอรีทำให้ไฟล์เดียวมีชื่อหลายชื่อ ("ลิงค์" ในเงื่อนไขของ Unix) Multics ใช้ประโยชน์อย่างเต็มที่จากสิ่งนี้ คำสั่ง Multics ส่วนใหญ่มีทั้ง ALongNameThatIsImpossibleToType และ ASNTOECR (ชื่อย่อที่ผู้เชี่ยวชาญเท่านั้นที่จำได้) ประสบการณ์แสดงให้เห็นว่าชื่อยาว ๆ นั้นไม่ได้เพิ่มความเป็นมิตรกับผู้ใช้มากนักในเวลานั้นผู้ใช้ทุกคนกลายเป็น "ผู้เชี่ยวชาญ" หรืออย่างรวดเร็วและแทบไม่มีใครเคยใช้ชื่อยาว ๆ เมื่อ Unix นำเอาการออกแบบของ Multics มาใช้สิ่งหนึ่งสิ่งง่าย ๆ ของพวกเขาก็คือการทิ้งชื่อยาวที่ไม่ได้ใช้และเก็บเฉพาะชื่อย่อที่เป็นมิตรกับผู้เชี่ยวชาญ

นอกจากนี้ยังสอดคล้องกับปรัชญา Unix ในการลดระบบปฏิบัติการและคำสั่งหลักที่ตั้งไว้เป็นสิ่งจำเป็นช่วยให้ระบบทำงานได้อย่างมีประสิทธิภาพในระบบขนาดเล็ก ในสมัยนั้นโปรแกรมเมอร์ยังคงอนุรักษ์ทุก ๆ ไบต์และเป็นไปได้ ตัวประมวลผลช้าลงอย่างมากความเร็วเทอร์มินัลก็ช้าลงอย่างมากเช่นกันและหน่วยความจำมีราคาแพงกว่ามาก (และช้ากว่าและมีแคชขนาดเล็กถ้ามี) การรักษาคำสั่งระบบให้มีความยาวน้อยที่สุดอาจไม่ได้ประหยัดทรัพยากรจริงมากนัก (ถ้ามี) แต่มัน "รู้สึกถูกต้อง" สำหรับความคิดของเวลา

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


3

ไม่ว่าจะเป็น " superuser " นั้นเป็นสิ่งที่su มาจากเดิมมันไม่ถูกต้องเนื่องจากชื่อผู้ใช้ที่คุณให้ไว้ไม่จำเป็นต้องเป็น superuser sudo -uเช่นเดียวกันสำหรับรันคำสั่งเป็นผู้ใช้อื่นใช้

" ผู้ใช้สำรอง " มีความแม่นยำมากขึ้น แต่ฟังดูไม่น่าสนใจ มันทำให้ฉันนึกถึงครูที่เป็นตัวแทน

ดังนั้นฉันชอบคิดว่าsu"เปลี่ยนผู้ใช้" และsudoทำให้เป็น "สลับผู้ใช้ & สิ่งที่"


1
ทีโอทีเสมอมันเป็นผู้ใช้ super ทำ แต่ผู้ใช้แทนเสียงที่ถูกต้องมากขึ้น
BeyondProgrammer

1

จากเว็บไซต์ Sudo :

"Sudo คืออะไร

Sudo (su "do") อนุญาตให้ผู้ดูแลระบบมอบอำนาจให้ผู้ใช้บางคน (หรือกลุ่มผู้ใช้) สามารถเรียกใช้คำสั่ง (หรือทั้งหมด) เป็น root หรือผู้ใช้รายอื่นในขณะที่ให้หลักฐานการตรวจสอบของคำสั่งและอาร์กิวเมนต์ของพวกเขา ."

"Sudo เป็นคนแรกที่คิดและนำไปใช้งานโดย Bob Coggeshall และ Cliff Spencer รอบปี 1980 ที่ภาควิชาวิทยาการคอมพิวเตอร์ที่ SUNY / Buffalo มันวิ่งบน VAX-11/750 ที่ทำงาน 4.1BSD รุ่นที่ปรับปรุงให้เครดิตกับ Phil Betchel, Cliff Spencer , Gretchen Phillips, John LoVerso และ Don Gworek ถูกโพสต์ใน net.sources Usenet newsgroup ในเดือนธันวาคมปี 1985 "

ที่กล่าวว่าในขณะที่ฉันไม่เชื่อว่ามีหลักฐานใด ๆ ฉันมักจะเชื่อมั่นอย่างยิ่งว่าชื่อเป็นเรื่องตลกโปรแกรมเมอร์ geeky คุณมีคำสั่ง "su" (ผู้ใช้ขั้นสูง) "ทำ" แต่คุณไม่ใช่ผู้ใช้ขั้นสูงจริง ๆ - เปลี่ยน "doo" เป็น "doh" และ "sudo" ดู / ฟังดูเหมือน "หลอก" (ปลอม) หลอกลวง)


-2

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

ฉันคิดว่ามันเป็นการเล่นบนคำว่าpsuedonymเพราะคุณสามารถทำเป็นคนอื่นไม่ว่าจะเป็นรูทหรือผู้ใช้รายอื่นโดยใช้แฟล็ก -u


3
คำถามก็คือทำไมมันถึงตั้งชื่อตามที่เป็นอยู่ไม่ใช่สำหรับ backronyms และ / หรือ mnemonics ดังนั้น ... [อ้างจำเป็น]
derobert

นอกจากนี้ผู้ใช้เป้าหมายเริ่มต้นไม่จำเป็นต้องเป็นroot(แม้ว่ามันจะทำให้รู้สึกว่ามันจะเป็นหรืออย่างน้อยหนึ่งที่มี uid 0 และโดยทั่วไป) ดูในrunas_default sudoers
Stéphane Chazelas

@derobert +1 สำหรับการใช้งาน "backronyms" และเพื่อให้เว็บไซต์สะอาดจากคำตอบที่ไม่ถูกต้อง
สามถ้วย

@sch ขอบคุณฉันไม่ทราบว่า
สามถ้วย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.