如何以另一个用户身份运行应用程序?

我使用krusader进行文件管理。 问题是apache的DocumentRoot应该在chown www-data:www-data /path/to/www 。 所以使用krusader(在我的帐户下运行)我真的不需要写入/path/to/www访问权限。 我不知道其他开发者如何继续做这样的限制!

我想知道我是否可以将krusader作为www-data运行,然后我将能够轻松地播放文件。 但使用su - www-data问我www-data的密码!!

那么,我如何在Gnome中运行一个应用程序(如krusader)作为另一个用户(如www-data)?

或者我的案子有其他解决方案吗? (很难,我很想知道答案!)

请记住,我知道我可以以root身份运行它! 但是这会在使用cpmkdir时引起一些权限问题,你知道。

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作为另一个用户!

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

Apache的DocumentRoot应该在下面的www-data:www-data / path / to / www下

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

 DocumentRoot /home/user/my-project/my-document-root 
 xhost +SI:localuser:uname gksudo -u uname -l "firefox" xhost -SI:localuser:uname 

其中uname =模拟用户的名称。 在那里看到: http : //ubuntuforums.org/showthread.php?p = 10399617

在我的特立独行的盒子上工作,分叉的Skype中没有声音,并且〜/ .profile.d没有被执行。

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

gksudo -u www-data krusader

这将启动管理任务提示窗口,根据GKSudo Manpage ,它是一个

su和sudo的GTK +前端

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

与Marco提到的一样,您可以使用gksudo -u www-data 以另一个用户身份运行命令。 我经常使用它来运行命令作为gdm ,到目前为止它从来没有问我除了我自己的密码以外的任何东西。

如果你正在使用kde,那么等效的是kdesu -u www-data krusader 。我认为,因为krusader是一个kde应用程序,它可能与kdesu更好地工作。 关于kdesu的更多细节在这里 。

我使用gksudo作为系统上的其他“人”用户运行命令,当我被提示输入密码时,我输入我的。

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

 $ sudo su www-data [sudo] password for : [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 {} \; 

我希望这会缓解你的痛苦:)

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

 xhost +SI:localuser: 

然后你可以这样做:

 sudo su -  

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

 krusader 

应该这样做,只需确保用您的用户名替换

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

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

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

 sudo adduser $USER www-data 

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

如果在此命令之后仍无法更改某些文件,请确保您具有写入权限:

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

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

 xhost +SI:localuser:username 

请亲切登录:

 su - username 

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

 krusader 

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