如何以另一个用户身份运行应用程序?
我使用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身份运行它! 但是这会在使用cp
和mkdir
时引起一些权限问题,你知道。
PS: sudo
和gksudo
没有帮助:
$ 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中创建新配置。