Browsed by
Tag: root

qt.qpa.xcb: could not connect to display :10.0

qt.qpa.xcb: could not connect to display :10.0

miniDNServer 启动 DNS 服务需要绑定标准 53 端口,在 Linux 系统下默认需要有 root 权限(或者 sudo )才能绑定 1024 以下的端口。一般情况下都能正常运行,但是在 Pi 系统中以 sudo 方式运行时,提示以下错误:

No protocol specified
qt.qpa.xcb: could not connect to display :10.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

这个是 X11 auth 导致的问题。sudo 用户没有设置访问 x server 的权限,按以下步骤可以解决:

(1)当前正常用户执行以下命令,查看正常 cookie:

xauth list $DISPLAY

正常情况下会显示多条记录,如下所示:

raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 4f8433752c1eac61313208cbf9050683
raspberrypi/unix:11 MIT-MAGIC-COOKIE-1 2c67fcb8cf523a837bedadcebad49958
raspberrypi/unix:0 MIT-MAGIC-COOKIE-1 0cd700917a92e9f330154efdd19b6acf

(2)将这些结果全部加入 sudo 的 xauth,如下所示:

sudo xauth add raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 4f8433752c1eac61313208cbf9050683
sudo xauth add raspberrypi/unix:11 MIT-MAGIC-COOKIE-1 2c67fcb8cf523a837bedadcebad49958
sudo xauth add raspberrypi/unix:0 MIT-MAGIC-COOKIE-1 0cd700917a92e9f330154efdd19b6acf
CentOS6.4安装eclipse-cdt的问题

CentOS6.4安装eclipse-cdt的问题

在CentOS6环境,可以直接通过”yum install”来安装eclipse以及eclipse-cdt等开发工具。

安装完成后,创建新工程时,只看到创建普通工程,看不到与CDT相关的工程。实际上,如果安装了其他plugin,同样也无显示。

在CentOS的论坛上检索了一下,解决方法也简单。就是必须以root身份运行以下命令即可:

eclipse -initialize
在Ubuntu/Kubuntu中以非root用户身份运行wireshark

在Ubuntu/Kubuntu中以非root用户身份运行wireshark

缺省情况下,只允许以root身份运行wireshark,否则无法抓包,命令如下:

sudo wireshark

每次都这样启动实在是比较麻烦,最好还是允许普通用户也运行wireshark并抓包。为此,需要执行以下命令即可:

sudo dpkg-reconfigure wireshark-common
sudo chmod o+x /usr/bin/dumpcap
远程访问MySQL数据库

远程访问MySQL数据库

Linux版本的MySQL数据库缺省不允许从远程访问(Windows版本在安装时可以进行选择),因此我们需要简单修改一下来放开这个限制。

通过软件中心安装MySQL,这没有什么好介绍的。网上有些这方面的介绍,不过中文版本的基本上都有些错误,估计大部分都只是转载,作者并没有真正尝试。

以下步骤基于Ubuntu版本。

step1:mysql> grant all privileges on *.* to 'root'@'%' identified by '1234';

其中,‘1234’是指密码,‘root‘是指远程访问的账户名。’%’是指允许从任何一个远程计算机访问。’*.*’是指所有数据库、所有表。

step2:mysql> flush privileges;

step3:修改/etc/mysql/my.cnf文件,注释掉以下行:

bind-address     = 127.0.0.1

step4: 重启MySQL服务

sudo service mysql restart

完成上述步骤后,就可以用root账户,以‘1234’为password,从任何一个远端计算机上登录并访问MySQL数据库了。

2018-09-29 更新, Debian 9之后又有了很多变化:

最大的变化莫过于MariaDB正式替换了MySQL,当然mariadb的各项操作、库(尤其是基本的操作和基本库)与MySQL还是保持兼容。同时,配置文件变更为 /etc/mysql/mariadb.conf.d/50-server.cnf。

在完成上述那些操作后,在其他用户的shell里,使用root账号登录MariaDB,会提示以下信息:

ERROR 1698 (28000): Access denied for user ‘root’@’localhost’

而直接在root用户的shell里登录是没有问题的。这种情况下,root要登录进MariaDB后,选择“mysql”数据库,然后

update user set password=password('1234') where user='root' and host='localhost';

此时设置从本机登录时,root用户的密码。

update user set plugin='' where user='root';
flush privileges;

清除root用户的plugin字段,允许root用户从其他shell里登录。

另外要注意的是,重新启动MariaDB,命令也有变换,采用 systemctl 进行操作:

systemctl stop mariadb.service
systemctl start mariadb.service
如何以root身份登录Fedora13

如何以root身份登录Fedora13

这又是个纠结的问题。在老版本中,以root身份登录根本就不是个问题。我不太明白为什么最新的Ubuntu和Fedora都玩起了拒绝root登录的方式。

从技术上讲,屏蔽root登录方式似乎不能解决多少安全性问题。这两个发行版本的开发人员是怎么考虑的?

话说回来,以root身份登录Fedora的做法,要比Ubuntu复杂一些。采用以下方式即可:

以root身份修改以下文件:

修改文件/etc/pam.d/gdm,注释掉auth required pam_succeed_if.so user != root quiet。

修改文件/etc/pam.d/gdm-password,注释掉auth required pam_succeed_if.so user != root quiet。

然后重启系统就可以了。