分类 技术 下的文章

如果系统没有自动检测到你的打印机,这篇文章教你如何在 Linux 系统手动添加打印机。

 title=

即使未来已来, 电子墨水 e-ink 和 AR 技术可以现实应用,我们还是会用到打印机的。打印机制造商还不能做到让自己的专利打印机可以与各种计算机完全标准化传递信息,以至于我们需要各种打印机驱动程序,在任何操作系统上都是如此。电子电气工程师协会信息科学与技术处(IEEE-ISTO)下属的打印机工作组(PWG)和开放打印技术组织(OpenPrinting.org)长期合作致力于让人们可以(使用任何型号打印机)轻松打印。带来的便利就是,很多打印机可以不需要用户进行配置就可以自动被识别使用。

如果系统没有自动检测到你的打印机,你可以在这篇文章中找到如何在 Linux 系统手动添加打印机。文中假定你使用的是 GNOME 图形桌面系统,其设置流程同样适用于 KDE 或其他大多数桌面系统。

打印机驱动程序

在你尝试用打印机打印文件时,要先确认你的 Linux 系统上是不是已经安装了更新的打印机驱动程序。

可以尝试安装的打印机驱动程序有三大类:

  • 作为安装包提供的,捆绑在你的 Linux 系统上的开源 Gutenprint 驱动程序
  • 打印机制造商提供的专用驱动程序
  • 第三方开发提供的打印机驱动程序

开源打印机驱动程序库可以驱动 700 多种打印机,值得安装,这里面可能就有你的打印机的驱动,说不定可以自动设置好你的打印机(,你就可以使用它了)。

安装开源驱动程序包(库)

有些 Linux 发行版已经预装了开源打印机驱动程序包,如果没有,你可以用包管理器来安装。比如说,在 Fedora、CentOS、Magela 等类似发行版的 Linux 系统上,执行下面命令来安装:

$ sudo dnf install gutenprint

惠普(HP)系列的打印机,还需要安装惠普的 Linux 图形及打印系统软件包(HPLIP)。如在 Debian、Linux Mint 等类似的系统上,可以使用下面的命令:

$ sudo apt install hplip

安装制造商提供的驱动程序

很多时候因为打印机制造商使用了非标准的接口协议,这种情况开源打印机驱动程序就不能驱动打印机。另外的情况就是,开源驱动程序可以驱动打印机工作,但是会缺少供应商特有的某些性能。这些情况,你需要访问制造商的网站,找到适合你的打印机型号的 Linux 平台驱动。安装过程各异,仔细阅读安装指南逐步安装。

如果你的打印机根本不被厂商支持,你或许也只能尝试第三方提供的该型号打印机的驱动软件了。这类第三方驱动程序不是开源的,但大多数打印机的专用驱动程序也不是。如果你需要额外花费从供应商那里获取帮助服务才能安装好驱动并使用你的打印机,那是很心疼,或者你索性把这台打印机扔掉,至少你知道下次再也不会购买这个品牌的打印机了。

通用打印驱动系统(CUPS)

通用打印驱动系统 Common Unix Printing System (CUPS)是由 Easy Software Products 公司于 1997 年开发的,2007 年被苹果公司收购。这是 Linux 平台打印的开源基础软件包,大多数现代发行版都为它提供了一个定制化的界面。得益于 CUPS 技术,你可以发现通过 USB 接口连接到电脑的打印机,甚至连接在同一网络的共享打印机。

一旦你安装了需要的驱动程序包,你就能手工添加你的打印机了。首先,把打印机连接到运行的电脑上,并打开打印机电源。然后从“活动”屏幕或者应用列表中找到并打开“打印机”设置。

 title=

基于你已经安装的驱动包,你的 Linux 系统有可能自动检测识别到你的打印机型号,不需要额外的设置就可以使用你的打印机了。

 title=

一旦你在列表中找到你的打印机型号,设置使用这个驱动,恭喜你就可以在 Linux 系统上用它打印了。

(如果你的打印机没有被自动识别,)你需要自行添加打印机。在“打印机”设置界面,点击右上角的解锁按钮,输入管理用户密码,按钮转换成“添加打印机”按钮。

然后点击这个“添加打印机”按钮,电脑会搜索已经连接的本地打印机型号并匹配相应驱动程序。如果要添加网络共享打印机,在搜索框输入打印机或者其服务器机的 IP 地址。

 title=

选中你想添加的打印机型号,点击“添加”按钮把打印机驱动加入系统,就可以使用它了。

在 Linux 系统上打印

在 Linux 系统上打印很容易,不管你是在使用本地打印机还是网络打印机。如果你计划购买打印机,建议查看开放打印技术组织的(可支持打印机)数据库(OpenPrinting.org),看看你想购买的打印机是不是有相应的开源驱动程序。如果你已经拥有一台打印机,你现在也知道怎样在你的 Linux 系统上使用你的打印机了。


via: https://opensource.com/article/21/8/add-printer-linux

作者:Seth Kenlon 选题:lujun9972 译者:fisherue 校对:wxy

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

这篇 elementary OS 6 的评测将为你呈现该系统在旧款测试设备上的表现。

elementary OS 的粉丝们焦急等待 elementary OS 6 Odin 发布已经将近两年了。如此焦急的原因,主要在于早期版本 elementary OS 5.1 的内核和软件包在 2021 年来说过于陈旧。而且,这一旧版本基于 Ubuntu 18.04 LTS 构建。因此,用户都急切地等待着基于 Ubuntu 20.04 LTS 的全新版本 —— 最重要的是,Ubutnu 20.04 LTS 已经发布一年,接下来也将有下一个 LTS 版本发布。

你应该也明白的,过长的等待时间,很可能导致用户跳槽到其他发行版。

但即便如此,新版本终于还是 在 8 月发布了,它在用户和粉丝群体很受欢迎。

于是,我在一周前为一台旧设备(我知道新设备的体验会更好)安装了 elementary OS 6 Odin,下面就是测评。

elementary OS 6 Odin 的桌面

elementary OS 6 Odin 测评

测试设备:

  • CPU – Intel Core i3,4 GB 运行内存
  • 硬盘 – SSD 固态硬盘
  • 显卡 – Nvidia GeForce(340)

安装

在这一版本中,elementary 团队针对他们自制的 elementary OS 安装器做了易用性优化。新安装器减少了安装前的准备步骤,虽然它还是需要依赖 GParted 进行分区操作(当然 GParted 本身是一款不错的工具)。

在前述测试设备中,安装过程大约花费了 10 分钟,没有任何报错。安装完之后,GRUB 也正常更新,没有任何意外。这是一个安装在老式 BIOS 上多引导系统。

初见印象

如果你刚听说 elementary OS 和 Pantheon 桌面,或者从其他传统的菜单型桌面环境迁移过来,你可能需要一两天时间来适应这款桌面。当然,如果你已经是 elementary OS 的老用户的话,那么你将获得一致的体验,外加性能和外观的优化。

你应该可以察觉到一些明显可见的 elementary OS 6 的新特性,像是强调色、原生暗黑模式,以及一组不错的新壁纸。

稳定性与性能

我已经使用 elementary OS 6 Odin 超过一周的时间。在日常使用后,我只能说,它很稳定,没有突然的崩溃和意外。其他(通过 apt 单独安装的)额外软件也运作正常,性能也没有降低。

在近乎闲置的情况下,CPU 使用率处在 5%-10% 之间,内存占用约为 900 MB。CPU / 内存的消耗主要分配在 Gala(Pantheon 的窗口管理器)、Wingpanel(顶栏)和应用中心。

elementary OS 6 的系统性能

考虑到系统的视觉效果,我认为这些占用数据也十分合理。不过,当你打开更多软件,例如 LibreOffice、Chrome、Kdenlive 之后,消耗的资源肯定会更多。

应用程序与应用中心

elementary OS 的应用程序列表经过精选,几乎所有类型的软件都可以从应用中心获取,包括 Flatpak 应用。不过,elementary OS 默认并没有预装一些重要的应用程序,像是 Firefox、LibreOffice、Torrent 客户端、硬盘分区工具、照片编辑器之类 —— 这些重要的程序需要在安装系统后再自行安装。我认为预装软件这一块有很大的改进空间。

结束语

在这一周的测试中,我也多次遇到了一个 bug,Wi-Fi 有时会突然断开,不过这完全是上游 Ubuntu 20.04 的问题 —— 多年以来,它一直有奇怪的 Wi-Fi 问题。抛开这个问题,elementary OS 确实是一款稳定、优秀的 Linux 发行版。如果 elementary OS 有滚动更新的版本,也许会更好。因此,这是一款值得推荐的发行版,尤其适合那些从 macOS 迁移过来的人。


via: https://www.debugpoint.com/2021/08/elementary-os-6-odin-review/

作者:Arindam 选题:lujun9972 译者:imgradeone 校对:wxy

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

通过使用 Libimobiledevice 从 Linux 与 iOS 设备进行通信。

 title=

iPhone 和 iPad 绝不是开源的,但它们是流行的设备。许多拥有 iOS 备的人恰好也在使用大量的开源软件,包括 Linux。Windows 和 macOS 的用户可以通过使用苹果公司提供的软件与 iOS 设备通信,但苹果公司不支持 Linux 用户。开源程序员早在 2007 年(就在 iPhone 发布一年后)就以 Libimobiledevice(当时叫 libiphone)来拯救了人们,这是一个与 iOS 通信的跨平台解决方案。它可以在 Linux、Android、Arm 系统(如树莓派)、Windows、甚至 macOS 上运行。

Libimobiledevice 是用 C 语言编写的,使用原生协议与 iOS 设备上运行的服务进行通信。它不需要苹果公司的任何库,所以它完全是自由而开源的。

Libimobiledevice 是一个面向对象的 API,它捆绑了许多便于你使用的终端工具。该库支持苹果从最早到其最新的型号的 iOS 设备。这是多年来研究和开发的结果。该项目中的应用包括 usbmuxdideviceinstalleridevicerestoreifuselibusbmuxdlibplistlibirecoverylibideviceactivation

在 Linux 上安装 Libimobiledevice

在 Linux 上,你可能已经默认安装了 libimobiledevice。你可以通过你的软件包管理器或应用商店找到,或者通过运行项目中包含的一个命令:

$ ifuse --help

你可以用你的包管理器安装 libimobiledevice。例如,在 Fedora 或 CentOS 上:

$ sudo dnf install libimobiledevice ifuse usbmuxd

在 Debian 和 Ubuntu 上:

$ sudo apt install usbmuxd libimobiledevice6 libimobiledevice-utils

或者,你可以从源代码 下载 并安装 libimobiledevice

连接你的设备

当你安装了所需的软件包,将你的 iOS 设备连接到你的电脑。

为你的 iOS 设备建立一个目录作为挂载点。

$ mkdir ~/iPhone

接下来,挂载设备:

$ ifuse ~/iPhone

你的设备提示你,是否信任你用来访问它的电脑。

iphone prompts to trust the computer

图 1:iPhone 提示你要信任该电脑。

信任问题解决后,你会在桌面上看到新的图标。

iphone icons appear on desktop

图 2:iPhone 的新图标出现在桌面上。

点击 “iPhone” 图标,显示出你的 iPhone 的文件夹结构。

iphone folder structure displayed

图 3:显示了 iPhone 的文件夹结构。

我通常最常访问的文件夹是 DCIM,那里存放着我的 iPhone 照片。有时我在写文章时使用这些照片,有时有一些照片我想用 GIMP 等开源应用来增强。可以直接访问这些图片,而不是通过电子邮件把它们发给我自己,这是使用 libimobiledevice 工具的好处之一。我可以把这些文件夹中的任何一个复制到我的 Linux 电脑上。我也可以在 iPhone 上创建文件夹并删除它们。

发现更多

Martin Szulecki 是该项目的首席开发者。该项目正在寻找开发者加入他们的 社区。Libimobiledevice 可以改变你使用外设的方式,而无论你在什么平台上。这是开源的又一次胜利,这意味着它是所有人的胜利。


via: https://opensource.com/article/21/8/libimobiledevice-iphone-linux

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

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

本教程解释了如何实时监控 Linux 日志文件(桌面、服务器或应用),以进行诊断和故障排除。

当你在你的 Linux 桌面、服务器或任何应用中遇到问题时,你会首先查看各自的日志文件。日志文件通常是来自应用的文本和信息流,上面有一个时间戳。它可以帮助你缩小具体的实例,并帮助你找到任何问题的原因。它也可以帮助从网络上获得援助。

一般来说,所有的日志文件都位于 /var/log 中。这个目录包含以 .log 为扩展名的特定应用、服务的日志文件,它还包含单独的其他目录,这些目录包含其日志文件。

log files in var-log

所以说,如果你想监控一堆日志文件或特定的日志文件。这里有一些你可以做到方法。

实时监控 Linux 日志文件

使用 tail 命令

使用 tail 命令是实时跟踪日志文件的最基本方法。特别是,如果你所在的服务器只有一个终端,没有 GUI。这是很有帮助的。

比如:

tail /path/to/log/file

Monitoring multiple log files via tail

使用开关 -f 来跟踪日志文件,它是实时更新的。例如,如果你想跟踪 syslog,你可以使用以下命令:

tail -f /var/log/syslog

你可以用一个命令监控多个日志文件,使用:

tail -f /var/log/syslog /var/log/dmesg

如果你想监控 http 或 sftp 或任何服务器,你也可以在这个命令中监控它们各自的日志文件。

记住,上述命令需要管理员权限。

使用 lnav(日志文件浏览器)

lnav Running

lnav 是一个很好的工具,你可以用它来通过彩色编码的信息以更有条理的方式监控日志文件。在 Linux 系统中,它不是默认安装的。你可以用下面的命令来安装它:

sudo apt install lnav ### Ubuntu
sudo dnf install lnav ### Fedora

好的是,如果你不想安装它,你可以直接下载其预编译的可执行文件,然后在任何地方运行。甚至从 U 盘上也可以。它不需要设置,而且有很多功能。使用 lnav,你可以通过 SQL 查询日志文件,以及其他很酷的功能,你可以在它的 官方网站 上了解。

一旦安装,你可以简单地用管理员权限从终端运行 lnav,它将默认显示 /var/log 中的所有日志并开始实时监控。

关于 systemd 的 journalctl 说明

今天所有的现代 Linux 发行版大多使用 systemd。systemd 提供了运行 Linux 操作系统的基本框架和组件。systemd 通过 journalctl 提供日志服务,帮助管理所有 systemd 服务的日志。你还可以通过以下命令实时监控各个 systemd 服务和日志。

journalctl -f

下面是一些具体的 journalctl 命令,可以在一些情况下使用。你可以将这些命令与上面的 -f 开关结合起来,开始实时监控。

  • 对紧急系统信息,使用:
journalctl -p 0
  • 显示带有解释的错误:
journalctl -xb -p 3
  • 使用时间控制来过滤输出:
journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

如果你想了解更多关于 journalctl 的细节,我已经写了一个 指南

结束语

我希望这些命令和技巧能帮助你找出桌面或服务器问题/错误的根本原因。对于更多的细节,你可以随时参考手册,摆弄各种开关。如果你对这篇文章有什么意见或看法,请在下面的评论栏告诉我。

加油。


via: https://www.debugpoint.com/2021/08/monitor-log-files-real-time/

作者:Arindam 选题:lujun9972 译者:geekpi 校对:wxy

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

有将近 1400 万基于 Linux 的系统直接暴露在互联网上,这使得它们成为有利可图的现实世界攻击目标,这些攻击可能会导致它们被部署恶意的 Webshell、加密货币矿工、勒索软件和其他木马。

网络安全公司 趋势科技 发布了一份对 Linux 威胁形势的深入研究,其根据从蜜罐、传感器和匿名遥测中收集的数据,详细介绍了 2021 年上半年影响 Linux 操作系统的首要威胁和漏洞。

该公司检测到近 1500 万个针对基于 Linux 的云环境的恶意软件事件,发现加密货币矿工和勒索软件占所有恶意软件的 54%,Webshell 占 29%。

此外,通过剖析同一时期 10 万台 Linux 主机报告的 5000 多万例事件,研究人员发现了 15 个顶级安全缺陷,这些缺陷已经在野外被广泛利用或有了概念证明(PoC):

  • CVE-2017-5638(CVSS 评分:10.0) - Apache Struts 2 远程代码执行(RCE)漏洞
  • CVE-2017-9805(CVSS 评分:8.1) - Apache Struts 2 REST 插件 XStream RCE 漏洞
  • CVE-2018-7600(CVSS 评分:9.8) - Drupal Core RCE 漏洞
  • CVE-2020-14750(CVSS 评分:9.8) - Oracle WebLogic Server RCE 漏洞
  • CVE-2020-25213(CVSS 评分:10.0) - WordPress 文件管理器(wp-file-manager)插件 RCE 漏洞
  • CVE-2020-17496(CVSS score: 9.8) - vBulletin subwidgetConfig 未认证 RCE 漏洞
  • CVE-2020-11651(CVSS 评分: 9.8) - SaltStack Salt 授权弱点漏洞
  • CVE-2017-12611(CVSS 评分: 9.8) - Apache Struts OGNL 表达式 RCE 漏洞
  • CVE-2017-7657(CVSS score: 9.8) - Eclipse Jetty 块长度解析的整数溢出漏洞
  • CVE-2021-29441(CVSS 评分:9.8) - 阿里巴巴 Nacos AuthFilter 认证绕过漏洞
  • CVE-2020-14179(CVSS 评分:5.3) - Atlassian Jira 信息泄露漏洞
  • CVE-2013-4547(CVSS 评分:8.0) - Nginx 制作的 URI 字符串处理访问限制绕过漏洞
  • CVE-2019-0230(CVSS 评分:9.8) - Apache Struts 2 RCE 漏洞
  • CVE-2018-11776(CVSS 评分:8.1) - Apache Struts OGNL 表达式RCE 漏洞
  • CVE-2020-7961(CVSS 评分:9.8) - Liferay Portal 不受信任的反序列化漏洞

更令人不安的是,官方 Docker Hub 资源库中最常用的 15 个 Docker 镜像被发现存在数百个漏洞,这涉及 python、node、wordpress、golang、nginx、postgres、influxdb、httpd、mysql、debian、memcached、redis、mongo、centos 和 rabbitmq。这表明需要在开发管道的每个阶段保护容器免受广泛的潜在威胁。

研究人员总结说:“用户和组织应始终应用安全最佳实践,其中包括利用安全设计方法,部署多层虚拟补丁或漏洞屏蔽,采用最小特权原则,并坚持共同责任模式。”


via: https://thehackernews.com/2021/08/top-15-vulnerabilities-attackers.html

作者:Ravie Lakshmanan 选题:wxy 译者:wxy 校对:wxy

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

给你的 shell 脚本添加选项。

 title=

终端命令通常具有 选项或开关,用户可以使用它们来修改命令的执行方式。关于命令行界面的 POSIX 规范 中就对选项做出了规范,这也是最早的 UNIX 应用程序建立的一个由来已久的惯例,因此你在创建自己的命令时,最好知道如何将选项包含进 Bash 脚本 中。

与大多数语言一样,有若干种方法可以解决 Bash 中解析选项的问题。但直到今天,我最喜欢的方法仍然是我从 Patrick Volkerding 的 Slackware 构建脚本中学到的方法,当我第一次发现 Linux 并敢于冒险探索操作系统所附带的纯文本文件时,这些脚本就是我的 shell 脚本的引路人。

Bash 中的选项解析

在 Bash 中解析选项的策略是循环遍历所有传递给 shell 脚本的参数,确定它们是否是一个选项,然后转向下一个参数。重复这个过程,直到没有选项为止。

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
else
    break
fi
done

echo $ALPHA

在这段代码中,我创建了一个 while 循环,它会一直进行循环操作,直到处理完所有参数。if 语句会试着将在第一个位置($1)中找到的参数与 --alpha-a 匹配。(此处的待匹配项是任意选项名称,并没有特殊意义。在实际的脚本中,你可以使用 --verbose-v 来触发详细输出)。

shift 关键字会使所有参数位移一位,这样位置 2($2)的参数移动到位置 1($1)。处理完所有参数后会触发 else 语句,进而中断 while 循环。

在脚本的末尾,$ALPHA 的值会输出到终端。

测试一下这个脚本:

$ bash ./test.sh --alpha
1
$ bash ./test.sh

$ bash ./test.sh -a
1

可以看到,选项被正确地检测到了。

在 Bash 中检测参数

但上面的脚本还有一个问题:多余的参数被忽略了。

$ bash ./test.sh --alpha foo
1
$

要想捕获非选项名的参数,可以将剩余的参数转储到 Bash 数组 中。

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
else
    break
fi
done

echo $ALPHA

ARG=( "${@}" )
for i in ${ARG[@]}; do
    echo $i
done

测试一下新版的脚本:

$ bash ./test.sh --alpha foo
1
foo
$ bash ./test.sh foo

foo
$ bash ./test.sh --alpha foo bar
1
foo
bar

带参选项

有一些选项需要传入参数。比如,你可能希望允许用户设置诸如颜色或图形分辨率之类的属性,或者将应用程序指向自定义配置文件。

要在 Bash 中实现这一点,你仍然可以像使用布尔开关一样使用 shift 关键字,但参数需要位移两位而不是一位。

#!/bin/bash

while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
elif [ "$1" = "--config" -o "$1" = "-c" ]; then
    CONFIG=$2
    shift 2
else
    break
fi
done

echo $ALPHA
echo $CONFIG

ARG=( "${@}" )

for i in ${ARG[@]}; do
    echo $i
done

在这段代码中,我添加了一个 elif 子句来将每个参数与 --config-c 进行比较。如果匹配,名为 CONFIG 的变量的值就设置为下一个参数的值(这就表示 --config 选项需要一个参数)。所有参数都位移两位:其中一位是跳过 --config-c,另一位是跳过其参数。与上节一样,循环重复直到没有匹配的参数。

下面是新版脚本的测试:

$ bash ./test.sh --config my.conf foo bar
my.conf
foo
bar
$ bash ./test.sh -a --config my.conf baz
1
my.conf
baz

Bash 让选项解析变得简单

还有一些其他方法也可以解析 Bash 中的选项。你可以替换使用 case 语句或 getopt 命令。无论使用什么方法,给你的用户提供选项都是应用程序的重要功能,而 Bash 让解析选项成为了一件简单的事。


via: https://opensource.com/article/21/8/option-parsing-bash

作者:Seth Kenlon 选题:lujun9972 译者:unigeorge 校对:wxy

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