разрешения — C ++ Passwd, привилегии root

Я написал сценарий c ++, который отключает или включает пользователей в среде Solaris. Это делается путем вызова passwd через

sprintf(cmd, "/usr/bin/passwd -l %s", argv[1]);

Однако скрипт выполняется не пользователем root, а другим пользователем.
Пока выполняется скрипт, изменения в passwd не выполняются. Кажется, это проблема с разрешением пользователя на passwd.

Однако, похоже, что только root может модифицировать passwd. Это правда? Можно ли что-то еще сделать? В том смысле, что passwd могут быть изменены другими пользователями?

2

Решение

Вам нужно разрешение root, чтобы сделать это.
Тем не менее, вы можете настроить sudo разрешить выполнение вашего бинарного файла как root для указанного пользователя.

Другим решением было бы установить бинарный файл. Тем не менее, следует соблюдать осторожность при этом.

1

Другие решения

Процесс должен иметь CAP_SETUID возможность и идентификатор пользователя должны быть установлены в 0,

0

По вопросам рекламы [email protected]