сменить владельца процесса на Mac / Linux? - PullRequest
3 голосов
/ 15 ноября 2011

У меня есть программа, которая работает от имени пользователя root. Это приложение вызывает другую программу (processA) для запуска. Когда processA запущен, он принадлежит пользователю root, но я хочу, чтобы его владельцем был текущий пользователь. Как это сделать?

1 Ответ

3 голосов
/ 15 ноября 2011

Ну, это немного сложно ... Зависит, если это демон (служба) или вы запускаете эту команду / приложение.

Для второго случая вы можете использовать команду "su" . Вот короткий пример.

1. Я создаю простой скрипт со следующим содержимым (он будет работать в фоновом режиме в течение 100 секунд и выведет список процессов, соответствующий этому сценарию):

#!/bin/bash
sleep 100 &
ps faux | grep test.sh

2. Я запускаю команду «su», например, (в данный момент я вошел в систему как «root» и хочу запустить этот скрипт как пользователь «песочницы»):

su - sandbox -c ./test.sh

sandbox = имя пользователя, который будет запускать эту команду. -c ./test.sh = означает, что он выполнит эту команду

3. Вывод (первый столбец = пользователь, которому принадлежит этот процесс):

root@i6:/web-storage/sandbox# su - sandbox -c ./test.sh
sandbox  18149  0.0  0.0  31284  1196 pts/0    S+   20:13   0:00                      \_ su - sandbox -c ./test.sh
sandbox  18150  0.0  0.0   8944  1160 pts/0    S+   20:13   0:00                          \_ /bin/bash ./test.sh
sandbox  18155  0.0  0.0   3956   644 pts/0    S+   20:13   0:00                              \_ grep test.sh
root@i6:/web-storage/sandbox#

Надеюсь, это поможет, Stefan

...