Как запустить процесс с определенной группой?

22

Я должен запустить приложение с моими собственными правами пользователя, но группа должна быть другой. Итак, вместо:

$ ps -eo "user,group,args" | grep qbittorrent
morfik   morfik      /usr/bin/qbittorrent

это должно быть например:

$ ps -eo "user,group,args" | grep qbittorrent
morfik   p2p      /usr/bin/qbittorrent

Это также должно быть сделано без запроса пароля. Есть ли способ добиться этого?

Михаил Морфиков
источник
Извините, я не могу комментировать, поэтому поместите это в область ответа. В нашем случае sg не работает. Пользователь обычно должен использовать команду "newgrp", чтобы перейти в группу "jazz", чтобы иметь возможность перейти в определенный каталог "dirA" из командной строки. Но он не может найти способ заставить "nautilus - browser" спуститься в эту "dirA". Он попробовал "ng jazz -c 'nautilus --browser'", но он все еще не может перейти в "dirA". Как придешь?
CLTECH

Ответы:

31

Использование sg.

Например, следующая команда вызовет sleepгруппуgroup-name

sg group-name -c 'sleep 100'

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

NAME
   sg - execute command as different group ID

SYNOPSIS
   sg [-] [group [-c ] command]

DESCRIPTION
   The sg command works similar to newgrp but accepts a command. The
   command will be executed with the /bin/sh shell...
MKC
источник
Довольно просто, и это работает. :)
Михаил Морфиков
2

sg попросить пароль группы

У sudo есть опция -g, которая делает то же самое по паролю пользователя.

это требует упоминания группы в sudoers

Я изменил / etc / sudoers на

%wheel All=(ALL) ALL

в

%wheel All=(ALL:ALL) ALL

Иногда это удобнее

Безопасный способ редактировать sudoers это:

sudo sudoedit /etc/sudoers
ММВ-ру
источник
0

Чтобы избежать ввода пароля с помощью sg, добавьте себя в качестве члена группы

    sudo gpasswd -M morfik p2p

Вам также может понадобиться удалить пароль и ограничить доступ только для членов

    sudo gpasswd -r p2p
    sudo gpasswd -R p2p

человек gpasswd даст вам больше деталей

FeignInt
источник