sudo дозволу відмовлено, але su надає дозвіл


11

це перше явище, коли мені потрібно було су.

Я читав статтю про зміну значення в / sys / devices / virtual / backlight / acpi_video0 / яскравості, щоб змінити яскравість екрана мого ноутбука.

Я вперше помітив, що коли б $ sudo echo 10 > brightnessя отримав дозвіл, йому відмовили.

Я перейшов на root за допомогою su і # echo 10 > brightnessзмінив яскравість майже миттєво.

Останнє дивне для мене сталося, коли я спробував # echo 20 > brightness(файл maxbrightness містить значення 15), і я отримав помилку в записі

Чи може хтось пояснити мені цю різницю між судо і су? Розуміння помилки написання було б додатковим бонусом. Будемо дуже вдячні за будь-яку допомогу, покажчики та / або посилання.


Відповіді:


17

Перенаправлення не працює таким чином. Звернення >до команди запустить це перенаправлення як користувач, що викликає (ви), а не як root. Зробіть це за допомогою 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 років систематичного управління Unix :-) Очевидно, коли я бачив.
Містер Шарк

8

Це не через sudoце, це через спосіб обробки вашої команди; Я фактично пояснив це в цьому питанні . Коли ви робите

$ sudo echo 10 > brightness

оболонка виконує команду sudo echo 10, яка працює echo 10як root. Потім оболонка намагається відкритись, brightnessщоб вона могла перенаправляти вихід з echo 10неї, але не може - ваша оболонка працює з вашими дозволами, а не root. Існують обхідні шляхи, розміщені як відповіді на питання, з яким я пов’язаний; хороший:

$ echo 10 | sudo tee brightness

Тепер teeце відкрити brightness, і оскільки він працює як root, це вдається


3

su = s witch u ser: використовуйте оболонку як іншого користувача

sudo = s uper u ser do : виконати таку команду як користувач root.

У вашому випадку виконується лише наступна команда echo 20, отже, виконуються лише echo 20 як root (як було сказано раніше). Переспрямування виконується як і ви знову.


2

Ви можете поглянути на /etc/sudoersфайл. Якщо ваш а / с не вказаний там, ви не зможете sudo.


Щоправда, але ви отримаєте в цьому випадку конкретне повідомлення про помилку ("ім'я користувача не є у файлі судорів")
Michael Mrozek
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.