Мне нужно разрешить пользователю martin
переключаться на пользователя martin-test
без пароля
su - martin-test
Я думаю, что это можно настроить в /etc/pam.d/su
. В этом файле уже есть строки, которые можно раскомментировать. Однако мне не нравится идея добавления пользователя martin
в группу wheel
. Я не хочу давать martin
больше привилегий, чем возможность переключиться на martin-test
. Я тоже не хочу использовать sudo
.
Как лучше всего это сделать, сохранив при этом martin
минимальные привилегии пользователя ?
users
password
authentication
pam
Мартин Вегтер
источник
источник
sudo
напримерsudo -u martin-test -i
. Есть ли причина, о которой вы спрашиваете конкретноsu
?sudo
только из-за этого (я обычно не используюsudo
и мне это не особо нравится). И я думаю, использованиеpam
более чистого и прозрачного способа сделать это.sudo
для чего предназначалось. Каковы же возражения, помимо того, что они обычно не используются?pam
, я бы предпочел этоsudo
. Еслиsudo
это единственная возможность, то это тоже хорошо. Мои возражения вsudo
основном идеологические: мне не нравится идея, когда пользователь выполняет администрированиеsudo foo
. Когда мне нужно сделать администрирование, я захожу как root. В противном случае я войду в систему как пользователь, эти две разные роли не должны смешиваться. Также у меня уже установленаpam
инфраструктура. Я не хочу устанавливать другуюsetuid
программу, которая может содержать ошибки безопасности.sudo foo
для конкретных команд. Судо имеет,sudo -s
который запустит оболочку. sudo - очень распространенная утилита, означающая, что ее безопасность была тщательно проверена, гораздо больше, чем какая-либо хитрость с использованием pam. Я также утверждаю, что получение корневой оболочки для задач гораздо более небезопасно, чем запуск определенных команд. Когда вы запускаете оболочку, вы запускаете все как root. Если какая-либо из этих вещей (например, простаяls
) имеет уязвимость безопасности, то вы только что открыли дыру в безопасности.Ответы:
Добавьте следующие строки прямо под
pam_rootok.so
строкой в вашем/etc/pam.d/su
:Эти строки выполняют проверки с использованием
pam_succeed_if.so
модуля. Смотрите также синтаксис файла конфигурации Linux-PAM, чтобы узнать больше оauth
строках.martin-test
. Если это так, ничего не происходит (success=ignore
), и мы продолжаем на следующей строке, чтобы проверить текущего пользователя . Если это не так, следующая строка будет пропущена (default=1
), и мы продолжим на последующих строках с обычными шагами аутентификации.martin
. Если это так, система считает процесс аутентификации успешным и возвращает (sufficient
). Если это не так, ничего не происходит, и мы продолжаем в последующих строках с обычными шагами аутентификации.Вы также можете ограничиться
su
группой, здесь группаallowedpeople
можетsu
без пароля:источник
Если вы не хотите менять или использовать группы
sudo
, используйте модуль pam, вызываемыйpam_exec
для выполнения внешних сценариев на этапе pam.Добавьте строку в вашу
/etc/pam.d/su
послеpam_rootok.so
строки:/path/to/script
имеет разрешения 755 (rwxr-xr-x) и следующий контент:Таким образом, этот сценарий существует с успехом, если
su
:martin
иmartin-test
.Видеть:
источник
/etc/pam.d/su
чтобы использоватьpam_access
для моей ситуации?pam_access
не могу этого сделать. Когдаsu
проходит через стек pam, он делает это как пользователь, на которого вы переходите, а не как пользователь, с которого вы переходите. Поэтому, если вы добавите правило, такое как+ : martin : ALL
, оно позволит любому перейти наmartin
. Даже если вы изменитеmartin
кmartin-test
, он все равно будет пусть кто - нибудь это сделать. Вам необходимо проанализировать как пользователя, от которого вы приходите, так и пользователя, на которого вы переходите. В самом деле, это именно то, чтоsudo
для ...Если у вас нет доступа к учетной записи root, но у вас есть пароль пользователя, которого вы хотите использовать для запуска команды, вы можете сделать следующее.
Просто установите ваш открытый ключ в авторизованных ключах toto
источник
Мое простое решение:
Если вы хотите избежать sudo любой ценой, я думаю, что это должно быть возможно поместить в скрипт:
Тем не менее, я не могу выяснить
chown root
иchmod +s ToTest.sh
биты, чтобы сделать это на самом деле работает:Я все еще работаю как мой обычный пользователь, как говорит мне эхо. И все равно требуется пароль sudo. Если бы он работал от имени root, можно было бы покончить с
sudo
последней строкой ...источник
bash
находится, почему вы предполагаете, что знаете, гдеenv
находится или существует ли оно вообще?). Но, в конце концов, вы не знаете, что именноbash
это будет. Он может исходить из каталога вызывающего пользователя и был скомпилирован минутой ранее из его исходного кода. Вы видите, куда я иду? Или пользователь может переопределитьwhoami
...