quyền sudo bị từ chối nhưng su cho phép


11

đây là lần đầu tiên tôi yêu cầu su.

Tôi đã đọc một bài viết về việc thay đổi giá trị trong / sys / thiết bị / ảo / đèn nền / acpi_video0 / độ sáng để thay đổi độ sáng màn hình máy tính xách tay của tôi.

Lần đầu tiên tôi nhận thấy rằng khi nào $ sudo echo 10 > brightnesstôi sẽ bị từ chối.

Tôi chuyển sang root bằng su và # echo 10 > brightnessthay đổi độ sáng của tôi gần như ngay lập tức.

Điều kỳ lạ cuối cùng với tôi đã xảy ra khi tôi thử # echo 20 > brightness(tệp maxbrightness giữ giá trị 15) và tôi đã gặp lỗi ghi

Ai đó có thể giải thích sự khác biệt này giữa sudo và su với tôi không? Hiểu lỗi viết sẽ là một phần thưởng bổ sung. Bất kỳ trợ giúp, con trỏ và / hoặc liên kết sẽ được đánh giá cao.


Câu trả lời:


17

Chuyển hướng không hoạt động theo cách đó. Việc thêm >vào một lệnh sẽ chạy chuyển hướng đó với tư cách là người dùng gọi (bạn) chứ không phải là root. Làm điều đó với tee:

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

hoặc bằng cách gọi lệnh trong một vỏ đặc quyền riêng biệt:

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

Giống như đầu tee. Nó đã không xảy ra với tôi trong suốt 15 năm unix sysadmining :-) Rõ ràng khi nhìn thấy.
Mr Shark

8

Điều này không phải vì sudo, đó là do cách xử lý lệnh của bạn; Tôi thực sự đã giải thích nó trong câu hỏi này . Khi bạn làm

$ sudo echo 10 > brightness

Shell chạy lệnh sudo echo 10, chạy echo 10dưới quyền root. Shell sau đó cố gắng mở brightnessđể nó có thể chuyển hướng đầu ra từ bên echo 10trong nó, nhưng nó không thể - shell của bạn đang chạy với quyền của bạn chứ không phải root. Có cách giải quyết được đăng dưới dạng câu trả lời cho câu hỏi tôi liên kết đến; một cái tốt là:

$ echo 10 | sudo tee brightness

Bây giờ teelà cái để mở brightnessvà vì nó chạy như root nên nó thành công


3

su = s witch u ser: Sử dụng shell như một người dùng khác

sudo = s uper u ser do : thực hiện lệnh sau với tư cách là người dùng root.

Trong trường hợp của bạn, lệnh sau chỉ là duy nhất echo 20, do đó chỉ có echo 20 được thực thi dưới dạng root (như đã nói trước đó). Chuyển hướng được thực hiện như bạn một lần nữa.


2

Bạn có thể muốn xem /etc/sudoerstập tin. Nếu a / c của bạn không được liệt kê ở đó thì bạn sẽ không thể sudo.


Đúng, nhưng bạn sẽ nhận được một thông báo lỗi cụ thể trong trường hợp đó ("tên người dùng không có trong tệp sudoers")
Michael Mrozek
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.