Browsed by
分类:Linux

日新月异的技术,潮流人士的选择!

root用户也用sudo

root用户也用sudo

过往在升级Debian (Testing版本)时,总是以root身份进行操作,例如:

apt update
apt upgrade

最近使用同样的命令升级时,总是提示错误,意思大约是“找不到ldconfig”文件或者无权执行。这是很奇怪的问题,毕竟当前用户是root,而且ldconfig显然就在‘/sbin’目录下,肉眼可见。

检查了root用户的env,发现Path的设置为:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

确实没有包含‘/sbin’目录,因此root用户的确无法直接执行ldconfig命令。再次检查‘/etc/profile’文件,在路径设置时进行了以下判断:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi

当然,可以直接修改该文件,或者修改root用户的.bashrc文件,将’/sbin’目录将入路径当中。
然而根据profile文件的判断条件,也可以不做任何修改,只是执行命令时,加上‘sudo’即可。例如上述更新命令修改为:

sudo apt upgrade
手工解除fail2ban封锁的IP地址

手工解除fail2ban封锁的IP地址

首先检查fail2ban的log文件,看是哪一个jail的规则触发了封锁,比如apache的规则。然后可以使用fail2ban-client确认该规则的封锁状态:

root@minisipserver:~$ fail2ban-client status apache
Status for the jail: apache
|- filter
|  |- File list:        /var/log/apache2/error.log
|  |- Currently failed: 0
|  `- Total failed:     21
`- action
   |- Currently banned: 1
   |  `- IP list:       184.15.66.88
   `- Total banned:     3

例如,示例中apache的规则封锁了“184.15.66.88”。接着使用以下命令解除对该IP地址的封锁:

fail2ban-client set apache unbanip 184.15.66.88
Debian 9中安装VirtualBox增强工具

Debian 9中安装VirtualBox增强工具

以前的Debian版本中自带有virtualbox-guest-dkms包,直接安装即可。然而Debian8(?9)后,不知道什么原因这个包不再包含在Debian的库中,因此需要手工编译安装。理论上来说,Debian团队没有必要移除这个包,估计可能是Oracle的政策变化导致的。

步骤稍微有些繁琐,主要参考网上一篇文档进行操作,请猛击此处阅读原文档。

首先是将Debian更新到最新的版本:

apt update
apt upgrade

然后安装编译dkms需要的若干工具和库:

apt install build-essential module-assistant dkms

开始准备编译内核模块:

m-a prepare

点击Vbox的菜单“设备 – 安装增强工具”,会在桌面上生成一个类似cdrom的图标,打开ta并进入terminal窗体,运行以下命令即可:

sh ./VBoxLinuxAdditions.run
升级树莓派系统至 Stretch 版本

升级树莓派系统至 Stretch 版本

Pi 官方的Raspbian版本已经正式升级到 Stretch,即 Debian 9 系统。目前使用的还是 Jessie 版本, 根据官方的指导文档,进行升级,总体是比较平顺的,当然也有一些需要总结和修订。

在升级之前,首先要把源系统更新(update)、升级(upgrade)。

然后修改软件源文件,将 jessie 修改为 stretch,共有两个文件需要修改:

/etc/apt/sources.list
/etc/apt/sources.list.d/raspi.list

修改完成后,直接更新版本即可:

sudo apt-get update
sudo apt-get -y dist-upgrade

更新过程耗时比较长,耐心等待即可。需要注意的是,Stretch 版本中将 MySQL 替换为 MariaDB 了,因此如果是安装了MySQL, 需要重新安装 MariaDB。 好在替换过程似乎也很顺利,如果是深度使用MySQL,建议仔细检查这个替换。

升级完成后,音频库没有必要,可以删掉;另外有个字体库则需要单独安装以支持中文:

sudo apt-get -y purge "pulseaudio*"
sudo apt-get install fonts-droid-fallback

在体验最新版本的过程中,发现 xrdp 无法使用。需要卸载以前的版本,同时重新安装 VNC 软件。

sudo apt-get remove xrdp vnc4server tightvncserver
sudo apt-get purge tightvncserver xrdp
sudo apt-get install -y xrdp vnc4server tightvncserver

在用 Windows 的远程桌面登录时, 也要明确指示采用 Xvnc 而不是 Xorg 。以前的版本倒是没有这么麻烦,不知道是升级导致的问题,还是新版本就有这个问题。

升级后感觉明显快了很多,这有点意外,毕竟硬件没有改变,基础 Debian 系统在效率方面改变似乎也并不很大。

网站启用IPv6应注意的事项

网站启用IPv6应注意的事项

网站支持IPv6的步骤比较简单,基本上目前常用的软件,例如Apache、Postfix、dovecot等,都已经支持IPv4和IPv6双栈,只要服务商的设备提供IPv4和IPv6连接,这些软件本身无需为IPv6做特别配置。

需要注意的是服务商处的DNS配置。如果DNS配置不全面,某些服务器在鉴权时会拒绝接受来自IPv6地址的消息。例如gmail服务器在收到 email 消息时,会鉴定DNS和IPv6地址是否匹配,如果不匹配,则视为垃圾邮件直接拒绝,可以看到如下错误警示:

Our system has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding PTR records 550-5.7.1 and authentication.

下面以Linode中的配置做简单介绍(对DO而言也基本如此)。假设IPv4地址是“1.2.3.4”,IPv6地址是“1:2:3:4::5:6”,域名是“demo.com”。

Reverse DNS

Linode 为每个节点分配的DNS名默认是类似的成员名,例如“1234.members.linode.com”。在 Linux 系统 ping 域名”demo.com”时,首先显示的是”1234.members.linode.com”,然后才是跳转到”demo.com”。某些服务应用会认为是PTR错误。在linode中需要设置“ reverse DNS”记录,将节点的DNS名直接指定为“demo.com”。

具体措施请参考linode的在线文档

如果同时支持IPv4和IPv6,上述文档里指导的操作需要单独操作两次,分别指定IPv4地址和IPv6地址。

MX 记录

另外一个需要注意的是 MX 记录,即邮件服务器记录。如果我们将 MX 记录设置为“mail.demo.com”,那么在DNS的A和AAAA记录中,要分别对“mail.demo.com”设置IPv4和IPv6地址,例如以下DNS记录结果:

mail.demo.com. 300 IN AAAA 1:2:3:4::5:6
mail.demo.com. 300 IN A 1.2.3.4

仅仅指定一个地址,对端有可能以域名和地址不匹配为由拒绝消息请求。

TTL

Linode 默认的TTL是3600秒,建议修改为300秒。TTL 太长太短都不好,要根据自己的实际情况调整,以方便自己网络部署、同时又不增加太多网络负担为准则。

Debian testing

Debian testing

Debian 9的KDE实在太丑,“微风”变成浓郁的乡村风,一股掩盖不住的土气扑面而来。相比之下,“Debian 8 + KDE”完全是珍品。

我觉得自己要被Debian 9的乡村风给窒息了,难道以后都会是这样? 赶紧装上testing版本,滚动到最新的KDE看看……无语了,真丑!丑出天际!

似乎大量的部件都用QML重写了,又耗资源又慢,这是要作死啊,一脸油腻的样子。

Debian testing KDE
Debian testing KDE

2018-01-08 更新:实在忍不住,下载了Neon(user edition)看看最新的KDE5究竟是什么样的。好吧,就是下面这个样子。看来冤枉了Debian,KDE5现在就是这种奔放的乡村风。

KDE5 in Neon
KDE5 in Neon
Neon

Neon

Linux的发行版本有如过江之鲫数不胜数,我已经厌倦了这些发行版。生命很短暂,时间很宝贵,没有必要把时间浪费在各种“碉堡了”的发行版上。作为一名软件开发人员,我觉得严肃对待Debian和Ubuntu已经足够了。

然而最近我尝试了一个新的发行版本:Neon。这是个相对比较新的发行版本,与众不同之处在于:Neon是KDE组织的官方发行版本!作为一名KDE粉丝,听闻居然有KDE官方发行版本,还是很让人激动的。另外一个吊诡之处在于:Neon是基于Ubuntu的版本!同时作为一名Debian/Ubuntu粉丝,当然就更加激动,实在是甚合我意啊!

以往说起KDE,往往想起openSUSE。openSUSE社区也往往自居正统KDE发行版本。KDE 社区居然会选择Ubuntu作为基础版本,这事挺有意思,感觉可能和Kubuntu有点关系。

简单试用了一段时间,非常棒!Neon实在是个短小精干的版本,启动后系统内存占用居然低于500M,该有的都有,不该有的基本都没有,运行很稳定,KDE 桌面效率也很高,完全可以洗刷对KDE的各种误解。

Neon桌面
Neon桌面

Neon,你值得拥有!

Pi3

Pi3

Pi3已经上市一段时间了,由于以前的Pi1一直工作得很好,所以没什么动力改用Pi3。最近有用户和朋友相继推荐,心动之下就入了。

Pi3桌面截图
Pi3桌面截图

Pi3的桌面比Pi1实在是好太多了,进步非常明显。不是传统的KDE或者Gnome,感觉有点像lxde或者openBox,使用起来也很爽。

CPU强大好多,居然可以使用Chromium浏览器上网,而且还比较流畅。CPU强大带来的好处就是编译版本快了。以往出个版本要数个小时,现在一个小时左右就可以了。Pi1的CPU随时跑到100%,而Pi3仅仅20%即可,我很满意。当然,缺点也很明显,CPU温度明显比一代要高很多!幸亏买了两个散热片贴上,然后直接裸奔,即使这样依然感觉烫手。

与一代一样,存储IO是个瓶颈。虽然采用class10,UHS1的microSD卡,编译时还是能很明显感受到读写速度慢带来的影响。我觉得Pi未来的发展要重视这个问题,也许内置SSD可以解决。

软件方面有点差异。Pi3默认情况下没有打开SSH和VNC,无法远程SSH进入或者远程桌面接入。需要运行下述命令允许SSH接入和VNC接入:

sudo raspi-config

奇怪的是默认没有安装VNC服务器,因此还需要单独安装:

sudo apt-get install vnc4server

另外,Pi3的硬件做工明显比Pi1要好很多,是个很不错的选择,值得玩家入手。

2017-10-11更新:观察了这几个月的运行情况,感觉很不满意。Pi3的稳定性比Pi1差多了。以前Pi1能正常运行数月不等的时间,而Pi3基本上隔一两天就死机或者重启,CPU发热太严重。如果稳定工作,可能需要在旁边装个风扇主动散热(这只是推测,没实验过)。总之,比较失望。

2017-11-19更新: 以前的推测应该是对的。这段时间天气变凉,Pi3就可以持续、稳定地运行数个星期,目前还在观察。随着冬天气温会更低,估计Pi3稳定运行是没有问题的。

奇怪的GTK style

奇怪的GTK style

一直愉快地在Debian 7系统使用KDE桌面,最近在一个旧系统(64bits)发现某些Gtk程序,例如FileZilla等,界面没有转化成KDE的oxygen风格,及其原始的Gtk风格实在太丑了。

这个问题有些奇怪,安装、使用过很多Debian的系统,从来没发生过这种奇怪的事情。简单搜索了一下,发现是需要安装对gtk程序的适配引擎,具体命令如下:

sudo apt-get install gtk2-engines-oxygen gtk3-engines-oxygen kde-config-gtk-style

安装完成后,需要退出当前用户再重新进入,或者干脆重启也可以。然后Gtk程序就适配成了KDE的oxygen风格。

不过在Debian 9中,KDE的默认风格改成了“微风”,不知道是否还要再重新适配一下,留待以后验证吧。

Linux系统ssh代理的问题

Linux系统ssh代理的问题

因为需要访问公司远程网络,而考虑到国内特殊的网络环境,通常在windows系统下都是使用putty创建本地socks5代理,在firefox中设置该代理访问internet。

但是在linux下,默认采用以下命令时,居然只能使用socks4代理:

ssh -D 6666 myname@mycompany.com

如果需要使用socks5代理,则需要明确指定本地的IP地址,命令如下:

ssh -D 127.0.0.1:6666 myname@mycompany.com

其实用netstat检查前一个命令的结果,能看到正确绑定了任意地址的6666端口,而后一个命令只是明确绑定在本地循环地址上。两者应该都能成功进行socks5代理才对。

不知道这是ssh的bug,还是firefox的bug? 简单搜索了一下,似乎也没有人提到这点。