如何以其他用户身份运行应用程序?


17

我使用krusader进行文件管理。问题是apache DocumentRoot应该在chown www-data:www-data /path/to/www。因此,使用krusader(在我的帐户下运行)/path/to/www在真正需要时我没有写访问权限。我不知道其他开发人员如何才能继续如此限制!

我想知道我是否可以运行krusader,www-data这样我就可以轻松播放文件了。但是使用su - www-data询问我www-data的密码!

那么,如何在Gnome中以另一个用户(例如www-data)的身份运行应用程序(例如krusader)?

还是我的情况有其他解决方案?(艰难的是,我真的很好奇知道答案!)

请记住,我知道我可以root用户身份运行它!但这会在使用cp和时引起一些权限问题mkdir

PS: sudogksudo没有帮助:

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

最后说明: 根据最佳答案,我做到了chmod u+w /path/to/www,问题也解决了。但是我仍然没有以其他用户的身份成功打开krusader!

Answers:


4

重新思考这个问题(我希望能正确理解您的问题,但是如果我错了,请纠正我),我找到了另一个解决方案,我认为您不需要将应用程序作为www-data运行,也不需要使用权限。你之前这么说:

Apache的DocumentRoot应该位于www-data:www-data / path / to / www下

但是实际上,这并非完全正确:Apache DocumentRoot必须可由读取www-data,但不一定由它拥有。默认情况下,在Ubuntu桌面中,您创建的所有文件和目录对所有人都是可读的,因此您可以将DocumentRoot设置为主文件夹内的目录,例如:

DocumentRoot /home/user/my-project/my-document-root

谢谢!它只是工作。您对为何可行的解释非常有帮助。因为这解决了我的问题,但我仍然很想知道如何以其他用户身份打开krusader。其他解决方案只是行不通。
Alexar


5

如果您是从菜单系统中运行此菜单,则需要使用alacarte(系统>首选项>主菜单)并更改krusader的条目并在其前面添加:gksudo -u www-data应该会产生以下内容:

gksudo -u www-data krusader

这将启动管理任务提示窗口,根据GKSudo手册页,该窗口是

Su和sudo的GTK +前端

仅使用gksudo而不使用-u开关将以root身份运行命令。


谢谢,但它返回:未指定协议
krusader

2
在启动gksudo命令之前,在您帐户下的终端中运行:xhost +
jet

4

就像Marco提到的那样,您可以使用gksudo -u www-data <command>另一个用户身份运行命令。我通常使用它来运行命令,gdm到目前为止,除我自己的密码外,它从未问过我什么。

如果您使用的是kde,则等效为kdesu -u www-data krusader。我认为,由于krusader是kde应用程序,因此与可能会更好地工作kdesu。有关kdesu的更多详细信息,请点击这里

我曾经gksudo以系统上其他“人类”用户的身份运行命令,当系统提示输入密码时,我键入我的密码。


谢谢,但结果是gksudo:未指定协议
krusader

可能对于krusader(kde应用程序)来说kdesu是一个更好的选择。我已经更新了答案。你可以试试看吗?
koushik 2010年

4

要使用您自己的密码成为www-data,请使用以下命令:

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

但是,我认为您不能从那里运行GUI应用程序。

我通常只拥有中的所有内容/var/www,但允许所有人读取权限:

/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 {} \;

我希望这可以减轻您的痛苦:)


如您所料,我无法从那里运行GUI应用程序。它说No protocol specified krusader: cannot connect to X server :0.0
Alexar

第二种解决方案不是您的选择吗?你的数据不具有由www数据所拥有,但我想这是首选。
汉尼拔·莱克特博士

3

我相信您需要在终端上运行以下命令:

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

然后,您可以执行以下操作:

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

最后,运行您的应用程序:

krusader

应该可以,<user-to-run-as>当然要确保将其替换为您的用户名。


0

'gksu'和'kdesu'都是'sudo'的图形化前端,这是在纯文本环境中应使用的工具。“ gksu”和“ kdesu”工具要求您处于图形模式,这说明了“无法连接到X服务器”错误。

如果要以其他用户身份执行控制台命令,请使用命令“ sudo -u username命令”。


谢谢,我运行了它,它说[1] 12100似乎是进程ID;但是我什么也没看到。
Alexar 2010年

0

在www-data下运行图形应用程序会给您带来一些问题。您可以做的就是将自己添加到www-data组,从而可以更改所需的所有文件:

sudo adduser $USER www-data

注意:可能您需要从会话中注销才能使更改生效。

如果在执行此命令后仍无法更改某些文件,则只需确保对它们具有写权限:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file

但是,这不是解决一般问题的方法,但似乎可以解决我的问题;我会尝试报告
Alexar 2010年

0

受Anton S. Kraievoy的启发,我使用了类似的解决方案,该解决方案对我有用。在使用Krusader的用户中,我向xhhost添加了一个新用户:

xhost +SI:localuser:username

比请登录:

su - username

比krusader作为新用户中的新实例正常启动:

krusader

注意,将在〜/ .kde / share / config / krusaderrc中创建一个新配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.