Como executar um aplicativo como outro usuário?

17

Eu uso o krusader para gerenciamento de arquivos. o problema é que o apache DocumentRootdeve estar abaixo chown www-data:www-data /path/to/www. então, usando o krusader (que é executado na minha conta) não tenho acesso de gravação /path/to/wwwenquanto realmente preciso. Não sei como outros desenvolvedores podem continuar fazendo coisas com essa restrição!

Gostaria de saber se eu poderia executar o krusader, pois www-dataassim poderei jogar facilmente com os arquivos. mas usando su - www-datame pediu www-dataa senha !!

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

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

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

PS: sudo e gksudonão ajudou:

$ 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/wwwe meu problema foi resolvido. mas ainda não consegui abrir o krusader como outro usuário!

Alexar
fonte

Respostas:

4

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

O DocumentRoot do Apache deve estar sob chown www-data: www-data / path / to / www

mas, na verdade, isso não é totalmente verdade: o Apache DocumentRootdeve ser legível 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, para que você possa definir o DocumentRoot como um diretório dentro da sua pasta pessoal, por exemplo:

DocumentRoot /home/user/my-project/my-document-root
Andrea Corbellini
fonte
obrigado! apenas funcionou. e sua explicação de por que isso funcionaria foi muito útil. como isso resolveu meu problema, mas ainda estou curioso para saber como posso abrir o krusader como outro usuário. outras soluções simplesmente não funcionaram.
Alexar # 13/10
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Onde uname = o nome do usuário representado. Visto lá: http://ubuntuforums.org/showthread.php?p=10399617

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

Anton S. Kraievoy
fonte
5

Se você estiver executando isso no sistema de menus, você precisará usar alacarte(Sistema> Preferências> Menu Principal) e alterar a entrada do krusader e adicionar na frente dele: o gksudo -u www-dataque deve produzir algo como:

gksudo -u www-data krusader

Isso iniciará a janela do prompt de tarefas administrativas que, de acordo com a página do GKSudo , é uma

Frontend GTK + para su e sudo

Usar apenas gksudo sem a -uopção executará o comando como root.

Marco Ceppi
fonte
obrigado, mas ele retorna: Nenhum protocolo especificadokrusader: não pode se conectar ao servidor X: 0.0
Alexar 10/10
2
antes de iniciar o comando gksudo, no terminal da sua conta, execute:xhost +
jet
4

Como Marco mencionou, você pode usar gksudo -u www-data <command>para executar comandos como outro usuário. Eu costumo usar isso para executar comandos, gdme 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 do kde, ele pode funcionar melhor kdesu. Mais detalhes sobre o kdesu aqui .

Eu usei gksudopara executar comandos como outros usuários "humanos" no sistema e, quando for solicitada a senha, digito a minha.

koushik
fonte
obrigado, mas o resultado é o seguinte: gksudo: Nenhum protocolo especificadokrusader: não pode conectar-se ao servidor X: 0.0
Alexar 10/10
Provavelmente para o krusader (um aplicativo kde), kdesué uma escolha melhor. Eu atualizei minha resposta. Você pode tentar isso?
K1051010
4

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

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

Mas acho que você não poderá executar aplicativos GUI a partir daí.

Normalmente, eu só possuo tudo /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 :)

Dr. Hannibal Lecter
fonte
como você adivinhou, eu não poderia executar aplicativos GUI a partir daí. ele sayedNo protocol specified krusader: cannot connect to X server :0.0
Alexar
A segunda solução não é uma opção para você? Seus dados não precisam pertencer a www-data, embora eu ache que seja preferido.
dr Hannibal Lecter
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 o <user-to-run-as>seu nome de usuário, é claro.

nicholas.alipaz
fonte
0

'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ê deseja executar um comando do console como um usuário diferente, use o comando 'sudo -u username command'.

Sense Hofstede
fonte
obrigado, eu corro isso e ele diz que algo assim [1] 12100parece ser o ID do processo; mas nada que eu vejo em ação.
Alexar # 10/10
0

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

sudo adduser $USER www-data

Nota: provavelmente você precisará sair da sessão para que a alteração entre em vigor.

Se, após esse comando, você ainda não conseguir alterar alguns arquivos, verifique se você tem permissão de gravação neles:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Andrea Corbellini
fonte
no entanto, não é uma solução para o problema geral, mas parece funcionar para o meu caso; vou tentar e reportar #
Alexar 10/10
0

Inspirado por Anton S. Kraievoy, usei uma solução semelhante, 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 login:

su - username

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

krusader

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

hariprasad
fonte