Как я могу запустить процесс как его владелец или стать его владельцем без входа в систему?

Возможно, ваш почтовый сервер настроен на использование смарт-хоста.

Ищите это в exim.conf:

  transport = remote_smtp
  route_list = * REMOTEHOST

где REMOTEHOST — имя хоста или IP-адрес -

Если это IP-адрес -, выполните для него обратный просмотр . Если это под «electric.net», вот ваш ответ.

Кроме того, проверьте свои собственные имена хостов, чтобы узнать, не настраивает ли ваш интернет-провайдер одно из них через DHCP с доменом в сети electric.net:

hostname -A

0
19.12.2018, 19:31
1 ответ

В Unix существует 3 способа изменить пользователя процесса.

2 способа изменения пользователя процесса на системном уровне

  • если процесс имеет возможность CAP _SETUID, традиционно root имеет эту возможность (и все остальные возможности ), тогда он может использовать setuid, setreuid, setresuid, setfsuid, системные вызовы, чтобы перейти к любому другому пользователю. Любой другой пользователь может перемешивать идентификаторы uid :У процесса есть 3 uid, он может перемещать их, по желанию :менять их местами или удалять, пока не останется один. Он не может добавить uids, если у него нет возможности CAP _SETUID. В общем, процесс может только терять привилегии или перемещать их, используя эти системные вызовы. Эти вызовы позволяют продолжить выполнение программы.
  • execa suidисполняемый файл :Если исполняемый файл имеет установленный бит suidи если он имеет допустимый тип (не скрипты, не java, не … ), то когда он запускается, его эффективный идентификатор пользователя изменяется на идентификатор владельца файлов. (то же самое можно сделать для группы с sgidбитом ). Это единственный способ получить привилегии. Текущая программа завершается при вызове exec, она заменяется новой программой, но это тот же процесс, он также наследует открытые файлы (, т.е. стандартный ввод, стандартный вывод, стандартный вывод ).

forkдоза не изменить пользователя. Разветвленный процесс является точной копией своего родителя, за некоторыми исключениями (, см. man fork). В частности, uid, gid и возможности не изменяются.

Вспомогательные методы

Эти программы используют 2 системных метода, описанных выше.

  • используйте sudoилиsu:
    • suзапросит пароль другого пользователя.
    • sudoзапросит ваш пароль,но будет работать, только если вы зарегистрированы в файле sudoers.

sudo, su, login, cronи т. д. используют 2 системных метода. (И создаст новый процесс. Другие системные методы не создают новый процесс.)

Что делает sudo, su?

#↳ ll /usr/bin/sudo
-rwsr-xr-x 1 root root 155K Sep  9  2017 /usr/bin/sudo*

Как видно из использования, исполняемый файл sudoпринадлежит пользователю root и имеет бит suid, установленный (на s, где вы ожидаете увидеть первыйx).

Когда sudoзапускается, он запускается от имени пользователя root (не пытайтесь это сделать, если вы не знаете, что делаете ). Затем он выполняет проверки безопасности. Затем он использует set??uid, чтобы стать требуемым пользователем, затем execс (и, возможно, разветвляет )требуемую программу.

Запуск процесса без входа в систему

Использовать службу запуска по времени.

  • хрон
  • в

Отправить сетевое сообщение, например. веб-сервер -может запускать задачу в ответ на веб-запрос.

Использовать автоматический вход в систему :использовать sshдля запуска процесса с помощью сценария на другом компьютере.

1
28.01.2020, 02:41

Теги

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