2

Я пишу небольшую программу с графическим интерфейсом для пользователя, чтобы редактировать свою учетную запись. Вы не можете запустить usermod как обычный пользователь, я ищу такую функциональность.

Изменение полного имени пользователя является наиболее важным. Любая другая помощь или информация была бы отличной.

2 ответа2

7

Утилиты chfn и chsh должны быть доступны в системе и должны делать то, что вы хотите - они изменят соответственно поле gecos (настоящее имя и т.д.) И оболочку входа в систему на основе настраиваемых правил, без необходимости писать код, который выполняется с правами суперпользователя (это не сложно, просто цена ошибок очень и очень высока).

Со страницы руководства chfn:

   The chfn command changes user fullname, office room number,
   office phone number, and home phone number information for a
   user's account. 

Со страницы руководства chsh:

   The chsh command changes the user login shell. This determines the name of the
   user's initial login command. A normal user may only change the login shell
   for her own account; the superuser may change the login shell for any account.
0

Лучший (и худший) ответ: вы пишете код setuid ().

Исходя из вашего вопроса, вы, вероятно, не должны делать такой код. В Linux вы не можете выполнить bash-скрипт в режиме setuid, если память служит, вам нужно написать и скомпилировать программу на C/C++, а затем дать пользователю root установить бит разрешений setuid для скомпилированного кода. В любом случае, скрипты setuid bash - плохая идея в плане безопасности.

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

Безопасные программы setuid

Пример кода GNU C

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .