Як змінити дозволи користувачів pi sudo; як додати інші облікові записи з різними дозволами?


14

Оскільки я періодично використовую свій Pi через SSH, я дізнався, що дозволити SSH отримати доступ до команд sudo небезпечно. Таким чином, я планую найближчим часом відключити цей дозвіл. Але, коли я встановлюю пакети, мені зазвичай доводиться перезавантажуватися. В даний час це дозволено лише через суперпользователь.

sudo reboot

Чи є спосіб змінити дозволи користувача pi, щоб він міг перезавантажувати (і встановлювати) пакети?

Чи можу я мати кілька облікових записів з різними дозволами?

Спасибі


1
Чи корисна будь-яка з наданих відповідей? Хтось із них відповідь, яку ви шукали? Тоді позначте це як відповідь.
Андерс

Так. Якщо ви все ще зацікавлені, я оновив їх до червня 2017 року - це питання було задано 4 роки та 2 місяці тому, і сьогодні мене привели до шляху вирішення проблеми. Перегляньте відповіді нижче:
SDsolar

Відповіді:


22

Щоб трохи уточнити: "Судо команди" немає, є лише команди, для коректної роботи яких потрібні кореневі привілеї, і sudoце команда для отримання їх для однієї команди: sudoпросто запускає дану команду як root (читати "sudo" як імператив) речення "суперперукар, роби щось!"). Правила, щодо яких користувачі можуть це робити, записані в /etc/sudoers. Під час встановлення програми Raspbian за замовчуванням користувач "pi" отримав свої дозволи з цього рядка:

pi ALL=(ALL) NOPASSWD: ALL

Це означає: "Користувачеві" pi "на ВСІХ хостах дозволено перемикатися на ВСІХ користувачів та чи НЕ повинен вводити свій PASSWD при використанні ВСІХ (читання: будь-яких) команд". (Я використовував тут шалену граматику, щоб зберегти порядок рядка. Примітка про те, чому існує спосіб розрізнити хости: таким чином, один і той же файл sudoers може бути поширений на декілька машин у мережі, щоб адміністратор мережі мав менше роботи) .

Це може бути те, що можливість запускати команди за допомогою sudo без видачі пароля адміністратора - це пункт, чому ви вважаєте, що використовувати sudo через SSH небезпечно (я не чув про загальну проблему з цим ... так що ви могли б поясніть, яку саме небезпеку ви маєте на увазі?).

Впевнені, що у вас може бути кілька користувачів із різними дозволами. Але я боюся, що використання sudo все ще є найкращим способом управління цими дозволами.

Отож, я сподіваюся, що ось цей маленький рецепт - це те, що вам потрібно:

$ sudo adduser admin

Це створить у користувача "адміністратора", запитає пароль, створить його домашній каталог тощо.

$ sudo adduser admin sudo
$ sudo adduser admin adm

Це додасть користувача "admin" до груп користувачів "sudo" та "adm". А оскільки дозволами керують в Linux шляхом додавання користувачів до груп користувачів, це надає користувачеві "адміністратор" всі привілеї та дозволи, які йому потрібні. Існує рядок, /etc/sudoersякий дозволяє будь-якому користувачеві, який знаходиться в групі користувачів "sudo", виконувати будь-яку команду як root; і ця привілей - це те, що нам потрібно для користувача адміністратора (додавання його до "adm" дозволяє йому читати деякі файли журналу /var/logбез використання sudoта ще декілька речей). Вам все одно потрібно використовувати, sudoколи ви ввійшли як адміністратор - але тепер sudo знову і знову запитує пароль адміністратора, коли ви не використовували sudo протягом п’яти хвилин.

Тепер вийдіть із системи та увійдіть як "адміністратор" користувача. Перевірте, чи

$ sudo apt-get update
$ sudo apt-get upgrade

працює. Якщо це так, ви можете скасувати деякі привілеї користувача "pi", тому що ви впевнені, що користувач адміністратора має правильні привілеї:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Це викидає користувача "пі" з групи "sudo".

$ sudo visudo

Це запустить редактор, який дозволяє редагувати /etc/sudoers. Поставте хеш-тег ( #) перед рядком, що починається з "пі", коментуючи його (або просто видаліть). Потім збережіть та вийдіть із редактора, visudo потім негайно перезавантажить правила привілеїв. Тепер користувачеві "pi" заборонено більше використовувати судо.

Після цього ви можете повторно ввійти як користувач "pi". Якщо ви хочете перейти до адміністратора для деяких команд, використовуйте su("переключення користувача"):

$ su - admin

Якщо ви хочете додати більше користувачів: використовуйте sudo adduser <name>як вище, тоді перевірте список груп користувачів, які має "pi":

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

Використовуйте, sudo adduser <username> <groupname>щоб додати нового користувача до кількох цих груп користувачів, що дозволяє йому використовувати аудіо, прискорене відео, використовувати підключаються пристрої тощо. Якщо ви не впевнені, додайте його до всіх цих груп користувачів (але не до "sudo"!).


2
visudoце команда, яка буде використовувати ваш редактор за замовчуванням для редагування файлу sudoers. Редагування цього файлу без нього може викликати біль і не рекомендується. Ви можете змінити бажаний редактор, видавшиsudo update-alternatives --config editor
earthmeLon

Або ви можете спробувати це VISUAL=vim visudoлише цей час. Але чудовий приклад зміни програм за замовчуванням, наприклад редактор.
Андерс

6

Так, ви можете налаштувати так, sudoщоб дозволити користувачеві виконувати певні команди з додатковими привілеями. Ви можете змінити це у своєму /etc/sudoersфайлі, але бажано не робити цього безпосередньо, а використовувати sudo visudoдля цього команду.

У встановленні системи за замовчуванням ви повинні знайти такий рядок:

pi ALL=(ALL) NOPASSWD: ALL

Він повідомляє, sudoщоб дозволити користувачеві piзапускати всі камери як rootкористувач, навіть не вводячи пароль. Ви можете змінити останній ALLі вказати список обмежених комами команд (з їх повним шляхом), дозволеним виконувати. У вашому випадку слід змінити цей рядок на:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Зауважте, що є ще один рядок, sudoersщо впливає на piкористувача:

%sudo   ALL=(ALL:ALL) ALL

Цей рядок дозволяє всім користувачам у групі sudo( %символ перед іменем означає, що це ім'я групи замість імені користувача) запускати ВСІ паролі за умови, що вони знають свій власний пароль . Якщо ви вийдете з цього рядка, користувач piзможе запускати всі інші команди, але йому буде запропоновано його пароль.

Якщо ви хочете не допустити цього, ви можете видалити цей рядок або видалити користувача piз sudoгрупи.

Після внесення змін у /etc/sudoersфайл ви можете перевірити, чи дійсно він робить те, що ви хочете, викликаючи sudo -l -U piкоманду.

Звичайно, ви можете створювати різні облікові записи та налаштовувати, sudoersнадаючи їм доступ до різних команд.


1

Травень 2018 р. Це все ще накопичено в концепції, але процедура змінилася з пізнішими версіями:

По-перше, файли слід безпосередньо редагувати у vi або nano, на листівці чи у emacs - залежно від вашого улюбленого редактора тексту.

Ім'я користувача pi не згадується в цьому файлі:

/etc/sudoers

і останній рядок файлу:

#includedir /etc/sudoers.d

Це каталог, який містить файл з назвою

010_pi-nopasswd

що містить цей єдиний рядок

pi ALL=(ALL) NOPASSWD: ALL

Це призводить до того, що я не вимагаю жодної команди sudo, поки я зареєстрований як користувач pi. (зауважте, що синтаксис повинен бути саме таким)

Це чудово.

Рядок групи %sudo ALL=(ALL:ALL) ALLвсе ще існує як

Отже, щоб відповісти на першу частину питання:

Коли я перемістив файл /etc/sudoers/sudoers.d/010_pi-nopasswd файл на один рівень каталогу, щоб включити помилку, а потім зачекав 15 хвилин, це призвело до того, що моя система Raspbian запросить власний пароль при використанні sudo, просто як у моїй системі Ubuntu 14.04 LTS.

Потім, коли я перемістив його туди, куди належить, навіть через 10 хвилин це вже не підказувало мені.

Не потрібно перезавантажувати. Voila, не вимагає введення пароля під час використання sudo

Моя тестова система lubuntu 14.04 LTS має таку ж установку, за винятком того, що файл 010_pi-nopasswd відсутній. lubuntu був встановлений з pi як кореневий користувач. Це підказувало мені щоразу, коли я використовував судо, а потім не підказував мене протягом 10 хвилин.

Я додав цей самий файл до системи Ubuntu так само, як налаштований Raspbian (пам’ятайте, chmod 0440 цього файлу, поки ви все ще знаходитесь у цьому 10-хвилинному вікні) - і

Voila, це більше не вимагає мене для власного пароля, коли я ввійшов як pi навіть через 15 хвилин.

Знову ж таки, зміна відбувається миттєво, не потребуючи перезавантаження.

Це відповідь у травні 2018 року про те, як відключити та увімкнути запит на використання команди sudo при вході в систему як користувач root pi. Інші користувачі та групи можуть бути налаштовані таким же чином.

--UPDATE для Ubuntu 16.04 LTS Ця система також дуже схожа. Однак найбільша відмінність полягає в тому, що 16.04 має набагато більш жорсткі права доступу до файлів, тому роботу потрібно виконувати в suрежимі. Якщо ви забули свій корінний пароль, ви можете скинути його із звичайного підказки, скориставшись командою " sudo passwd rootТоді" su, і тоді ви можете перейти звідти.


Щойно я знайшов це через Google - тож якщо я слідкую за цим, користувачеві все одно потрібно бути в групі sudoers, але /etc/sudo.d контролює, наскільки часто конкретний користувач запитує пароль?
лонстар

1
Так. Ви це отримали. Членство в компанії, sudoersяк правило, відбувається в момент створення користувача. Приклад використання: Ви помітите, що загальна командна рядок sudo apt-get update && sudo apt-get upgradeдвічі викликає sudo, це дратує те, що він може зупинитися і знову попросити пароль перед оновленням. Тому я встановив, що ніколи не підказуватиме своє ім’я для входу (pi), а потім використовувати, sudo apt-get update -y && sudo apt-get upgrade -yщоб воно також не зупинилося, щоб просити ОК зробити значні зміни. Щоб зробити його більш схожим на Unix. Просто роби те, що я прошу, і навіть якщо я піду, я хочу, щоб це було закінчено.
SDsolar

0

Безпечніше дозволити доступ sudo через SSH, ніж дозволити будь-якому користувачу встановлювати пакети. Якщо ви дійсно переживаєте за це, змініть його на /etc/sudoers:

pi ALL=(ALL) NOPASSWD: ALL

до

pi ALL=(ALL) PASSWD: ALL

Це означає, що вам буде запропоновано ввести пароль, коли ви вперше будете використовувати судо на будь-якому сеансі та знову через кілька хвилин. Ви не можете редагувати /etc/sudoersбезпосередньо; використовувати sudo visudoдля цього.

Схоже, що Кшиштоф увійшов у відповідь саме там. Ви дійсно впевнені, що вам потрібно перезавантажувати кожного разу, коли встановлюєте нові пакети? Якщо ви не встановлюєте нове ядро ​​або мікропрограмне забезпечення, не багато іншого потребує перезавантаження. Це якісна ОС у нас тут ...


3
Згадка про час timestampочікування - хороша ідея. За замовчуванням це 15 хвилин, BTW. Зауважте, що PASSWDце за замовчуванням (якщо NOPASSWDце не було зазначено раніше у цьому списку команд). Також зауважте, що /etc/sudoersможна редагувати безпосередньо без проблем, якщо ви знаєте, що робите. Використовуючи visudoвнесення змін у тимчасовий файл, запобігаючи автоматичному запису файлу в середині зміни (що може ввести синтаксичні помилки та / або проблеми з безпекою), він блокує цей файл проти декількох одночасних редагувань і робить деякі перевірки синтаксису перед тим, як записати файл.
Кшиштоф Адамський

Я думаю, що ОП оновлює те, що він рідко отримує нове ядро ​​... або якийсь колега сказав йому перезавантажуватися кожен раз, тому що він не хотів пояснювати, як ОП може помітити пакет ядра у списку оновлень.
orithena

TNX для цього коментаря, @Krzysztof. Я зробив виправлення у своїй відповіді. І ви маєте рацію щодо редагування. Насправді на моїй машині 16.04 я просто помістив пі-рядок прямо у файл sudoers, тому що sudoers.d просто містив ридме. Я залишив це просто так, але, принаймні, пі-права обробляються. (Мій фаворит-редактор VI / VIM, btw, але іноді буде використовувати листопад або Idle. Я знову не освоював emacs - 15 років - це довгий час - і я можу зробити набагато більше, швидше, в vim, ніж можу в emacs , на сьогоднішній день.) Ще раз дякую.
SDsolar

0

Просто альтернатива тому, що сказано в scruss, видаліть /etc/sudoers.d/010_pi-nopasswdфайл запуском sudo rm /etc/sudoers.d/010_pi-nopasswd. Набагато простіше і безпечніше редагувати головний файл sudoers, який може порушити sudo.

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