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!

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

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


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.


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.


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 :)


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.


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'.


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.