У меня есть сервер HP-UX, на котором мне нужно создать специальную учетную запись пользователя для приложения, с которым будет взаимодействовать, и эта учетная запись должна иметь полные привилегии root. Судо здесь не вариант. Единственное, что я могу придумать, - это присвоить учетной записи UID 0. Сработает ли это, чтобы сделать учетную запись функционально root? Есть ли лучший способ сделать это без использования sudo?
Создание другой учетной записи с uid 0 может привести к путанице и, возможно, нарушению поведения.
Я бы не хотел запускать любую учетную запись, которую нельзя запустить через sudo
или setuid
.
Есть несколько способов использования sudo
когда система подключается к такой учетной записи, как:
ssh
, можно указать сценарий для запуска при подключении.Я запускал различные процедуры резервного копирования, которым необходим root-доступ для доступа ко всем файлам. Все они связаны с ограниченным доступом, обычно через некорневую учетную запись.
sudo
можно настроить для запуска команд без запроса пароля. Создать сценарий оболочки, повышающий до root
доступ через sudo
и запускает нужную команду.
Программы с установленным битом setuid запускаются от имени пользователя, которому они принадлежат. Как правило, это более безопасно, если программа не разрешает доступ к неограниченной оболочке.
Я бы не рекомендовал пытаться присвоить UID 0 другой учетной записи. В системе должен быть 1 пользователь root.
С помощью sudo
запускать команды без пароля - это вариант (лично мне не нравится код, который должен запускаться от имени пользователя root; но он у вас есть, так что давайте будем реалистами). Некоторые предостережения по этому поводу:
В твоем /etc/sudoers
файл, убедитесь, что NOPASSWORD
option - последняя строка для этого пользователя. При чтении sudoers последняя строка перекрывает предыдущие.
Укажите абсолютный путь к каталогам, которые вам нужны для этого пользователя.
В /etc/sudoers
включают Defaults env_reset
чтобы сбросить среду до переменных по умолчанию.
/ etc / sudoers:
...
##
Defaults env_reset
...
##
app_user ALL=NOPASSWORD : /path/to/application, /usr/bin/su - root
...
(Измените путь на su
в соответствии с вашим местоположением HP-UX.)
Прошло много времени с тех пор, как я использовал HP-UX, поэтому, пожалуйста, проверьте форматирование с тем, что у вас /etc/sudoers
файл сейчас.
Вы не можете назначить другой учетной записи UID 0, не нарушив все.
Как отметил Рич Хомолка в комментарии, в ядре есть код, который явно проверяет uid 0, когда необходимо проверить пользователя root, что означает, что root всегда имеет как минимум uid 0.
https://superuser.com/questions/626843/does-the-root-account-always-have-uid-gid-0
Кроме того, я надеюсь, что вы не используете этот сервер ни для чего другого, потому что предоставление приложению полных привилегий root без ограничения его с помощью sudo как минимум очень опасно. Особенно приложение, которое, как вы говорите, подключается по сети.