สิทธิ์ sudo ถูกปฏิเสธ แต่ su ได้รับอนุญาต


11

นี่เป็นเหตุการณ์แรกที่ฉันต้องการให้ su

ฉันอ่านบทความเกี่ยวกับการเปลี่ยนค่าใน / sys / อุปกรณ์ / virtual / backlight / acpi_video0 / ความสว่างเพื่อเปลี่ยนความสว่างหน้าจอแล็ปท็อปของฉัน

ฉันแรกพบว่าเมื่อฉันจะ$ sudo echo 10 > brightnessฉันจะได้รับอนุญาตถูกปฏิเสธ

ฉันเปลี่ยนเป็นรูทโดยใช้ su และ# echo 10 > brightnessเปลี่ยนความสว่างของฉันเกือบจะในทันที

สิ่งที่แปลกประหลาดสำหรับฉันเกิดขึ้นเมื่อฉันพยายาม# echo 20 > brightness(ไฟล์ maxbrightness เก็บค่า 15) และฉันได้รับข้อผิดพลาดในการเขียน

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


คำตอบ:


17

การเปลี่ยนเส้นทางไม่ทำงานเช่นนั้น การต่อท้าย>คำสั่งจะเรียกใช้การเปลี่ยนเส้นทางนั้นในฐานะผู้ใช้ที่เรียกใช้ (คุณ) และไม่เป็นราก ทำได้ด้วยtee:

echo 20 | sudo tee /sys/devices/virtual/backlight/acpi_video0/brightness

หรือโดยการเรียกใช้คำสั่งในเชลล์ที่มีสิทธิพิเศษแยก:

sudo bash -c "echo 20 > /sys/devices/virtual/backlight/acpi_video0/brightness"

เหมือนปลายที มันไม่ได้เกิดขึ้นกับฉันในช่วง 15 ปีที่ฉันดูแลระบบยูนิกซ์ :-) เห็นได้ชัดเมื่อเห็น
Mr Shark

8

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

$ sudo echo 10 > brightness

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

$ echo 10 | sudo tee brightness

ตอนนี้teeเป็นที่เปิดbrightnessและเนื่องจากมันทำงานเป็นรากมันสำเร็จ


3

su = sแม่มดu ser: ใช้เชลล์เป็นผู้ใช้อื่น

sudo = s uper u ser do : execute คำสั่งต่อไปนี้ในฐานะผู้ใช้รูท

ในกรณีของคุณคำสั่งดังต่อไปนี้เท่านั้นecho 20ดังนั้น echo 20 เท่านั้นที่จะถูกเรียกใช้งานเป็น root (ดังที่กล่าวไว้ก่อนหน้านี้) การเปลี่ยนเส้นทางจะถูกดำเนินการตามที่คุณอีกครั้ง


2

คุณอาจต้องการดู/etc/sudoersไฟล์ ถ้าคุณ / C sudoไม่ได้อยู่ที่นั่นแล้วคุณจะไม่สามารถที่จะ


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