Как получить полномочия пользователя root для определенного пользователя, если у нас есть пароль root? [закрытый]

unfs3 мертво насколько я знаю; Ganesha является самым активным пространством пользователя проект сервера NFS прямо сейчас, хотя это не является абсолютно сформировавшимся.

Хотя это вручает различные протоколы, Samba является примером успешного файлового сервера, который работает в пространстве пользователя.

Я не видел недавнее сравнение производительности.

Некоторые другие проблемы:

  • Обычные приложения ищут файлы путем, но nfsd потребности смочь искать их дескриптором файла. Это хитро и требует поддержки со стороны файловой системы (и не все файловые системы может поддерживать его). В прошлом не было возможно сделать, это от пространства пользователя, но более свежих ядер добавило name_to_handle_at(2) и open_by_handle_at(2) системные вызовы.
  • Я, кажется, вспоминаю блокирующиеся вызовы захвата файла, являющиеся проблемой; я не уверен, как серверы пространства пользователя обрабатывают их в эти дни. (Вы связываете поток сервера, ожидающий на блокировке, или Вы опрашиваете?)
  • Более новая семантика файловой системы (атрибуты изменения, делегации, разделяемые блокировки) может быть реализована более легко в ядре сначала (в теории - они главным образом еще не были).
  • Вы не хотите должными быть проверять полномочия, квоты, и т.д., вручную - вместо этого Вы хотите изменить свой uid и полагаться на общее ядро vfs код, чтобы сделать это. И Linux имеет системный вызов (setfsuid(2)) это должно сделать это. По причинам я забываю, я думаю, что это оказалось более сложным для использования в серверах, чем это должно быть.

В целом ядро преимущества сервера является более близкой интеграцией с vfs и экспортируемой файловой системой. Мы можем восполнить это путем обеспечения большего количества интерфейсов ядра (таких как системные вызовы дескриптора файла), но это не легко. С другой стороны, некоторые люди файловых систем хотят экспортировать в эти дни (как gluster), на самом деле живут главным образом в пространстве пользователя. Они могут быть экспортированы ядром nfsd использование FUSE - но снова расширения интерфейсов FUSE могут требоваться для более новых функций, и могут быть проблемы производительности.

Короткая версия: хороший вопрос!

0
22.02.2017, 17:02
3 ответа

Как msv указанный в комментариях, целая предпосылка походит на экземпляр проблемы XY и очень мудрой безопасности кошмара, но я попытаюсь рассмотреть вопрос получения полномочий пользователя root без пароля.

Прежде всего echo "password" | su не будет работать потому что su не читает пароль из stdin, но открывается /dev/tty непосредственно для чтения. В то время как существуют инструменты (те, которые ожидают), который может использоваться для автоматизации интерактивных программ, подхода автоматического получения корневой оболочки для вызова определенной команды, поскольку корень является плохим с точки зрения безопасности, поскольку это нарушает принцип наименьшего количества полномочия.

Тем не менее аутентификация с su мог быть автоматизирован с expect использование чего-то как следующее:

#!/usr/bin/expect -f
spawn su
expect "Password:"
send "password\n";
interact

Если цель состоит в том, чтобы позволить вызов определенной команды как корень, не требуя корневых учетных данных, правильный инструмент для задания sudo. Например, если это требовало позволить пользователям войти wheel группа к выполнению useradd не вводя пароль, это может быть достигнуто путем добавления следующей строки файла конфигурации к /etc/sudoers с sudoedit команда:

%wheel    ALL = NOPASSWD: /usr/sbin/useradd

При установке таких полномочий благоразумно по крайней мере удостовериться, что возможность ограничивается конкретным пользователем или эксклюзивной группой.

Что касается использования этого метода для добавления пользователей с помощью сценария CGI или подобный, обычно не было бы желательно предоставить такие полномочия непосредственно стоящему с сетью программному обеспечению, но добавить уровень промежуточного разделения полномочия. Фактические полномочия можно было предоставить отдельному компоненту программного обеспечения, такому как демон, который веб-приложение попросит (через IPC) выполнять привилегированную операцию от своего лица. Таким образом, контроль ввода мог быть сделан и привилегированным процессом и веб-приложением, для уменьшения рисков годных для использования дефектов в веб-приложении, позволяющем вызов привилегированной операции (useradd в этом случае) с произвольными параметрами, или хуже, такими как выполнение произвольного кода с поднятыми полномочиями.

2
28.01.2020, 02:17
  • 1
    Спасибо за Ваш вход и объяснение. Одна вещь, которую я изучил, состоит в том, когда мы вводим 'su', это пытается читать из/dev/tty. Так возможность мы можем записать непосредственно в тот терминал и пропустить подсказку? Снова, это - то, что я думаю, я могу быть неправым, поскольку у меня есть очень меньше знания терминалов. Хорошо я могу звучать как бит, непреклонный связанный с вещью, которой я хочу достигнуть (пропуск подсказки), но я действительно хочу пропустить ту подсказку. инструменты –  atp9 26.09.2013, 09:28
  • 2
    как expect то, во что необходимо, в сущности, записать /dev/tty. Кроме инструмента командной строки существуют также библиотеки, доступные для Perl и Python. –  Thomas Nyman 26.09.2013, 09:40

Probabely Вы familar с sudo command, и /etc/suoders file если Вы хотите то же самое записи, можно прочитать его код.

2
28.01.2020, 02:17
  • 1
    Спасибо за Вас вход. Но что, если я, как предполагается, не использую команду sudo? У меня Есть ситуация, где я не могу использовать команду sudo.. –  atp9 26.09.2013, 08:40
  • 2
    Это работает над Linux. У меня есть еще один сервер, где я, как предполагается, делаю то же и его сервер AIX. Есть ли способ, которым я могу достигнуть того же самого. хорошо я действительно пробовал sudo, но похож, который не работает с AIX. это говорит, что нет никакой команды, такой как sudo. –  atp9 26.09.2013, 08:49
  • 3
    я знаю семейство BSD, имеет команду sudo, может быть AIX, имеет команду sudo. –  PersianGulf 26.09.2013, 09:25
  • 4
    хорошо.. Позвольте мне искать на этом. –  atp9 26.09.2013, 14:43
  • 5
    я понимаю, что наличие sudo на AIX откроет дыры в системе безопасности для пользователей, которые имеют немного знания о командах Unix/Linux/Экс-ан-Прованса и любой может играть вокруг. Мое намерение состоит в том, чтобы иметь корневой доступ только к одному пользователю (некорневой) счет на определенное время. Именно поэтому я пытаюсь избавиться от su командной строки, потому что у меня есть пароль root. –  atp9 30.09.2013, 09:35

Я знаю о двух инструментах, которые были разработаны для таких ситуаций: Ожидайте и Пустой. Они оба ожидают программы, чтобы послушать на стандартном входе, затем подать его предопределенное значение. Ожидайте основан на TCL и имеет относительно большую базу пользователей. Пустой имеет меньше зависимостей, но мог бы иметь меньше поддержки. Должно быть достаточно документации на каждой странице для решения этой простой проблемы.

http://expect.sourceforge.net/

http://empty.sourceforge.net/

1
28.01.2020, 02:17

Теги

Похожие вопросы