Я пытаюсь скопировать некоторые файлы пользователю root с очень низким (почти никаких привилегий). Мне нужно разрешить кому-то доступ к низкой учетной записи копировать некоторые файлы на более высокую учетную запись. Я подумал об использовании сценария bin/Bash, но я не хочу, чтобы в файле просматривался какой-либо пароль.Переключиться на учетную запись root в Linux при выполнении двоичного кода C++ с паролем, ВОЗМОЖНО?
Я решил создать приложение на C++, у которого есть пароль учетной записи, которую я хотел бы передать командам su/setuid. Я знаю, что пароль можно просмотреть в двоичном формате, но это не проблема. Недостаточно пароля не в обычном тексте.
Моя проблема заключается в том, что я не могу понять, как «войти» в качестве пользователя, которому необходимо обновить файлы для службы, запущенной в этой учетной записи. У меня есть имя учетной записи пользователя, которое является localadmin, и пароль для этой учетной записи. Но как я могу передать их в Linux для копирования файлов в home/подкаталог localadmin из приложения C++?
Я пытался в C++:
системы ("су localadmin"); // Это запрашивает пароль, но не знает, как передать пароль.
setuid (0); // Опять же, где я могу передать пароль, чтобы получить привилегии учетной записи? Все, что я получаю, это «операция не разрешена».
Приносим извинения, если это простой вопрос. Я просто пытаюсь запустить команды как localadmin и сделать это.
Запись пароля root в вашей программе является плохой идеей по нескольким причинам, в том числе по крайней мере (1) можно извлечь пароль из двоичного файла, и (2) ваша программа ломается, если пароль root изменен. Вот почему программы, которые должны предоставлять повышенные привилегии непривилегированным пользователям, обычно настраиваются как setuid-root, который является функцией их владения и режима, а не их реализации. –
Звучит как [проблема XY] (http://meta.stackexchange.com/q/66377). Как насчет общего каталога с ACL (списком контроля доступа), который дает привилегии без привилегий пользователя? – Peter
@JohnBollinger, спасибо за ваш ответ и очень благодарен. Я действительно понимаю последствия встраивания пароля в двоичный файл, но это не проблема. Человек, которому я даю это, не имеет такого знания. Мне просто нужен этот двоичный файл, чтобы выполнять все команды в качестве пользователя root. Я надеялся выполнить это, просто предоставив им двоичный файл. –