Andrew 发布的文章

由于复刻了 mon 项目到 etbemon 中,我花了一些时间做监视脚本。事实上监视一些事情通常很容易,但是决定监视什么才是困难的部分。进程监视脚本 ps.monitor 是我重新设计过的一个。

对于进程监视我有一些思路。如果你对进程监视如何做的更好有任何建议,请通过评论区告诉我。

给不使用 mon 的人介绍一下,如果一切 OK 该监视脚本就返回 0,而如果有问题它会返回 1,并使用标准输出显示错误信息。虽然我并不知道有谁将 mon 脚本挂进一个不同的监视系统中,但是,那样做其实很容易实现。我计划去做的一件事情就是,将来实现 mon 和其它的监视系统如 Nagios 之间的互操作性。

基本监视

ps.monitor tor:1-1 master:1-2 auditd:1-1 cron:1-5 rsyslogd:1-1 dbus-daemon:1- sshd:1- watchdog:1-2

我现在计划重写该进程监视脚本的某些部分。现在的功能是在命令行上列出进程名字,它包含了要监视的进程的最小和最大实例数量。上面的示例是一个监视的配置。在这里有一些限制,在这个实例中的 master 进程指的是 Postfix 的主进程,但是其它的守护进程使用了相同的进程名(这是那些错误的名字之一,因为它太直白了)。一个显而易见的解决方案是,给一个指定完整路径的选项,这样,那个 /usr/lib/postfix/sbin/master 就可以与其它命名为 master 的程序区分开了。

下一个问题是那些可能以多个用户身份运行的进程。比如 sshd,它有一个以 root 身份运行的单独的进程去接受新的连接请求,以及在每个登入用户的 UID 下运行的进程。因此,作为 root 用户运行的 sshd 进程的数量将比 root 登录会话的数量大 1。这意味着如果一个系统管理员直接以 root 身份通过 ssh 登入系统(这是有争议的,但它不是本文的主题—— 只是有些人需要这样做,所以我们必须支持这种情形),然后 master 进程崩溃了(或者系统管理员意外或者故意杀死了它),这时对于该进程丢失并不会产生警报。当然正确的做法是监视 22 号端口,查找字符串 SSH-2.0-OpenSSH_。有时候,守护进程的多个实例运行在需要单独监视的不同 UID 下面。因此,我们需要通过 UID 监视进程的能力。

在许多情形中,进程监视可以被替换为对服务端口的监视。因此,如果在 25 号端口上监视,那么有可能意味着,Postfix 的 master 在运行着,不用去理会其它的 master 进程。但是对于我而言,我可以在方便地进行多个监视,如果我得到一个关于无法向一个服务器发送邮件的 Jabber 消息,我可以通过这个来自服务器的 Jabber 消息断定 master 没有运行,而不需要挨个查找才能发现问题所在。

SE Linux

我想要的一个功能就是,监视进程的 SE Linux 上下文,就像监视 UID 一样。虽然我对为其它安全系统编写一个测试不感兴趣,但是,我很乐意将别人写好的代码包含进去。因此,不管我做什么,都希望它能与多个安全系统一起灵活地工作。

短暂进程

大多数守护进程在进程启动期间都有一个相同名字的 次级进程 second process 。这意味着如果你为了精确地监视一个进程的一个实例,当 logrotate 或者类似的守护进程重启时,你或许会收到一个警报说有两个进程运行。如果在重启期间,恰好在一个错误的时间进行检查,你也或许会收到一个警报说,有 0 个实例。我现在处理这种情况的方法是,在与 alertafter 2 指令一起的次级进程失败事件之前我的服务器不发出警报。当监视处于一个失败的状态时,failure_interval 指令允许指定检查的时间间隔,将其设置为一个较低值时,意味着在等待一个次级进程失败结果时并不会使提示延迟太多。

为处理这种情况,我考虑让 ps.monitor 脚本在一个指定的延迟后再次进行自动检查。我认为使用一个单个参数的监视脚本来解决这个问题比起使用两个配置指令的 mon 要好一些。

CPU 使用

mon 现在有一个 loadavg.monitor 脚本,它用于检查平均负载。但是它并不能捕获一个单个进程使用了太多的 CPU 时间而没有使系统平均负载上升的情况。同样,也没有捕获一个渴望获得 CPU 的进程进入沉默(例如,SETI at Home 停止运行)(LCTT 译注:SETI,由加州大学伯克利分校创建的一项利用全球的联网计算机的空闲计算资源来搜寻地外文明的科学实验计划),而其它的进程进入一个无限循环状态的情况。解决这种问题的一个方法是,让 ps.monitor 脚本也配置另外的一个选项去监视 CPU 的使用,但是这也可能会让人产生迷惑。另外的选择是,使用一个独立的脚本,它用来报警任何在它的生命周期或者最后几秒中,使用 CPU 时间超过指定百分比的进程,除非它在一个豁免这种检查的进程或用户的白名单中。或者每个普通用户都应该豁免这种检查,因为你压根就不知道他们什么时候运行一个文件压缩程序。也应该有一个包含排除的守护进程(像 BOINC)和系统进程(像 gzip,有几个定时任务会运行它)的简短列表。

对例外的监视

一个常见的编程错误是在 setgid() 之前调用 setuid(),这意味着那个程序没有权限去调用 setgid()。如果没有检查返回代码(而犯这种低级错误的人往往不会去检查返回代码),那么进程会保持较高的权限。检查以 GID 0 而不是 UID 0 运行的进程是很方便的。顺利说一下,对一个 Debian/Testing 工作站运行的一个快速检查显示,一个使用 GID 0 的进程并没有获得较高的权限,但是可以使用一个 chmod 770 命令去改变它。

在一个 SE Linux 系统上,应该只有一个进程与 init_t 域一起运行。目前在运行守护进程(比如,mysqld 和 tor)的 Debian Stretch 系统中,并不会发生策略与守护进程服务文件所请求的 systemd 的最新功能不匹配的情况。这样的问题将会不断发生,我们需要对它进行自动化测试。

对配置错误的自动测试可能会影响系统安全,这是一个很大的问题,我将来或许写一篇关于这方面的单独的博客文章。


via: https://etbe.coker.com.au/2017/09/28/process-monitoring/

作者:Andrew 译者:qhwdw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Xfce 的开发者们正忙于把 Xfce 的应用和部件转移到 GTK3 上,在这个过程中,他们也增加了一些新的特性。

“免打扰”,一个常被要求增加的特性,最近已登陆到了 xfce-notifyd 0.3.4 (Xfce 通知进程)上。

更近一步地,最新的 xfce-notifyd 包括了一个可以在单一应用基础上开启或关闭通知的选项。

当一个应用发出一个通知以后,这个应用就被加入到到了通知设置的列表里。从通知列表里,你可以控制哪些应用能够显示通知。

”免打扰“模式和应用特定的通知设置均可在“设置” > “通知” 中找到:

现在为止,还没有方法可以访问由于启用”免打扰“模式而错过的消息。然而,可以预期将来会发布通知记录/维持的特性。

最后, xfce-notifyd 0.3.4 的另一个特性选择在主监视器显示通知(直到现在,通知都是显示在当前监视器)。这个特性目前在图形设置界面里是没有的,必须使用 Xfconf(设置编辑)在 xfce-notifyd 下增添一个叫做 /primary-monitor(没有引号)的布尔属性,并设置为 True 来启用该特性:

xfce4-notifyd 0.3.4 目前在 PPA 上还没有,但是不久它可能被增添到 Xfce GTK3 PPA中。

如果你想直接从源代码编译,从这儿下载。


via: http://www.webupd8.org/2016/11/xfce-gets-do-not-disturb-mode-and-per.html

作者:Andrew 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Multiload-ng 是一个 GTK2 图形化系统监视器应用,可集成到 Xfce、LXDE 及 MATE 的桌面面板中, 它 fork 自原来的 GNOME Multiload 应用。它也可以运行在一个独立的窗口中。

Multiload-ng 的特点有:

  • 支持以下资源的图形块: CPU,内存,网络,交换空间,平均负载,磁盘以及温度;
  • 高度可定制;
  • 支持配色方案;
  • 自动适应容器(面板或窗口)的改变;
  • 极低的 CPU 和内存占用;
  • 提供基本或详细的提示信息;
  • 可自定义双击触发的动作。

相比于原来的 Multiload 应用,Multiload-ng 含有一个额外的图形块(温度),以及更多独立的图形自定义选项,例如独立的边框颜色,支持配色方案,可根据自定义的动作对鼠标的点击做出反应,图形块的方向可以被设定为与面板的方向无关。

它也可以运行在一个独立的窗口中,而不需要面板:

另外,它的 GitHub page 上说还会带来更多的图形块支持。

下图展示的是在带有一个垂直面板的 Xubuntu 16.04 中,该应用分别处于水平和垂直方向的效果:

这个应用的偏好设置窗口虽然不是非常好看,但是有计划去改进它:

Multiload-ng 当前使用的是 GTK2,所以它不能在构建自 GTK3 下的 Xfce 或 MATE 桌面环境(面板)下工作。

对于 Ubuntu 系统而言,只有 Ubuntu MATE 16.10 使用 GTK3。但是鉴于 MATE 的系统监视器应用也是 Multiload GNOME 的一个分支,所以它们大多数的功能相同(除了 Multiload-ng 提供的额外自定义选项和温度图形块)。

该应用的愿望清单 中提及到了计划支持 GTK3 的集成以及各种各样的改进,例如温度块资料的更多来源,能够显示十进制(KB、MB、GB……)或二进制(KiB、MiB、GiB……)单位等等。

安装 Multiload-ng

请注意因为依赖的关系, Multiload-ng 不能在 Lubuntu 14.04 上构建。

Multiload-ng 可在 WebUpd8 的主 PPA (针对 Ubuntu 14.04 - 16.04 / Linux Mint 17.x 和 18)中获取到。可以使用下面的命令来添加 PPA 并更新软件源:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt update

然后可以使用下面的命令来安装这个应用:

对于 LXDE (Lubuntu):

sudo apt install lxpanel-multiload-ng-plugin

对于 Xfce (Xubuntu,Linux Mint Xfce):

sudo apt install xfce4-multiload-ng-plugin

对于 MATE (Ubuntu MATE,Linux Mint MATE):

sudo apt install mate-multiload-ng-applet

独立安装 (不需要集成到面板):

sudo apt install multiload-ng-standalone

一旦安装完毕,便可以像其他应用那样添加到桌面面板中了。需要注意的是在 LXDE 中,Multiload-ng 不能马上出现在面板清单中,除非重新启动面板。你可以通过重启会话(登出后再登录)或者使用下面的命令来重启面板:

lxpanelctl restart

独立的 Multiload-ng 应用可以像其他正常应用那样从菜单中启动。

如果要下载源码或报告 bug 等,请看 Multiload-ng 的 GitHub page


via: http://www.webupd8.org/2016/08/alternative-system-monitor-applet-for.html

作者:Andrew 译者:FSSlc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

QOwnNotes 是一款自由而开源的笔记记录和待办事项的应用,可以运行在 Linux、Windows 和 mac 上。

这款程序将你的笔记保存为纯文本文件,它支持 Markdown 支持,并与 ownCloud 云服务紧密集成。

QOwnNotes 的亮点就是它集成了 ownCloud 云服务(当然是可选的)。在 ownCloud 上用这款 APP,你就可以在网路上记录和搜索你的笔记,也可以在移动设备上使用(比如一款像 CloudNotes 的软件2)。

不久以后,用你的 ownCloud 账户连接上 QOwnNotes,你就可以从你 ownCloud 服务器上分享笔记和查看或恢复之前版本记录的笔记(或者丢到垃圾箱的笔记)。

同样,QOwnNotes 也可以与 ownCloud 任务或者 Tasks Plus 应用程序相集成。

如果你不熟悉 ownCloud 的话,这是一款替代 Dropbox、Google Drive 和其他类似商业性的网络服务的自由软件,它可以安装在你自己的服务器上。它有一个网络界面,提供了文件管理、日历、照片、音乐、文档浏览等等功能。开发者同样提供桌面同步客户端以及移动 APP。

因为笔记被保存为纯文本,它们可以在不同的设备之间通过云存储服务进行同步,比如 Dropbox,Google Drive 等等,但是在这些应用中不能完全替代 ownCloud 的作用。

我提到的上述特点,比如恢复之前的笔记,只能在 ownCloud 下可用(尽管 Dropbox 和其他类似的也提供恢复以前的文件的服务,但是你不能在 QOwnnotes 中直接访问到)。

鉴于 QOwnNotes 有这么多优点,它支持 Markdown 语言(内置了 Markdown 预览模式),可以标记笔记,对标记和笔记进行搜索,在笔记中加入超链接,也可以插入图片:

标记嵌套和笔记文件夹同样支持。

代办事项管理功能比较基本还可以做一些改进,它现在打开在一个单独的窗口里,它也不用和笔记一样的编辑器,也不允许添加图片或者使用 Markdown 语言。

它可以让你搜索你代办事项,设置事项优先级,添加提醒和显示完成的事项。此外,待办事项可以加入笔记中。

这款软件的界面是可定制的,允许你放大或缩小字体,切换窗格等等,也支持无干扰模式。

从程序的设置里,你可以开启黑夜模式(这里有个 bug,在 Ubuntu 16.04 里有些工具条图标消失了),改变状态条大小,字体和颜色方案(白天和黑夜):

其他的特点有支持加密(笔记只能在 QOwnNotes 中加密),自定义键盘快捷键,输出笔记为 pdf 或者 Markdown,自定义笔记自动保存间隔等等。

访问 QOwnNotes 主页查看完整的特性。

下载 QOwnNotes

如何安装,请查看安装页(支持 Debian、Ubuntu、Linux Mint、openSUSE、Fedora、Arch Linux、KaOS、Gentoo、Slackware、CentOS 以及 Mac OSX 和 Windows)。

QOwnNotes 的 snap 包也是可用的,在 Ubuntu 16.04 或更新版本中,你可以通过 Ubuntu 的软件管理器直接安装它。

为了集成 QOwnNotes 到 ownCloud,你需要有 ownCloud 服务器,同样也需要 NotesQOwnNotesAPITasksTasks Plus 等 ownColud 应用。这些可以从 ownCloud 的 Web 界面上安装,不需要手动下载。

请注意 QOenNotesAPI 和 Notes ownCloud 应用是实验性的,你需要“启用实验程序”来发现并安装他们,可以从 ownCloud 的 Web 界面上进行设置,在 Apps 菜单下,在左下角点击设置按钮。


via: http://www.webupd8.org/2016/09/qownnotes-is-note-taking-and-todo-list.html

作者:Andrew 译者:jiajia9linuxer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Turtl 是一个安全、开源的 Evernote 替代品,在Linux、Windows、Mac 和 Android 等系统上都能使用。iOS版本仍在开发当中,Firefox 和 Chrome 也有扩展程序可以使用。

这个产品仍在测试阶段,它能够让你把你的笔记(便签编辑器支持 Markdown)、网站书签、密码、文档、图片等单独放在一个隐秘地方。

笔记可以按模块组织起来,支持嵌套,也可以和其他 Turtl 用户分享。

你可以给你的笔记打上标签。Turtl 通过创建时间、最后修改时间或者标签来找你的笔记。

这个是便签编辑器(文件便签):

那么安全性如何呢?Turtl 会在保存数据之前加密,使用的是一个加密密钥,而密码并不保存在服务器上。只有你和你想要分享的人能获取数据。你可以从这里获得更多关于 Turtl 安全和加密的信息。

更新(感谢 Dimitry!):根据错误反馈,Turtl 有个严重的安全性问题。Turtl 允许创建多个相同用户名的账号,却只使用密码来区分它们。希望能马上修复这个问题。

Turtl 团队提供了一个托管服务来同步你的记录,它是完全免费的,”除非你的文件足够大,或者你需要更好的服务”,在我写这篇文章的时候这个高级服务还不能用。

并且你也不一定要用这个托管服务,因为就像其桌面应用和手机应用一样,这个自托管服务器也是一个自由、开源的软件,所以你可以自己搭建一个 Turtl 服务器

Turtl 没有像 Evernote 那么多的功能,但它在它的计划中也有一些新的功能,比如:支持导入/导出文本和Evernote 格式的数据、原生支持 PDF 阅读器、界面锁定等。

不得不提醒的是,每次启动都要输入密码,虽然安全,但有时候实在是麻烦。

下载 Turtl

下载 Turtl 应用(二进制文件支持 Linux (32位/64位)、Windows 64 位、Mac 64位、Android,以及 Chrome 和Firefox 浏览器插件)

更新:Turtl 用了一个新的服务器,注销然后在登录框的下面选择高级设置,把 Turtl 服务器设置为 "https://api.turtlapp.com/v2"(没有引号)。

下载源代码(桌面应用、移动应用和服务器)、反馈问题等,参见 Turtl 的 GitHub 项目站点。

Arch Linux 用户可以通过 AUR 来安装 Turtl。

要在 Linux 上安装,把安装包解压后运行 install.sh,安装之前请确保 ~/.local/share/applications 目录存在,若不存在请自行创建:

mkdir -p ~/.local/share/applications

注意:如果使用 sudo 命令安装,那么只有 root 用户才能使用。所以,要么不用 sudo 命令安装,要么在安装完成后修改权限。你可以参考AUR 软件包的设置来了解如何修改权限。

使用如下命令把 Turtl 安装到 ~/turtl 文件夹下(假定你已经把安装包解压在你的家目录下了):

~/turtl-*/install.sh ~/turtl

可以使用 ~/.turtl 代替 ~/turtl 把 Turtl 安装到你的家目录的隐藏文件夹下。你也可以用些小技巧把它隐藏起来。

如果 Turtl 没有在你的 Unity Dash 上显示出来,请注销/登录以重启会话。


via: http://www.webupd8.org/2016/08/turtl-secure-open-source-evernote.html

作者:Andrew 译者:chisper 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Mate 桌面环境 1.14 现在可以在 Ubuntu Mate 16.04 ("Xenial Xerus") 上使用了。根据这个发布版本的描述,为了全面测试 Mate 1.14,所以 Mate 桌面环境 1.14 已经在 PPA 上发布 2 个月了。因此,你不太可能遇到安装的问题。

现在 PPA 提供 Mate 1.14.1 包含如下改变(Ubuntu Mate 16.04 默认安装的是 Mate 1.12.x):

  • 客户端的装饰应用现在可以正确的在所有主题中渲染;
  • 触摸板配置现在支持边缘操作和双指滚动;
  • 在 Caja 中的 Python 扩展可以被单独管理;
  • 所有三个窗口焦点模式都是可选的;
  • Mate Panel 中的所有菜单栏图标和菜单图标可以改变大小;
  • 音量和亮度 OSD 目前可以启用和禁用;
  • 更多的改进和 bug 修改;

Mate 1.14 同时改进了整个桌面环境中对 GTK+ 3 的支持,包括各种 GTK+3 小应用。但是,Ubuntu MATE 的博客中提到:PPA 的发行包使用 GTK+ 2 编译是“为了确保对 Ubuntu MATE 16.04 还有各种各样的第三方 MATE 应用、插件、扩展的支持"。

MATE 1.14 的完整修改列表点击此处阅读。

在 Ubuntu MATE 16.04 中升级 MATE 1.14.x

在 Ubuntu MATE 16.04 中打开终端,并且输入如下命令,来从官方的 Xenial MATE PPA 中升级最新的 MATE 桌面环境:

sudo apt-add-repository ppa:ubuntu-mate-dev/xenial-mate
sudo apt update
sudo apt dist-upgrade

注意: mate-netspeed 应用将会在升级中删除。因为该应用现在已经是 mate-applets 应用报的一部分,所以它依旧是可以使用的。

一旦升级完成,请重启你的系统,享受全新的 MATE!

如何回滚这次升级

如果你并不满意 MATE 1.14, 比如你遭遇了一些 bug 。或者你想回到 MATE 的官方源版本,你可以使用如下的命令清除 PPA,并且下载降级包。

sudo apt install ppa-purge
sudo ppa-purge ppa:ubuntu-mate-dev/xenial-mate

在所有的 MATE 包降级之后,重启系统。

参考: Ubuntu MATE blog


via: http://www.webupd8.org/2016/06/install-mate-114-in-ubuntu-mate-1604.html

作者:Andrew 译者:MikeCoder 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出