อะไรเป็นตัวกำหนดว่าคำสั่ง Linux ใดที่ต้องมีการเข้าถึงรูท


23

อะไรเป็นตัวกำหนดว่าคำสั่ง Linux ใดที่ต้องมีการเข้าถึงรูท ฉันเข้าใจถึงเหตุผลว่าทำไมจึงเป็นที่พึงปรารถนาที่apt-getควรพูดว่าต้องการrootสิทธิ์ แต่สิ่งที่แตกต่างคำสั่งเหล่านี้จากส่วนที่เหลือ? มันเป็นเพียงเรื่องของการเป็นเจ้าของและดำเนินการสิทธิ์ของปฏิบัติการหรือไม่?


2
มันเป็นฟังก์ชั่นหลักของไฟล์ที่พวกเขาสัมผัสและฟังก์ชั่นที่พวกเขาเรียก
Federico klez Culloca

9
แอพบางตัวจำเป็นต้องเข้าถึงไฟล์ / dirs ซึ่งเป็นของ root ดังนั้นพวกเขาเพียงแค่โทรopenและรับ "ปฏิเสธสิทธิ์" แอพบางตัวตรวจสอบgetuidและหยุดทำงานหากไม่ได้รับการรูท บางคนเป็นเจ้าของโดย root และเจ้าของเท่านั้นที่สามารถดำเนินการได้ (ดูchmod) หากคุณถามว่ามีเครื่องหมาย "ต้องการรูท" ในส่วนหัวของแอปหรือไม่คำตอบคือไม่ ไม่มีสิ่งดังกล่าว afaik
user996142

1
ps: syscalls หลาย ๆ อัน (เช่นผูกเข้ากับพอร์ตที่รู้จักกันดี <1024) อาจต้องการการเข้าถึงรูทด้วย
user996142

apt-get ไม่จำเป็นต้องรูทเลย มันอยู่ในไดเรกทอรี / usr / bin ดูaskubuntu.com/a/440791/169736
Braiam

คุณอาจทำให้สิ่งที่คุณหมายถึงโดย "ต้องการ" ที่นี่ คุณหมายความว่าโปรแกรมจะไม่ทำงานจนกว่าคุณจะรูท (หรือมีสิทธิ์ sudo) หรือจำเป็นต้องรูทเพื่อที่จะทำงานได้อย่างถูกต้องหรือไม่?
jamesqf

คำตอบ:


15

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

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

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

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

อย่างไรก็ตามนี่คือตัวอย่างเล็ก ๆ น้อย ๆ จาก manpage ที่อ้างอิงถึงสิทธิ์ของ root:

  • ทำการจัดการโดยพลการของโพรเซส UIDs (setuid (2), setreuid (2), setresuid (2), setfsuid (2));
  • ข้ามไฟล์อ่านเขียนและดำเนินการตรวจสอบสิทธิ์ (DAC เป็นตัวย่อของ "การควบคุมการเข้าถึงตามอำเภอใจ")
  • ข้ามการตรวจสอบสิทธิ์สำหรับการส่งสัญญาณ (ดู kill (2)) ซึ่งรวมถึงการใช้การดำเนินการ ioctl (2) KDSIGACCEPT
  • ดำเนินการต่าง ๆ ที่เกี่ยวข้องกับเครือข่าย:
    • การกำหนดค่าอินเตอร์เฟส
    • การบริหาร IP ไฟร์วอลล์การปลอมแปลงและการบัญชี
    • ปรับเปลี่ยนตารางเส้นทาง
  • ผูกซ็อกเก็ตเข้ากับพอร์ตพิเศษของโดเมนอินเทอร์เน็ต (หมายเลขพอร์ตน้อยกว่า 1024)
  • โหลดและยกเลิกการโหลดโมดูลเคอร์เนล (ดู init_module (2) และ delete_module (2));
  • ตั้งค่านาฬิการะบบ (settimeofday (2), stime (2), adjtimex (2)); ตั้งค่านาฬิกาเรียลไทม์ (ฮาร์ดแวร์)
  • ดำเนินการช่วงของการดำเนินการดูแลระบบรวมถึง: quotactl (2), เมานต์ (2), umount (2), swapon (2), swapoff (2), sethostname (2) และ setdomainname (2);
  • ใช้รีบูต (2) และ kexec_load (2)
  • ใช้ chroot (2)
  • เพิ่มค่า nice ของกระบวนการ (nice (2), setpriority (2)) และเปลี่ยนค่า nice สำหรับกระบวนการโดยพลการ

32

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

  • การเปิดฟังซ็อกเก็ต TCP บนพอร์ตที่ต่ำกว่า 1024
  • การเปลี่ยนการกำหนดค่าระบบ (เช่นมีอะไร/etc)
  • การเพิ่มไลบรารีที่เข้าถึงได้ทั่วโลกใหม่ ( /libและ/usr/lib) หรือไบนารี ( /bin, /usr/bin)
  • การแตะไฟล์ใด ๆ ที่ไม่ได้เป็นของผู้ใช้ที่กำลังทำการแตะซึ่งไม่มีโหมดที่อนุญาตเพียงพอ
  • การเปลี่ยนความเป็นเจ้าของไฟล์ของผู้ใช้คนอื่น
  • จัดลำดับความสำคัญกระบวนการ Escelating (เช่นrenice)
  • การเริ่มหรือหยุดบริการส่วนใหญ่
  • การกำหนดค่าเคอร์เนล (เช่นการปรับ swappiness)
  • การปรับโควต้าระบบไฟล์
  • การเขียนไปยังดิสก์ "เต็ม" (ระบบไฟล์ส่วนใหญ่สงวนพื้นที่บางส่วนสำหรับผู้ใช้รูท)
  • ดำเนินการกับผู้ใช้รายอื่น

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

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

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

0

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


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

@ โจลฉันคิดว่า "คำสั่งซื้อ" เป็นการแปลที่ผิดและควรเป็น "คำสั่ง" ซึ่งช่วยให้สามารถแยกประโยคที่แตกต่างออกไปได้ ค่อนข้างใช้คำพูดอย่างงุ่มง่ามในการใช้คำตอบนี้ให้มากที่สุด: "ฉันคิดว่ามันเป็นไปตามวิธีที่มีการใช้ข้อมูลประจำตัวของผู้ใช้ในการตรวจสอบสิทธิ์ที่จะไม่แยกตามคำสั่งสิทธิพิเศษเกี่ยวกับไฟล์และผู้ใช้ ไม่มีคำสั่งแยก " นี่ยังไม่ชัดเจนเกินไป แต่ก็สมเหตุสมผลสำหรับฉันมากกว่าที่คุณคิด ฉันหวังว่าความคิดเห็นของฉันจะช่วยให้ใครบางคนเข้าใจคำตอบนี้ได้อย่างเต็มที่และแก้ไขเป็นคำตอบ
hvd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.