ทำไมฉันต้องใช้ sudo เพื่อเกือบทุกอย่าง


64

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

มันทำให้ฉันนึกถึง UAC ของ Window ซึ่งผู้ใช้ปิดใช้งานหรือกำหนดค่าให้ไม่ต้องใช้รหัสผ่าน (เพียงแค่คลิก) นอกจากนี้ผู้ใช้ Windows หลายคนก็เป็นบัญชีผู้ดูแลด้วยเช่นกัน

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


25
คุณต้องใช้sudoเพื่อทำอะไรก็ตามที่เกี่ยวข้องกับการเปลี่ยนระบบถ้าคุณเพียงแค่ใช้งานไฟล์ / เดสก์ท็อปของคุณเองคุณไม่ได้ส่งผลกระทบต่อคนอื่นดังนั้นจึงไม่จำเป็นต้องมีสิทธิ์สูง หากคุณกำลังดำเนินการคำสั่งที่ไม่มีสิทธิพิเศษโดยไม่มี sudo คุณอาจเป็นผู้ใช้ขั้นสูง (เช่น root) อยู่แล้วและโดยปกติแล้วจะแนะนำให้เลือกน้อยกว่าการใช้ sudo สำหรับงานเฉพาะของระบบ
Eric Renouf

75
"การติดตั้งโปรแกรมจากแหล่งที่มา ... ทุกสิ่งที่ผู้ใช้ทั่วไปทำ" --- ฉันคิดว่าคุณประเมินทักษะทางเทคนิคของผู้ใช้ทั่วไปมากเกินไป
Jonathan Cast

7
คุณกำลังใช้sudoเมื่อคุณไม่ควร? คำสั่งที่ผู้ใช้ระบบปฏิบัติการยูนิกซ์ปกติควรประกอบด้วยส่วนใหญ่cd, lsไฟล์ย้ายคัดลอกลบและแก้ไขพวกเขามีการเข้าถึง หากคำสั่งปกติของคุณไม่ได้ประกอบสิ่งนี้คุณอาจไม่ใช่ผู้ใช้ Unix ปกติ
user530873

20
เคล็ดลับเล็ก ๆ : หากคุณทำบางสิ่งที่ต้องใช้ sudo แต่ลืมใส่ sudo ไว้ในคำสั่งของคุณคุณสามารถใช้sudo !!คำสั่งสุดท้ายที่คุณพิมพ์ด้วย sudo ข้างหน้าได้อีกครั้ง
asfallows

6
คุณไม่ได้ใช้เวลาส่วนใหญ่กับซอฟต์แวร์ที่ติดตั้งไว้หรือไม่? ไม่ควรเกี่ยวข้องกับ sudo ถ้าไม่คุณติดตั้งทำไม
OrangeDog

คำตอบ:


75

คุณพูดถึงฟังก์ชั่นการบริหารระบบเหล่านี้

การจัดการแพ็คเกจแก้ไขไฟล์ config ติดตั้งโปรแกรมจากแหล่งที่มา

เป็นสิ่งที่

ทุกสิ่งที่ผู้ใช้ทั่วไปทำ

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

บนระบบโฮมใช่คุณต้องจัดการระบบรวมถึงใช้งาน

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


47
ไม่มีเหตุผลใดที่คุณไม่สามารถ [... ] กำหนดค่า sudo ไม่ให้ถามรหัสผ่าน ฉันจะไม่แนะนำว่าถ้าคุณเปิดใช้งานสคริปต์ที่เป็นอันตรายมันจะสามารถทำหน้าที่เป็นรากในระบบของคุณ
อัล

5
หากการป้อนรหัสผ่าน sudo ทำให้คุณรำคาญมากจนคุณทำการทดสอบรหัสผ่านโดยอัตโนมัติก็จะไม่ช่วยได้เช่นกัน คุณต้องสร้างความสมดุลให้กับการรักษาความปลอดภัย ฉันนักบินอัตโนมัติ sudo ลบชิ้นส่วนสำคัญของระบบปฏิบัติการอย่างน้อยหนึ่งครั้ง
เนลสัน

33
โดยส่วนตัวฉันรักsudo- มันเหมือนการตรวจสติ
Max Williams

6
@ MaxWilliams ใช่แล้วมันเป็นพลาสติกฝาใสตัวเล็ก ๆ ที่อยู่เหนือปุ่มสีแดงตัวใหญ่ที่ถามว่าคุณแน่ใจหรือไม่ว่าคุณกำลังทำอะไรอยู่?
KlaymenDK

15
@AL: ถ้าฉันจะเรียกใช้สคริปต์ที่ไม่รู้จักมันจะดีกว่าไม่เป็นอันตรายหรือฉันเมาหรือไม่ว่ามันจะทำงาน sudo บนเดสก์ท็อปส่วนบุคคลของฉันมันเป็นข้อมูลของฉันเอง (ไม่ใช่รูท) ที่สำคัญไม่ใช่การกำหนดค่า (รูท) ของเครื่องตามลำดับ
jrw32982

31

Sudo / Root ถูกใช้ทุกครั้งที่คุณทำบางสิ่งที่ผู้ใช้มาตรฐานไม่ควรมีความสามารถในการเสี่ยงต่อการเกิดความเสียหาย / เปลี่ยนการกำหนดค่าระบบในแบบที่ผู้ดูแลระบบจะไม่อนุญาต

ไม่ว่าฉันจะจัดการแพ็คเกจแก้ไขไฟล์กำหนดค่าติดตั้งโปรแกรมจากแหล่งที่มาหรือสิ่งที่คุณมี

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

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

มันจะคล้ายกับหน้าต่างมันเป็นจริงที่หน้าต่างมีความคิดสำหรับUACUAC

คำพูดที่คุณได้รับในครั้งแรกที่คุณใช้ sudo นั้นเหมาะสมและสำคัญมาก:

เราเชื่อว่าคุณได้รับการบรรยายตามปกติจากผู้ดูแลระบบท้องถิ่น มันมักจะเดือดลงไปในสามสิ่งนี้:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

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


19

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

คุณต้องรันคำสั่งเหล่านั้นเป็น superuser sudoแต่คุณไม่จำเป็นต้องดำเนินการให้ใช้ ตัวอย่างเช่นคุณสามารถใช้แทนsuหรือdoas(แทนที่ OpenBSD สำหรับsudo) หรือคุณสามารถเข้าสู่ระบบในฐานะรูท

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


4
คุณยังสามารถใช้sudo -iหรือคล้ายกันเพื่อรับรูทเชลล์และจากนั้นเริ่มรันคำสั่งรูทโดยไม่จำเป็นต้องนำหน้าแต่ละคำสั่งด้วยsudo
cas

2
มักจะทำตามขั้นตอนที่จะต้องมีการทำงานเป็นรากจะแสดงด้วยเช่นรากพรอมต์# vi /etc/hostsแทนพรอมต์ด้อยโอกาส$ vi /etc/hosts(ทุบตีจะเป็นไปตามการประชุมถ้าคุณใช้\$ในPS1)
Gert van den Berg

16

คุณลักษณะด้านความปลอดภัยที่เสนอโดยsudoคุณสามารถมีระบบที่ไม่มีrootรหัสผ่านเพื่อให้rootผู้ใช้ไม่สามารถเข้าสู่ระบบได้โดยตรง นี่เป็นการป้องกันเพิ่มเติมสำหรับผู้ใช้ที่เลือกรหัสผ่านอ่อน - ผู้โจมตีพยายามบังคับให้รหัสผ่าน (ผ่าน SSH หรืออย่างอื่น) จะต้องคิดชื่อผู้ใช้ที่ถูกต้องก่อน

อีกแง่มุมหนึ่งคือการจัดการสิทธิ์ที่ละเอียดยิ่งขึ้น คิดเกี่ยวmake; sudo make installกับการทำmake; make installในฐานะที่เป็นราก makeจำนวนมากสิ่งที่สามารถไปผิดใน เครื่องมือที่มีการกำหนดค่าไม่ดีอาจพยายามเขียนทับไฟล์ระบบที่สำคัญ "ทำความสะอาด" /libแทนไดเรกทอรีปัจจุบันใช้ RAM ที่มีอยู่ทั้งหมดและวางระบบ ฯลฯmake installเป็นการกระทำง่ายๆขนาดเล็กที่มีโอกาสน้อยมากสำหรับข้อผิดพลาดร้ายแรง


1
และแม้ว่าจะมีการกำหนดค่ารหัสผ่านรูท แต่ก็ช่วยให้คุณสามารถให้ผู้ใช้เข้าถึงคำสั่งที่ต้องการสิทธิ์รูทโดยไม่ต้องให้รหัสผ่านรูตแก่พวกเขาซึ่งหมายความว่าหากเป็นเซิร์ฟเวอร์ของ บริษัท และพวกเขาถูกไล่ออก , โดยไม่ต้องเปลี่ยนรหัสผ่านรูท
Gert van den Berg

13

ประเด็นก็คือในอดีตระบบมีจุดประสงค์เพื่อให้ผู้ใช้หลายคนใช้งานร่วมกันซึ่งเพิ่งเข้าสู่ระบบทำบางสิ่งและออกจากระบบ ดังนั้นความแตกต่างระหว่างผู้ดูแลระบบและผู้ใช้ปกติ ระบบดังกล่าวยังคงมีอยู่ในห้องทดลองของมหาวิทยาลัยและคุณสามารถรู้สึกถึงความแตกต่างอย่างรวดเร็วหากคุณใช้คอมพิวเตอร์ดังกล่าว พีซีในบ้านที่คุณเป็นผู้ใช้เพียงคนเดียวและต้องทำหน้าที่เป็นผู้ดูแลระบบซึ่งเป็นการพัฒนาในภายหลัง


6
"ยังคงมีอยู่ในห้องทดลองของมหาวิทยาลัย" ... ใช่และ บริษัท ที่มีเทคโนโลยีเป็นศูนย์กลางทุกแห่งบนโลกและที่อื่น ๆ ที่ไม่ใช่ด้านเทคนิคก็เช่นกัน ถึงกระนั้น +1 สำหรับการให้ความแตกต่างที่แน่นอนว่า OP หายไปอย่างเห็นได้ชัดและผู้ตอบคำถามอื่น ๆ ส่วนใหญ่ไม่ได้เน้น
Wildcard

@ Wildcard ฮ่า ๆ แน่ใจ เพียงแค่ใส่ตัวอย่างที่กระโดดออกมาในหัวฉันทันทีฉันเดา
xji

10

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

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

ดังนั้นโดยไม่พูดเกินจริงมากเกินไปเราสามารถพูดได้ว่าคุณไม่จำเป็นต้องใช้sudo (หรือรหัสผ่านรูท) เพื่อใช้คอมพิวเตอร์ของคุณ เพียงเพื่อเตรียมคอมพิวเตอร์ของคุณ


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

ดูเหมือนว่าคุณควรมีสิทธิ์รูทเพื่อทำอาหาร
deltaray

6

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

นอกจากนี้ยังเป็นไปได้ที่จะใช้เปลือกสำหรับงานประจำวันของคุณ จัดการไฟล์ส่วนบุคคลของคุณใน~, แก้ไขไฟล์, แชทบน IRC, รวบรวมรหัส, ท่องเว็บ, ทั้งหมดนี้สามารถทำได้ในเชลล์ ฉันใช้bcเป็นเครื่องคิดเลข บางสิ่งทำได้ง่ายกว่าผ่าน GUI บางสิ่งทำได้ง่ายกว่าผ่านเชลล์ - แม้ว่าคุณต้องการใช้ GUI เชลล์มักจะเก่งในการทำงานแบบแบ็ตช์และทำงานอัตโนมัติ (คิดว่าเชลล์สคริปต์) ส่วนตัวฉันใช้แล้วแต่จำนวนใดจะดีที่สุดสำหรับงานในมือ

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

ฉันไม่คิดว่าเป็นความคิดที่ดีที่จะกำหนดค่าsudoให้ไม่ต้องใช้รหัสผ่าน มันง่ายเกินไปที่จะทำให้ระบบทั้งหมดของคุณวุ่นวายด้วยคำสั่งที่พิมพ์ผิดหรือสคริปต์ที่เป็นอันตราย

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


5

[... ] แต่ดูเหมือนจะไม่สมเหตุสมผลเนื่องจากฉันต้องใส่ sudo เสมอไม่ว่าฉันจะจัดการแพ็คเกจแก้ไขไฟล์ปรับแต่งติดตั้งโปรแกรมจากแหล่งหรือคุณมีอะไรบ้าง [ ... ]

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

ในการตั้งค่าผู้ใช้หลายคนคุณมีซอฟต์แวร์ที่ติดตั้งไว้ล่วงหน้าและการกำหนดค่าทั้งระบบภายใต้/usrและ/etcตามลำดับ การแตะที่ตั้งเหล่านี้จะต้องได้รับอนุญาตจากรูท แต่เนื่องจากซอฟต์แวร์ Unix เขียนขึ้นโดยคำนึงถึงผู้ใช้หลายคนคุณสามารถรวบรวมและติดตั้งซอฟต์แวร์ภายใต้$HOME ไดเรกทอรี2และมีไฟล์กำหนดค่าของคุณเองที่บ้านคุณสามารถแก้ไขไฟล์ได้อย่างอิสระโดยไม่ต้องเป็นผู้ใช้ขั้นสูง

นอกเหนือจากการติดตั้งซอฟต์แวร์ของตัวเองภายใต้บ้านซอฟต์แวร์ทั้งระบบส่วนใหญ่จะอ่านการกำหนดค่าเฉพาะของผู้ใช้จากขวาหลังจากที่พวกเขาครั้งแรกที่อ่านการกำหนดค่าจาก$HOME /etcสิ่งนี้ช่วยให้คุณสามารถปรับแต่งทุกอย่างได้โดยไม่ต้องไปrootไหน

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

ฉันจะให้ผู้จัดการแพคเกจติดตั้งของฉันสิ่งที่ทั่วโลก แต่ใด ๆ $HOMEที่รวบรวมจากแหล่งที่มาและสิ่งที่ตัวเองทำผมออกภายใต้ และฉันไม่จำเป็นต้องทำอะไรแบบนั้น

หากคุณมีไฟล์ข้อมูลที่จัดเก็บข้อมูลภายนอกของคุณ$HOMEรู้สึกอิสระที่จะchownหรือ ไดเรกทอรีชื่อของคุณเพื่อให้คุณสามารถเข้าถึงไฟล์ได้โดยไม่ต้องchgrp sudo

[1] (แดกดันเล็กน้อยขณะที่ Unix ตั้งใจให้เป็นรุ่น 'ผู้ใช้คนเดียว' ของระบบปฏิบัติการ Multics)

[2] (หากระบบอนุญาตให้ทำได้โดยไม่ติดตั้งพาร์ติชั่นโฮมเป็น noexec)


2

ในระบบหลายผู้ใช้ที่ UNIX (และโดยการสืบทอด, Linux) ได้รับการออกแบบสำหรับสิ่งเหล่านี้ไม่ใช่การกระทำของผู้ใช้ทั่วไป ผู้ดูแลระบบอาจดำเนินการ แต่ไม่ใช่ผู้ใช้ทั่วไปดังนั้นระบบจึงขอให้แน่ใจว่าระบบดูแลระบบต้องการทำเช่นนี้

แต่แม้ในระบบโฮมเดียวที่ผู้ใช้เหล่านี้จะไม่ธรรมดากระทำของผู้ใช้ โดยทั่วไปอาจมีสิ่งหนึ่งที่ต้องทำเมื่อเริ่มตั้งค่าระบบ แต่เมื่อเสร็จแล้วผู้ใช้ทั่วไปไม่ควรทำบ่อยนัก ผู้ใช้ทั่วไปส่วนใหญ่จะทำงานกับไฟล์ในโฮมไดเร็กตอรี่ (หรือไดเรกทอรีย่อยของมัน), ใช้โปรแกรม / แพ็คเกจที่ติดตั้งไว้แล้ว, และคุณไม่ต้องการsudoสิ่งนั้น หรือพวกเขาอาจทำงานในไดเรคทอรีพิเศษที่อื่นในระบบที่ได้ตั้งไว้เพื่อจุดประสงค์นั้นและคุณจำเป็นต้องsudoตั้งค่านั้น แต่โดยทั่วไปคุณต้องทำเพียงครั้งเดียว

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


1

สิ่งนี้อาจไม่ธรรมดาเหมือนที่แสดง แต่มักเกิดขึ้นเมื่อสิ่งที่ไม่เป็นทางการต้องการการเรียกระบบที่มีสิทธิใช้งานทั่วไปมากขึ้นเพื่อให้ได้ผลลัพธ์เช่น:

  • ถอนติดตั้งและนำแท่ง USB ออกไป umountเป็นคำสั่งที่จริงจังในขณะที่คุณสามารถถอนติดตั้งสิ่งต่าง ๆ มากมายด้วยมัน
  • เชื่อมต่อกับเครือข่ายไร้สายในพื้นที่ ไม่มีอะไรพิเศษ แต่การกำหนดค่าเครือข่าย ( ifupและอื่น ๆ ) ใช้สำหรับ superuser เท่านั้น
  • แอพที่อัปเดตเองที่จะไม่ทำงานหากไม่ได้รับการอัปเดต Update = ติดตั้งและสิ่งนี้สามารถติดตั้งได้หลายอย่างรวมถึงสิ่งที่คุณไม่ต้องการ

ระบบโดยทั่วไปมีวิวัฒนาการเพื่อลดจำนวนกรณีดังกล่าว แท่ง USB นั้นผู้ใช้สามารถติดตั้งได้ในขณะนี้และเครือข่ายสามารถเชื่อมต่อกับผู้ใช้ได้ แต่มันไม่ได้เป็นแบบนี้เสมอไป


0

ข้อสันนิษฐาน: นี่คือระบบและข้อมูลของคุณ

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

ฉันเข้าสู่ระบบเป็นประจำและทำงานเป็นรูทบนโฮมเซิร์ฟเวอร์ของฉันเพราะ ฉันสามารถ มันง่ายกว่า.

คุณจะได้รับแจ้งว่าคุณอาจเปิดอาวุธนิวเคลียร์หากไม่ไปเป็นนักบุญsudoแต่ความจริงก็คือวันนี้ผู้คนมีrootพลัง (*) บนอุปกรณ์มากมาย (ทีวี, โทรศัพท์, เครื่องปิ้งขนมปัง, Windows ของคุณ (เช่น คุณพูดถึง)) Linux ไม่แตกต่างจากที่นี่ถึงแม้ว่าหลายคนชอบคิดเป็นอย่างอื่น

BTW UACไม่ได้ถูกจำลองsudoตามบทบาทของมนุษย์ (นอกเหนือจากการทำให้ชีวิตของคุณมีความสุข) เพื่อให้แน่ใจว่าคุณจะเห็นว่ามัลแวร์ต้องการทำสิ่งใดในนามของคุณ

(*) rootอำนาจถูกกำหนดให้เป็นความสามารถในการดักฟังข้อมูลสำคัญ "ด้วยพลังอันยิ่งใหญ่มาพร้อมกับปัญหาที่ยิ่งใหญ่" (หรืออะไรก็ตามที่เป็น) สุภาษิตใช้

หากข้อสันนิษฐานของฉันไม่ถูกต้องคุณยังคงต้องรับความเสี่ยงด้านบน แต่มีตัวแปรเพิ่มเติม (งานของคุณรูปถ่ายที่ถ่ายโดยคู่สมรสของคุณและเก็บไว้ในแล็ปท็อปเครื่องเดียวกัน ... )


1
พลังของรูทนั้นไม่ใช่ความสามารถในการดักจับข้อมูลสำคัญ คุณสามารถทำได้rm -rf ~/โดยไม่ต้องมีการอนุญาตพิเศษ ในทางกลับกันคุณไม่สามารถบล็อกโทรศัพท์มือถือหรือทีวีของคุณได้โดยไม่ต้องรูทเครื่องก่อน
Dmitry Grigoryev

อุปกรณ์มีประโยชน์เช่นเดียวกับข้อมูลที่จัดเก็บและบริการที่มีให้ ฮาร์ดแวร์และระบบปฏิบัติการที่อยู่ด้านล่างเป็นเพียงสินค้า ดังนั้นพลังงานจึงเป็นที่ที่คุณสามารถส่งผลกระทบต่อบริการหรือข้อมูล บนทีวีคุณสามารถลบการตั้งค่าทั้งหมดของคุณได้ - ทีวีใช้ไม่ได้ (ก่อนที่จะกู้คืนข้อมูล) คุณสามารถลบข้อมูลทั้งหมดของคุณบนโทรศัพท์มือถือซึ่งจะกลายเป็นชิ้นส่วนของฮาร์ดแวร์โดยไม่ต้องใช้ นี่คือสิ่งที่ฉันหมายถึงโดย "อำนาจราก"
WoJ

1
อันที่จริงการเรียก "พลังราก" นี้เป็นการใช้ในทางที่ผิด คำว่า "รูท" ถูกโหลดมากเกินไปเพื่อหมายถึงสิ่งต่าง ๆ อย่างน้อยสามอย่าง (ผู้ใช้รูท, ไดเร็กทอรี / และไดเร็กทอรี / รูท) และการเพิ่มอีกอันนั้นไม่เป็นประโยชน์ บนเครื่องที่มีผู้ใช้คนเดียวแม้ว่าผู้ใช้ที่ไม่มีสิทธิพิเศษสามารถลบไฟล์ของตัวเองได้แล้ว แต่เขาไม่สามารถทำงานด้านการดูแลระบบบางอย่างได้โดยไม่ต้องใช้ sudo แต่ก็ยังช่วยปกป้องเขาจากสิ่งเลวร้ายต่างๆ
Monty Harder

1
การเปรียบเทียบทีวีของคุณไม่ใช่สิ่งที่ดี การลบการตั้งค่าบนทีวีของคุณนั้นเหมือนกับการลบไฟล์กำหนดค่าผู้ใช้ของคุณบน Linux ซึ่งการทำเช่นนั้นจะทำให้ระบบทำงานตามค่าเริ่มต้นบางชุดสำหรับผู้ใช้นั้นและโดยทั่วไปจะไม่ทำอันตรายใด ๆ กับระบบ รูทช่วยให้คุณสามารถปรับเปลี่ยนระบบได้ด้วยตัวเอง - บนทีวีนี่จะเหมือนกับการปรับเปลี่ยนเฟิร์มแวร์ซึ่งในกรณีนี้คุณสามารถทำลายความสามารถในการใช้งานได้จริง
JBentley

1
นี่คือเหตุผลที่มีการประเมินความเสี่ยง คุณประเมินความเสี่ยงในการทำบางสิ่ง (ซึ่งมีข้อดีข้อเสีย) และยอมรับลดหรือทำประกัน การกู้คืนอาจเป็นเรื่องง่าย (นักเทียบท่า, สแนปชอตของ VM) หรือยาก (การติดตั้งแบบฟอร์มเป็นศูนย์) - เป็นเรื่องของการวางแผนและการประเมินอีกครั้ง แต่อย่างที่คุณพูดถึงฉันไม่เข้าใจว่าการเข้าถึงรูทนั้นหมายความว่าอย่างไร
WoJ

0

ในการป้องกันของบุคคลที่เขียนคำถามเริ่มต้นฉันมีคำถามเดียวกันนี้ในปีที่ผ่านมา แต่ฉันใช้วิธีการที่แตกต่างกัน

คำตอบส่วนใหญ่ที่นี่สามารถเล่นได้ในวงเพราะพวกเขาทั้งหมดเน้นย้ำจุดเดียวกันเกี่ยวกับ sudo และราก ให้ฉันเพิ่มมุมมองที่แตกต่างในหัวข้อนี้:

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

ฉันได้เรียนรู้เกี่ยวกับความปลอดภัยอย่างแรงกล้าและยังใช้คำสั่งที่เป็นอันตรายด้วยการพิมพ์ rm -rf / * ในเทอร์มินัลในฐานะรูท (อย่าทำอย่างนี้! มันจะเป็นระบบของคุณ !!) ฉันทำสิ่งนี้และคำสั่งอื่น ๆ อีกมากมายเพื่อดูว่าจะเกิดอะไรขึ้นในเวลาจริง ฉันทำสิ่งต่าง ๆ เหล่านี้ซึ่งรู้ผลก่อนมือ แต่ฉันก็ยังได้เรียนรู้มากมายจากการทำเช่นนั้น ฉันใช้ SCO Unix LONG ก่อนที่จะมีเว็บ (ใช่ฉันอายุมากแล้ว) และการทดลองด้วยวิธีนี้มีประโยชน์ต่อการเรียนรู้ของฉัน

ดังนั้นสิ่งที่ฉันพูดคือถ้าคุณไม่รังเกียจที่จะทำการติดตั้งใหม่เมื่อมีบางอย่างผิดพลาดให้ใช้ su หรือเข้าสู่ระบบในฐานะ root ทั้งหมดที่คุณต้องการ คุณจะได้เรียนรู้อะไรมากมายจากการทำเช่นนั้น

เพียงจำไว้ว่าคำแนะนำที่ได้รับการทำซ้ำหลายครั้งที่นี่ได้ถูกย้ำด้วยเหตุผลที่ดี: โปรโตคอลการปฏิบัติที่ดีที่สุดมีการพัฒนามานานหลายทศวรรษตามที่ compsec ได้พัฒนาขึ้นและคุณควรใส่ใจพวกเขาแม้ในฐานะผู้ใช้ที่บ้าน / เดี่ยว . โดยการทำเช่นนั้นสุขอนามัยดูแลระบบ / นิสัยที่ดีจะกลายเป็นธรรมชาติที่สองสำหรับคุณ

แค่อาหารสำหรับคิดในหัวข้อของ su และ sudo แฮ็คมีความสุข!

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