Como executar um aplicativo como outro usuário?

17

Eu uso krusader para coisas de gerenciamento de arquivos. O problema é que o DocumentRoot do apache deve estar abaixo de chown www-data:www-data /path/to/www . Então, usando o krusader (que é executado na minha conta) eu não escrevo acesso ao /path/to/www enquanto eu realmente preciso. Eu não sei como outros desenvolvedores podem continuar fazendo coisas com tal restrição!

Eu queria saber se eu poderia rodar o krusader como www-data , então eu seria capaz de tocar facilmente com arquivos. mas usando su - www-data me pediu a senha de www-data !!

Então, como posso executar um aplicativo (como o krusader) como outro usuário (como www-data) no Gnome?

ou existe alguma outra solução para o meu caso? (difícil estou muito curioso para saber a resposta!)

tenha em mente que sei que posso executá-lo como root ! mas isso causará alguns problemas de permissão ao usar cp e mkdir , você sabe.

PS: sudo e gksudo não ajudaram:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Nota final: de acordo com a melhor resposta, eu fiz chmod u+w /path/to/www e meu problema foi resolvido. mas eu ainda não consegui abrir o krusader como outro usuário!

    
por Alexar 09.10.2010 / 17:11

9 respostas

4

Repensando sobre essa questão (espero ter entendido seu problema corretamente, mas corrija-me se estiver errado), encontrei uma outra solução e acho que você não precisa executar o aplicativo como www-data nem para brincar com permissões. Você disse isso:

% bl0ck_qu0te%

mas, na verdade, isso não é totalmente verdade: o DocumentRoot do Apache deve ser legível por www-data , mas não necessariamente pertencente a ele. Por padrão, no Ubuntu Desktop, todos os arquivos e diretórios que você cria são legíveis por todos, então você pode configurar o DocumentRoot para um diretório dentro de sua pasta pessoal, por exemplo:

DocumentRoot /home/user/my-project/my-document-root
    
por Andrea Corbellini 12.10.2010 / 14:59
7
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Onde uname = o nome do usuário representado. Visto lá: link

Funciona em minha caixa independente, não há som no bifurcado skype e ~ / .profile.d não é executado como deveria.

    
por Anton S. Kraievoy 28.01.2011 / 15:14
5

Se você estiver executando isso no sistema de menu, você vai querer usar alacarte (System > Preferências > Menu Principal) e alterar a entrada para krusader e adicionar na frente: gksudo -u www-data que deve produzir algo como:

gksudo -u www-data krusader

Isso iniciará a janela do prompt de tarefas administrativas que, de acordo com a GKSudo Manpage , é um

% bl0ck_qu0te%

Usando apenas o gksudo sem a opção -u , o comando será executado como root.

    
por Marco Ceppi 09.10.2010 / 18:43
4

Como Marco mencionou, você pode usar gksudo -u www-data <command> para executar comandos como outro usuário. Eu rotineiramente uso isso para executar comandos como gdm e até agora nunca me pediu nada além da minha própria senha.

Se você estiver usando o kde, o equivalente é kdesu -u www-data krusader . Acho que, como o krusader é um aplicativo kde, ele pode funcionar melhor com kdesu . Mais detalhes sobre o kdesu aqui .

Eu usei gksudo para executar comandos como outros usuários "humanos" no sistema e, quando sou solicitada a senha, eu digito os meus.

    
por koushik 09.10.2010 / 17:17
4

Para se tornar www-data com sua própria senha, use isto:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Mas, não acho que você poderá executar aplicativos GUI de lá ...

Normalmente, só tenho tudo em /var/www , mas permito acesso de leitura a todos:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Espero que isso alivie sua dor:)

    
por dr Hannibal Lecter 10.10.2010 / 18:30
3

Eu acredito que você precisa executar o seguinte no terminal:

xhost +SI:localuser:<user-to-run-as>

Então você pode fazer:

sudo su - <user-to-run-as>

Por fim, execute seu aplicativo:

krusader

Isso deve ser feito, apenas certifique-se de substituir <user-to-run-as> pelo seu nome de usuário.

    
por nicholas.alipaz 27.02.2013 / 05:40
0

Ambos 'gksu' e 'kdesu' são interfaces gráficas para 'sudo', que é a ferramenta que você deve usar quando estiver em um ambiente somente de texto. As ferramentas 'gksu' e 'kdesu' exigem que você esteja no modo gráfico, o que explica os erros "não é possível conectar ao servidor X".

se você quiser executar um comando de console como um usuário diferente, use o comando 'sudo -u username command'.

    
por Sense Hofstede 10.10.2010 / 18:02
0

A execução de um aplicativo gráfico em www-data oferece vários problemas. Uma coisa que você pode fazer é adicionar-se ao grupo www-data, para poder alterar todos os arquivos de que precisa:

sudo adduser $USER www-data

Observação: provavelmente, você precisará fazer logout da sessão para que a alteração entre em vigor.

Se, depois desse comando, você ainda não conseguir alterar alguns arquivos, apenas garanta a permissão de gravação neles:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
    
por Andrea Corbellini 10.10.2010 / 18:41
0

Inspirado por Anton S. Kraievoy Eu usei uma solução similar, que funciona para mim. No usuário, que usando o Krusader, adicionei um novo usuário ao xhhost:

xhost +SI:localuser:username

Do que gentilmente faça o login:

su - username

O krusader é iniciado corretamente como uma nova instância em um novo usuário:

krusader

Note que uma nova configuração será criada em ~ / .kde / share / config / krusaderrc.

    
por hariprasad 17.09.2014 / 11:32