Поскольку я иногда использую свой Pi поверх SSH, я понял, что опасно разрешать SSH доступ к командам sudo. Таким образом, я планирую отключить это разрешение в ближайшее время. Но когда я устанавливаю пакеты, мне обычно приходится перезагружаться. В настоящее время это разрешено только через суперпользователя.
sudo reboot
Можно ли как-то отредактировать разрешения пользователя pi, чтобы он мог перезагружать (и устанавливать) пакеты?
Могу ли я иметь несколько учетных записей с разными разрешениями?
Благодарность
Ответы:
Для пояснения: нет никаких «команд sudo», есть только команды, которым для корректной работы требуются привилегии root, и
sudo
это команда для получения их для одной команды:sudo
просто запускает данную команду как root (читается как «sudo» как императив предложение "суперпользователь, сделай что-нибудь!"). Правила, по которым пользователи могут это делать, записаны в/etc/sudoers
. При установке по умолчанию в Raspbian пользователь по умолчанию "pi" получает свои разрешения из этой строки:Это означает: «пользователю 'pi' на ВСЕХ хостах разрешено переключаться на ВСЕХ пользователей, и ему НЕ нужно вводить свой ПАРОЛЬ при использовании ВСЕХ (читай: любых) команд". (Я использовал сумасшедшую грамматику здесь, чтобы сохранить порядок строк. Примечание о том, почему существует способ различать хосты: таким образом, один и тот же файл sudoers может быть распределен по нескольким машинам в сети, поэтому у сетевого администратора меньше работы) ,
Может случиться так, что возможность запускать команды с использованием sudo без ввода пароля администратора - это причина, по которой вы считаете опасным использование sudo через SSH (я не слышал об общей проблеме с этим ... так что вы могли бы объясните, какую именно опасность вы имеете в виду?).
Конечно, у вас может быть несколько пользователей с разными разрешениями. Но я боюсь, что использование sudo все еще является лучшим способом управления этими разрешениями.
Итак, я надеюсь, что этот маленький рецепт здесь то, что вам нужно:
Это создаст пользователя «admin», попросит пароль, создаст его домашний каталог и т. Д.
Это поместит пользователя «admin» в группы «sudo» и «adm». А поскольку разрешениями в Linux управляют путем добавления пользователей в группы пользователей, это дает пользователю «admin» все необходимые ему разрешения и разрешения. Есть строка,
/etc/sudoers
которая позволяет любому пользователю, входящему в группу "sudo", выполнять любую команду от имени пользователя root; и эта привилегия - то, что нам нужно для пользователя с правами администратора (добавление его в «adm» позволяет ему читать некоторые файлы журнала/var/log
без использованияsudo
и некоторые другие вещи). Вам все еще нужно использовать,sudo
когда вы вошли в систему как администратор - но теперь sudo снова и снова запрашивает пароль администратора, если вы не использовали sudo в течение пяти минут.Теперь выйдите и войдите как пользователь "admin". Проверьте,
работает. Если это так, вы можете отозвать некоторые привилегии пользователя «pi», потому что теперь вы уверены, что у вашего администратора есть нужные привилегии:
Это выбрасывает пользователя "pi" из группы пользователей "sudo".
Это запустит редактор, который позволит вам редактировать
/etc/sudoers
. Поместите хэш-тег (#
) перед строкой, начинающейся с «пи», закомментировав ее (или просто удалите). Затем сохраните и выйдите из редактора, visudo немедленно перезагрузит правила привилегий. Теперь пользователю "pi" больше не разрешено использовать sudo.После этого вы можете повторно войти в систему как пользователь «пи». Если вы когда-нибудь захотите переключиться на администратора для некоторых команд, используйте
su
(«переключить пользователя»):Если вы хотите добавить больше пользователей: используйте,
sudo adduser <name>
как указано выше, затем проверьте список групп пользователей, которые есть у пользователя "pi":Используйте,
sudo adduser <username> <groupname>
чтобы добавить своего нового пользователя в несколько из этих групп пользователей, позволяя ему использовать аудио, ускоренное видео, использовать подключаемые устройства и т. Д. Если не уверены, добавьте его во все эти группы пользователей (но не в «sudo»!).источник
visudo
это команда, которая будет использовать ваш редактор по умолчанию для редактирования файла sudoers. Редактирование этого файла без него может быть болезненным и не рекомендуется. Вы можете изменить предпочитаемый редактор,sudo update-alternatives --config editor
VISUAL=vim visudo
только на этот раз. Но отличный пример изменения стандартных программ, таких как редактор.Да, вы можете настроить,
sudo
чтобы пользователь мог запускать только определенные команды с дополнительными привилегиями. Вы можете изменить это в своем/etc/sudoers
файле, но желательно не делать это напрямую, а использоватьsudo visudo
для этого команду.При установке системы по умолчанию вы должны найти такую строку:
Он говорит,
sudo
чтобы позволить пользователюpi
запускать все команды какroot
пользователь, даже не предоставляя пароль. Вы можете изменить последнийALL
и указать разделенный запятыми список команд (с их полным путем), которые могут быть запущены. В вашем случае вы должны изменить эту строку на:Обратите внимание, что есть еще одна строка,
sudoers
влияющая наpi
пользователя:Эта строка позволяет всем пользователям в группе
sudo
(%
символ перед именем означает, что это имя группы, а не имя пользователя) используют ВСЕ пароли, если они знают свой СОБСТВЕННЫЙ пароль . Если вы покинете эту строку, пользовательpi
сможет запускать все остальные команды, но у него спросят его пароль.Если вы хотите предотвратить это, вы можете удалить эту строку или удалить пользователя
pi
изsudo
группы.После внесения изменений в
/etc/sudoers
файл вы можете проверить, действительно ли он выполняет то, что вы хотите, вызвавsudo -l -U pi
команду.Конечно, вы можете создавать разные учетные записи и настраивать
sudoers
предоставление им доступа к различным командам.источник
Май 2018, это все еще точно в концепции, но процедура изменилась с более поздними версиями:
Во-первых, файлы должны редактироваться напрямую в vi, nano, leafpad или emacs, в зависимости от того, какой ваш любимый текстовый редактор.
Имя пользователя pi не упоминается в этом файле:
и последняя строка файла выглядит так:
Это каталог, который содержит файл с именем
которая содержит эту единственную строку
Это приводит к тому, что я не запрашиваю команду sudo, пока я вошел в систему как пользователь pi. (обратите внимание, синтаксис должен быть именно таким)
Это круто.
Строка группы
%sudo ALL=(ALL:ALL) ALL
все еще там, какИтак, чтобы ответить на первую часть вопроса:
Когда я переместил файл /etc/sudoers/sudoers.d/010_pi-nopasswd на один уровень каталога, чтобы произошла ошибка включения, затем подождал 15 минут, это заставило мою систему Raspbian запросить мой собственный пароль при использовании sudo, просто как моя система Ubuntu 14.04 LTS раньше делала.
Затем, когда я переместил его обратно туда, где он должен, даже через 10 минут он больше не подсказывал мне.
Перезагрузка не требуется. Вуаля, не запрашивая пароль при использовании sudo
Моя тестовая система lubuntu 14.04 LTS имеет такую же настройку, за исключением того, что файл 010_pi-nopasswd отсутствовал. lubuntu был установлен с пи в качестве пользователя root. Это подсказывало мне каждый раз, когда я использовал sudo, а затем не подсказывало мне в течение 10 минут после этого.
Я добавил этот же файл в систему Ubuntu точно так же, как настроен Raspbian (не забудьте chmod 0440 для этого файла, пока вы все еще находитесь в этом 10-минутном окне) - и
Вуаля, он больше не запрашивает мой собственный пароль, когда я вошел в систему как пи даже через 15 минут.
Опять же, изменение происходит мгновенно без перезагрузки.
Это ответ от мая 2018 года о том, как отключить и включить запрос на использование команды sudo при входе в систему от имени пользователя root pi. Другие пользователи и группы могут быть настроены таким же образом.
- ОБНОВЛЕНИЕ для Ubuntu 16.04 LTS Эта система также очень похожа. Однако самое большое отличие состоит в том, что 16.04 имеет более узкие права доступа к файлам, поэтому работа должна выполняться в
su
режиме. Если вы забыли свой пароль root, вы можете сбросить его из обычного приглашения с помощью команды «sudo passwd root
Тогда»su
, и вы сможете перейти оттуда.источник
sudoers
обычно делается во время создания пользователя. Пример использования: вы заметите, что общая командная строкаsudo apt-get update && sudo apt-get upgrade
вызывает sudo дважды, но раздражает, что она может остановиться и снова запросить пароль перед обновлением. Поэтому я установил мой так, чтобы он никогда не запрашивал одно имя для входа в систему (pi), а затем использовалsudo apt-get update -y && sudo apt-get upgrade -y
его, чтобы он также не переставал запрашивать ОК для внесения значительных изменений. Чтобы сделать его более похожим на Unix. Просто делай, что я прошу, и даже если я уйду, я хочу, чтобы это закончилось.Безопаснее разрешить доступ sudo через SSH, чем разрешить любому пользователю устанавливать пакеты. Если вы действительно беспокоитесь об этом, измените строку
/etc/sudoers
с:в
Это означает, что вам будет предложено ввести пароль при первом использовании sudo в любом сеансе и снова через несколько минут. Вы не можете редактировать
/etc/sudoers
напрямую; использоватьsudo visudo
для этого.Похоже, Кшиштоф запрыгнул с ответом прямо там. Вы действительно уверены, что вам нужно перезагрузить компьютер каждый раз, когда вы устанавливаете новые пакеты? Если вы не устанавливаете новое ядро или прошивку, больше ничего не нужно перезагрузить. Это качественная ОС у нас здесь ...
источник
timestamp
тайм-аута - хорошая идея. По умолчанию это 15 минут. Обратите внимание, чтоPASSWD
это по умолчанию (еслиNOPASSWD
не было указано ранее в этом списке команд). Также обратите внимание, что/etc/sudoers
можно редактировать напрямую без проблем, если вы знаете, что делаете. Использованиеvisudo
вносит изменения во временный файл, предотвращая автоматическую запись файла в середине изменения (что может привести к синтаксическим ошибкам и / или проблемам безопасности), оно блокирует этот файл от нескольких одновременных изменений и выполняет некоторые проверки синтаксиса перед записью файла.Просто альтернатива тому, что сказал scruss, удалите
/etc/sudoers.d/010_pi-nopasswd
файл, запустивsudo rm /etc/sudoers.d/010_pi-nopasswd
. Намного проще и безопаснее, чем редактировать основной файл sudoers, который может сломать sudo.источник