记一次xrdp启动失败

我是个rdp重度用户,为了能使用rdp而不是vnc,昨天安装了xrdp。一开始用着好好的,重启之后就不行了,service start xrdpsystemctl start xrdp都提示启动失败,systemctl status xrdp.service没有得到任何有用信息,/var/log/xrdp.log一片空白,然后开始了漫长的debug之旅。

百思不得其解,没道理啊,重启前才用着了。

然后到晚上,打算做点别的事,用到了df -h命令,看到/var/log挂载到了/tmpfs,也就是内存临时文件系统,才想起来xrdp.log是不是有权限问题导致xrdp无法写入log而启动失败。

查看xrdp配置文件/etc/xrdp/xrdp.ini/发现日志确实是xrdp.log这个文件,尝试执行

chown xrdp:adm /var/log/xrdp.log
chmod 640 /var/log/xrdp.log
service start xrdp

就能够启动了!

可是这仍然没有解决问题——总不能每次开机都执行一次吧?

解决问题的最终办法是将LogFile的参数写成绝对路径,而且是硬盘的绝对路径而不是内存盘的绝对路径,例如

LogFile=/root/xrdp.log

或者我们不要日志了,直接写到/dev/null也可以嘛。

如果非得把日志写到内存盘里,那我们就先禁用开机启动:

service disable xrdp

然后编辑/etc/rc.local写入新建xrdp.log、授予权限以及启动xrdp服务端的命令。rc.local的各条目是有执行顺序的,只有上一条目执行成功返回true,才会执行下一条目,所以顺序一定不要搞错,也不要放在其它任何可能运行失败的条目之下。

chown xrdp:adm /var/log/xrdp.log
chmod 640 /var/log/xrdp.log
service start xrdp

也可以用&&把几行命令连在一起顺序执行。

chown xrdp:adm /var/log/xrdp.log && chmod 640 /var/log/xrdp.log && service start xrdp

大功告成!重启试试?

发表评论

发表评论

*

64 ÷ eight =