Um processo de espaço do usuário pode iniciar um subprocesso raiz?

0

Estou usando o Ubuntu Linux e tenho o software proprietário do Viber em execução nele. Hoje salvei um arquivo usando o Viber e percebi que ele foi armazenado no sistema de arquivos com o usuário root como seu proprietário. Eu cavei mais e percebi que há dois processos em execução, um sob o meu nome de usuário, outro sob a raiz. Alguém poderia me explicar se é possível que um processo no espaço do usuário inicie outro subprocesso como raiz?

Aqui estão as permissões do arquivo armazenado com o Viber:

mehdix@spielplatz:~/New Folder2$ ls -l
total 240
-rw-rw-r-- 1 root root 245455 Okt  9 09:50 saved_with_viber

e aqui está o resultado do comando "ps":

mehdix@spielplatz:~$ ps axuf | grep Viber
mehdix   23857  0.0  0.0   4444   644 ?        S    Okt08   0:00          \_ /bin/sh /usr/share/viber/Viber.sh
root     23864  0.0  1.8 2794592 146604 ?      Sl   Okt08   0:17          |   \_ /usr/share/viber/Viber
mehdix   26484  0.0  0.0  17432   964 pts/5    S+   09:43   0:00                  \_ grep --color=auto Viber
mehdix@spielplatz:~$

Aqui está a saída de "ls -l / usr / share / viber / Viber":

mehdix@spielplatz:~$ ls -l /usr/share/viber/Viber
-rwsr-sr-x 1 root root 1733113 Okt 31  2013 /usr/share/viber/Viber

e aqui está o conteúdo de '/usr/share/viber/Viber.sh':

mehdix@spielplatz:~$ cat /usr/share/viber/Viber.sh
#!/bin/sh
appname='basename $0 | sed s,\.sh$,,'

dirname='dirname $0'
tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then
  dirname=$PWD/$dirname
fi

LD_LIBRARY_PATH=$dirname
export LD_LIBRARY_PATH
    
por Mehdi Sadeghi 09.10.2014 / 09:48

1 resposta

2

Claro. Um arquivo com o conjunto bit de permissão SUID será executado no proprietário do arquivo, e não no usuário que o lançou. Um arquivo SUID pertencente à raiz será executado na raiz.

sudo é um exemplo de tal programa. Você pode iniciá-lo a partir de qualquer usuário, mas ele será executado sob o root e poderá iniciar outros processos com privilégios de root.

Como você pode ver na sua saída ls -l , este é o método usado aqui: o arquivo é de propriedade de root e o bit SUID é definido (conforme indicado pelo s em vez de x para permissões de execução do usuário). Na verdade, parece que o bit SGID também está definido.

    
por 09.10.2014 / 11:01