2018年1月

当提到文件和目录的权限时,你的第一反应可能是“属主/群组/其它”权限。 这些权限可以通过 chmodchown 等命令来修改。

文件和目录都有属主 (文件所有者 )、群组 (所属组) 以及其它权限,这些权限构成一个集合。 然而这些权限集合有它的局限性,无法做到为不同的用户设置不同的权限。

Linux 对文件和目录有以下默认权限。

  • 文件 -> 644 -> -rw-r-r- (所有者有读写权限,组成员有只读权限, 其他人也只有读权限)
  • 目录 -> 755 -> drwxr-xr-x (所有者有读、写和执行权限,组成员有读和执行的权限,其他人也有读和执行的权限)

比如: 默认情况下,所有者可以访问和编辑他们自己主目录中的文件, 也可以访问相关同组人的文件,但他们不能修改这些文件,因为组成员没有写权限,而且让组成员有写权限也是不明智的。 基于同样的原因,他/她也不能修改其他人的文件。 然而在某些情况下,多个用户想要修改同一个文件, 那该怎么办呢?

假设有个名叫 magi 的用户,他想要修改 httpd.conf 文件怎么办呢? 这个文件是归 root 用户所有的,这样如何授权呢? 为了解决这种情况, 访问控制列表 Access Control List (ACL)诞生了。

什么是 ACL?

ACL 表示 访问控制列表 Access Control List (ACL),它为文件系统提供了附加的、更具有弹性的权限机制。 它被设计来为补充 UNIX 文件权限机制。 ACL 允许你赋予任何某用户/组访问某项资源的权限。 setfaclgetfacl 命令会帮助你管理 ACL 而不会有任何麻烦。

什么是 setfacl?

setfacl 用于设置文件和目录的 ACL。

什么 getfacl?

getfacl - 获取文件的 ACL 。对于每个文件, getfacl 都会显示文件名、文件所有者、所属组以及ACL。 如果目录有默认 ACL, getfacl 也会显示这个默认的 ACL。

如何确认是否启用了 ACL?

运行 tune2fs 命令来检查是否启用了 ACL。

# tune2fs -l /dev/sdb1 | grep options
Default mount options: (none)

上面的输出很明显第说明 /dev/sdb1 分区没有启用 ACL。

如果结果中没有列出 acl,则你需要在挂载选项中加上 acl。 为了让它永久生效, 修改 /etc/fstab/app 这一行成这样:

# more /etc/fstab

UUID=f304277d-1063-40a2-b9dc-8bcf30466a03 / ext4 defaults 1 1
/dev/sdb1        /app ext4 defaults,acl 1 1

或者,你也可以使用下面命令将其添加道文件系统的超级块中:

# tune2fs -o +acl /dev/sdb1

现在,通过运行以下命令来动态修改选项:

# mount -o remount,acl /app

再次运行 tune2fs 命令来看选项中是否有 acl 了:

# tune2fs -l /dev/sdb1 | grep options
Default mount options: acl

嗯,现在 /dev/sdb1 分区中有 ACL 选项了。

如何查看默认的 ACL 值

要查看文件和目录默认的 ACL 值,可以使用 getfacl 命令后面加上文件路径或者目录路径。 注意, 当你对非 ACL 文件/目录运行 getfacl 命令时, 则不会显示附加的 usermask 参数值。

# getfacl /etc/apache2/apache2.conf

# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--

如何为文件设置 ACL

以下面格式运行 setfacl 命令可以为指定文件设置 ACL。在下面的例子中,我们会给 magi 用户对 /etc/apache2/apache2.conf 文件 rwx 的权限。

# setfacl -m u:magi:rwx /etc/apache2/apache2.conf

仔细分析起来:

  • setfacl: 命令
  • -m: 修改文件的当前 ACL
  • u: 指明用户
  • magi: 用户名
  • rwx: 要设置的权限
  • /etc/apache2/apache2.conf: 文件名称

再查看一次新的 ACL 值:

# getfacl /etc/apache2/apache2.conf

# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
user:magi:rwx
group::r--
mask::rwx
other::r--

注意: 若你发现文件或目录权限后面有一个加号(+),就表示设置了 ACL。

# ls -lh /etc/apache2/apache2.conf
-rw-rwxr--+ 1 root root 7.1K Sep 19 14:58 /etc/apache2/apache2.conf

如何为目录设置 ACL

以下面格式运行 setfacl 命令可以递归地为指定目录设置 ACL。在下面的例子中,我们会将 /etc/apache2/sites-available/ 目录中的 rwx 权限赋予 magi 用户。

# setfacl -Rm u:magi:rwx /etc/apache2/sites-available/

其中:

  • -R: 递归到子目录中

再次查看一下新的 ACL 值。

# getfacl /etc/apache2/sites-available/

# file: etc/apache2/sites-available/
# owner: root
# group: root
user::rwx
user:magi:rwx
group::r-x
mask::rwx
other::r-x

现在 /etc/apache2/sites-available/ 中的文件和目录都设置了 ACL。

# ls -lh /etc/apache2/sites-available/
total 20K
-rw-rwxr--+ 1 root root 1.4K Sep 19 14:56 000-default.conf
-rw-rwxr--+ 1 root root 6.2K Sep 19 14:56 default-ssl.conf
-rw-rwxr--+ 1 root root 1.4K Dec 8 02:57 mywebpage.com.conf
-rw-rwxr--+ 1 root root 1.4K Dec 7 19:07 testpage.com.conf

如何为组设置 ACL

以下面格式为指定文件运行 setfacl 命令。在下面的例子中,我们会给 appdev 组赋予 /etc/apache2/apache2.conf 文件的 rwx 权限。

# setfacl -m g:appdev:rwx /etc/apache2/apache2.conf

其中:

  • g: 指明一个组

对多个用户和组授权,只需要用 逗号 区分开,就像下面这样。

# setfacl -m u:magi:rwx,g:appdev:rwx /etc/apache2/apache2.conf

如何删除 ACL

以下面格式运行 setfacl 命令会删除文件对指定用户的 ACL。这只会删除用户权限而保留 mask 的值为只读。

# setfacl -x u:magi /etc/apache2/apache2.conf

其中:

  • -x: 从文件的 ACL 中删除

再次查看 ACL 值。在下面的输出中我们可以看到 mask 的值是读。

# getfacl /etc/apache2/apache2.conf

# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
mask::r--
other::r--

使用 -b 来删除文件中所有的 ACL。

# setfacl -b /etc/apache2/apache2.conf

其中:

  • -b: 删除所有的 ACL 条目

再次查看删掉后的 ACl 值就会发现所有的东西都不见了,包括 mask 的值也不见了。

# getfacl /etc/apache2/apache2.conf

# file: etc/apache2/apache2.conf
# owner: root
# group: root
user::rw-
group::r--
other::r--

如何备份并还原 ACL

下面命令可以备份和还原 ACL 的值。要制作备份, 需要进入对应的目录然后这样做(假设我们要备份 sites-available 目录中的 ACL 值)。

# cd /etc/apache2/sites-available/
# getfacl -R * > acl_backup_for_folder

还原的话,则运行下面命令:

# setfacl --restore=/etc/apache2/sites-available/acl_backup_for_folder

via: https://www.2daygeek.com/how-to-configure-access-control-lists-acls-setfacl-getfacl-linux/

作者:Magesh Maruthamuthu 译者:lujun9972 校对:wxy

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

 title=

Ubuntu Budgie 只是为数不多的 Ubuntu 官方认可的 特色版本 flavor 之一。Jack Wallen(杰克沃伦)将讲述一下它们之间的重要的区别。

Ubuntu Linux 有一些官方认可的 特色版本 flavor ,还有一些 衍生版本 derivative distribution

就在不久前(本文写于 2017 年 5 月),官方的 Ubuntu Linux 包括了其自己打造的 Unity 桌面版和第六个被认可的特色版本:Ubuntu GNOME —— Ubuntu 的 GNOME 桌面环境。

马克·沙特尔沃思 Mark Shuttleworth 决定要否决 Unity 的时候,这个选择对于 Canonical 来说就很明显了——是为了让 GNOME 成为 Ubuntu Linux 的官方桌面环境。从 Ubuntu 18.04(2018 年 4 月)开始,我们将仅剩下这个官方发行版和四种官方认可的特色版本。(LCTT 译注:从 17.10 就没有 Unity 版本了)

对于那些已经融入 Linux 社区的人来说,就像一些非常简单的数学问题一样——你知道你喜欢哪个 Linux 桌面,在 Ubuntu、Kubuntu、Lubuntu、Mythbuntu、Ubuntu Budgie 和 Xubuntu 之间做出选择不要太容易了。但那些还没有被灌输 Linux 思想的人可不会认为这是一个如此简单的决定。

为此,我认为帮助新用户决定选择对他们来说哪个特色版本最好可能是至关重要的。毕竟,从一开始就选择一个不合适的发行版是一种不太理想的体验。

因此,如果你正考虑选择哪个 Ubuntu 的特色版本,如果你想让你的体验尽可能地不痛苦,请继续往下看。

Ubuntu

我将从 Ubuntu 的官方特色版本开始。我会有点扭曲时间线,跳过 Unity 不谈,直接进入即将到来的基于 GNOME 的发行版(LCTT 译注:本文写作半年后发布的 Ubuntu 17.10 是第一个官方的 GNOME Ubuntu 发行版)。除了 GNOME 是一个极其稳定且易于使用的桌面环境之外,选择官方的特色版本的一个很好的理由是:支持服务。这个 Ubuntu 的官方特色版本是由 Canonical 提供商业支持的。您可以每年花费 $150.00 为 Ubuntu 桌面版购买 官方支持服务。当然,对于这一级别的支持,最少要购买 50 个桌面的支持服务。而对于个人来说,最好的支持是 Ubuntu 论坛Ubuntu 文档,或者社区帮助维基

在商业支持之外,选择 Ubuntu 官方特色版本的原因是,如果你想要一个现代的、功能齐全的桌面的话,它是非常可靠和易用的。 GNOME 被设计成完美地适合桌面和笔记本电脑桌面的平台(图 1)。与它的前代的 Unity 不同,GNOME 可以更方便地定制以适合你的需要。如果你不喜欢摆弄桌面,不要担心,GNOME 工作的很好。事实上,GNOME 开箱即用的体验也许是市场上最优秀的桌面之一,甚至可以与 Mac OS X 媲美(或者更好)。如果修补和调整是你的主要的兴趣所在,你会发现 GNOME 在一定程度上是受限制的。 GNOME 调整工具GNOME Shell 扩展只会比你想要的提供的更多。

 title=

图 1:带有 Unity 味道 GNOME 桌面也许就会是我们在 Ubuntu 18.04 上所看到的。

Kubuntu

K 桌面环境 K Desktop Environment (即 KDE)与 GNOME 长期并存,有时被误解为一个较少见的桌面。但随着 KDE Plasma 5 的发布,情况发生了变化。KDE 已经成为一个强大的、高效的、稳定的桌面,它正在一步步地成为最好的桌面系统。但是你为什么要选择 Kubuntu 而不是 Ubuntu 官方版本呢?这个问题的答案很简单——你习惯了 Windows XP / 7 桌面模式。开始菜单、任务栏、系统托盘,等等,KDE 拥有这些乃至更多,所有的这些都会让你觉得你在使用过去和现在的最好的技术。事实上,如果你正在寻找一款最像 Windows 7 的 Ubuntu 官方特色版本,除了它你就找不到更好的了。

Kubuntu 的优点之一是,你会发现它比你以前使用过的任何 Windows 版本都灵活,而且同样可靠/友好。不要觉得因为 KDE 提供的桌面有点类似于 Windows 7,它就没有现代特色。事实上,Kubuntu 对类 Windows 7 的界面进行了很好的处理,并更新了它以满足更现代的审美(图 2)。

 title=

图 2: Kubuntu 在老式用户体验上提供了现代感受。

Ubuntu 官方版本并不是提供桌面支持的唯一特色版本。Kubuntu 用户也可以购买商业支持。注意,它不便宜,一个小时的支持服务将花费你 103.88 美元。

Lubuntu

如果你正在寻找一个易于使用的桌面,要非常快(以便旧硬件感受如新),而且要比你曾经使用的任何桌面都灵活,那么 Lubuntu 就是你想要的。对 Lubuntu 唯一的警告是,你看到更加空荡的桌面,也许你已经习惯了。Lubuntu 使用 LXDE 桌面,并包含一个延续了轻量级主题的应用程序列表。因此,如果你想在桌面上寻找极速快感的体验,Lubuntu 可能是个不错的选择。

然而,对 Lubuntu 有一个提醒,对于一些用户来说,这可能会影响他们选择它。由于 Lubuntu 的低配,其预先安装的应用程序可能无法胜任任务。例如,取而代之成熟的办公套件的是,您将发现 AibWord 字处理器Gnumeric 图表工具。别误会,这两个都是很好的工具。然而,如果你正在寻找一款适合商业使用的软件,你会发现它们缺乏友好的支持。另一方面,如果你想要安装更多的以工作为中心的工具(例如 LibreOffice),Lubuntu 包括了新立得软件包管理器可以简化第三方软件的安装。

和有限的默认软件一起,Lubuntu 提供了一个简单易用的桌面(图 3),任何人都可以马上开始使用,几乎没有学习曲线。

 title=

图 3:Lubuntu 软件的贫乏,换来的是速度和简单性。

Mythbuntu

Mythbuntu 在这里是一种奇怪的鸟,因为它不是真正的桌面变体。相反,Mythbuntu 是 Ubuntu 多媒体工场设计的一个特殊的特色版本。使用 Mythbuntu 需要电视调谐器和电视输出卡。而且,在安装过程中,还需要采取一些额外的步骤(如选择如何设置前端/后端,以及设置您的红外遥控器)。

如果您碰巧拥有该硬件(以及创建您自己的由 Ubuntu 驱动的娱乐系统的愿望),Mythbuntu 就是您想要的发行版。一旦安装了 Mythbuntu,就会提示您通过设置采集卡、录制设置、视频源和输入连接(图4)。

 title=

图 4:准备设置 Mythbuntu。

Ubuntu Budgie

Ubuntu Budgie 是一个新加入到官方特色版本列表的小成员。它使用 Budgie 桌面,这是一个非常漂亮和现代的 Linux 操作系统,它可以满足任何类型的用户。Ubuntu Budgie 的目标是创建一个优雅简洁的桌面界面。而这个任务已经完成了。如果你正在寻找一个漂亮的桌面,想在非常稳定的 Ubuntu Linux 平台上工作,你只需看看 Ubuntu Budgie 就可以了。

在 Ubuntu 上添加这个特殊的版本到官方版本列表中是 Canonical 的一个聪明的举动。随着 Unity 的消失,他们需要一个能提供 Unity 的优雅的桌面。Budgie 的定制非常简单,其所包含的软件列表可以让你立即开始工作和上网浏览。

而且,与许多用户在 Unity 中遇到的学习曲线不同,Ubuntu Budgie 的开发者/设计者们做了一件非常出色的工作,让我们保有 Ubuntu 的熟悉感。点击“开始”按钮,会显示一个相当标准的应用程序菜单。Budgie 还包括一个易于使用的 Dock(图 5),它包含了用于快速访问的应用程序启动器。

 title=

图 5:这是一个漂亮的桌面。

在 Ubuntu Budgie 中发现的另一个很好的功能是侧边栏可以快速显示和隐藏。这个侧边栏包含了小应用和通知。有了这个功能,你的桌面就会变得非常有用,同时还免除杂乱。

最后,如果你在寻找一个稍有不同,但又非常现代的桌面——其特色与功能在其他发行版本中找不到 —— 那么 Ubuntu Budgie 就是你想要的。

Xubuntu

另一种很好地提供了低配支持的 Ubuntu 官方特色版本是 Xubuntu。Xubuntu 和 Lubuntu 的区别在于, Lubuntu 使用 LXDE 桌面,而 Xubuntu 使用Xfce。差别就是这个轻量级桌面,它比 Lubuntu 更具可配置性,也包括了更适合商务的 LibreOffice 办公套件。

Xubuntu 对任何人来说都是开箱即用的,无论是否有经验。但是,不要认为看起来熟悉就意味着这个 Ubuntu 特色版本可以让你马上随心所欲。如果你既想要 Ubuntu 传统的开箱即用,也想要经过大量调整成为一个更现代的桌面, 那么 Xubuntu 就是你想要的。

我一直很喜欢 Xubuntu 的一个非常方便的附加功能(就像之前的 Enlightenment),就是通过在桌面的任何地方右键点击打开“开始”菜单(图 6),这样可以非常有效的提高使用效率。

Xubuntu

图 6:Xubuntu 可以通过右键点击桌面的任何地方来打开“开始”菜单。

选择由你

总有一款 Ubuntu 的特色版本可以满足所需——选择哪一个取决于你。你自己可以问一下这些问题,例如:

  • 你有什么需要?
  • 你喜欢与哪种类型的桌面交互?
  • 你的硬件老化了吗?
  • 你喜欢 Windows XP / 7的感觉吗?
  • 你想要一个多媒体系统吗?

你对以上问题的回答将会很好地决定 Ubuntu 的哪一种特色版本适合你。好消息是,任何选择都不能算错。


via: https://www.linux.com/learn/intro-to-linux/2017/5/which-official-ubuntu-flavor-best-you

作者:JACK WALLEN 译者:stevenzdg988 校对:wxy

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

Fedora 工作站默认带有一个小软件,叫做 espeak。它是一个声音合成器 —— 也就是转换文本为声音的软件。

在当今这个世界,发音设备已经非常普遍了。在智能电话、Amazon Alexa,甚至火车站的公告栏中都有声音合成器。而且,现在合成声音已经跟人类的声音很类似了。我们生活在 80bandaid 的科幻电影里!

与前面提到的这些工具相比,espeak 的发音听起来有一点原始。但最终 espeak 可以产生不错的发音效果。而且不管你觉得它有没有用,至少它可以给你带来一些乐趣。

运行 espeak

你可以在命令行为 espeak 设置各种参数。包括:

  • 振幅(-a
  • 音高调整 (-p
  • 读句子的速度 (-s
  • 单词间的停顿时间 (-g

每个选项都能产生不同的效果,你可以通过调整它们来让发音更加清晰。

你也可以通过命令行选项来选择不同的变音。比如,-ven+m3 表示另一种英式男音,而 -ven+f1 表示英式女音。你也可以尝试其他语言的发音。运行下面命令可以查看支持的语言列表:

espeak --voices

要注意,很多非英语的语言发音现在还处于实验阶段。

若要创建相应的 WAV 文件而不是真的讲出来,则可以使用 -w 选项:

espeak -w out.wav "Audio file test"

espeak 还能读出文件的内容。

espeak -f plaintextfile

你也可以通过标准输入传递要发音的文本。举个简单的例子,通过这种方式,你可以创建一个发音盒子,当事件发生时使用声音通知你。你的备份完成了?将下面命令添加到脚本的最后试试效果:

echo "Backup completed" | espeak -s 160 -a 100 -g 4

假如有日志文件中出现错误了:

tail -1F /your/log/file | grep --line-buffered 'ERROR' | espeak

或者你也可以创建一个报时钟表,每分钟报一次时:

while true; do date +%S | grep '00' && date +%H:%M | espeak; sleep 1; done

你会发现,espeak 的使用场景仅仅受你的想象所限制。享受你这会发音的 Fedora 系统吧!


via: https://fedoramagazine.org/add-speech-fedora-system/

作者:Alessio Ciregia 译者:lujun9972 校对:wxy

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

目前为止,你可能已经听说过比特币区块链。比特币的价格在过去几个月里猛涨了几倍,而且这种趋势几乎每天都在持续。对比特币的需求似乎一分钟都在以天文数字增长。

随着对数字货币的需求,需要用软件来管理货币:比特币客户端。在 Google Play 或 App Store 上搜索“比特币客户端”会得到不少结果。有很多支持 Linux 的比特币客户端,但是这里只说其中 5 个,没有特别的顺序。

为什么使用客户端?

客户端可以轻松管理你的比特币。许多客户端提供了不同级别的安全性,以确保你不会失去宝贵的数字货币。总之,你会发现它是帮助的,相信我。

1. Bitcoin Core

 title=

顾名思义,这是核心的比特币客户端。它有一个非常简单的界面。与其他流行的客户相比,它是安全的,并提供了最好的隐私保护。不好的是,它必须下载所有的比特币交易记录,这有超过 150GB 的数据。因此,它比其他客户端使用更多的资源。

要下载 Bitcoin Core 客户端,请访问下载页面。Ubuntu 用户可以通过 PPA 安装它:

sudo add-apt-repository ppa:bitcoin / bitcoin 
sudo apt update 
sudo apt install bitcoin*

2. Electrum

 title=

Electrum 是另一个有趣的比特币客户端。它是比大多数客户端更宽松,因为资金可以从密码恢复 —— 你无需担心忘记密钥。它提供了其他一些功能,可以方便地管理比特币,如多重签名和冷存储。Electrum 的一个好处是能够看到你的比特币的等值的法定货币。与 Bitcoin Core 不同,它不需要比特币交易记录的完整副本。

以下是如何下载 Electrum:

sudo apt-get install python3-setuptools python3-pyqt5 python3-pip
sudo pip3 install https://download.electrum.org/3.0.3/Electrum-3.0.3.tar.gz

请确保在该 网站 上查看要安装的相应版本。

3. Bitcoin Knots

Bitcoin Knots 与 Bitcoin Core 只有一点不同,它提供比 Bitcoin Core 更先进的功能。事实上,它衍生自 Bitcoin Core。不过重要的是要知道有些功能没有经过完善的测试。

与 Bitcoin Core 一样,Bitcoin Knots 也会使用大量空间,因为它下载完整比特币交易的副本。

PPA 和 tar 文件可以在这里下载。

4. Bither

 title=

Bither 有一个非常简单的用户界面,使用起来非常简单。它允许通过密码访问,并有一个汇率查看器以及冷/热模式。客户端很简单,但是可以用!

这里下载 Bither。

5. Armory

 title=

Armory 是另一个常见的比特币客户端。它包括许多功能,如冷存储。这使你可以在不连接互联网的情况下管理你的比特币。此外,还有额外的安全措施,以确保私钥完全免受攻击。

你可以从这个下载网站得到 deb 文件。打开 deb 并安装在 Ubuntu 或 Debian 上。你也可以在 GitHub 上下载项目。

现在你了解了有一个比特币客户端可以来管理你的数字货币,接着那么坐下来,放松一下,看着你的比特币价值增长。


via: https://www.maketecheasier.com/bitcoin-clients-for-linux/

作者:Bruno Edoh 译者:geekpi 校对:wxy

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

在 Linux 中,一个 .desktop 文件就是一个用来运行程序的快捷方式。没有 .desktop 的话,你的应用就不会在应用菜单中显示了,也无法使用像 Synapse 和 Albert 这样的第三方启动起启动了。

大多数应用在安装后都会自动创建 .desktop 文件,并将自己放入应用菜单中以方便访问。然而,如果是你自己从源代码中编译的程序或者自己下载的压缩格式的应用,那就不会做这些事情了,每次你都需要打开终端来执行它的二进制文件。显然这个过程很无聊也很麻烦。

本文将会告诉你如何为应用创建 .desktop 文件,从而让你能在应用菜单中启动该应用。

相关阅读How to Add App Drawers to Unity Launcher in Ubuntu

如何创建桌面启动器

.desktop 文件基本上就是一个包含程序信息的纯文本文件,通常根据是自己可见还是所有用户可见的不同而放在 ~/.local/share/applications 或者 /usr/share/applications/ 目录中。你在文件管理器中访问这两个目录,都会看到很多系统中已安装应用对应的 .desktop 文件存在。

为了演示,我将会为 Super Tux Kart 创建一个 .desktop 文件,这是一个我很喜欢玩的卡丁车竞赛游戏。Ubuntu 仓库中带了这个游戏,但版本一般不新。

要获得最新的版本就需要下载 tar 包,解压并执行其中的游戏启动文件。

你可以仿照这个步骤来为任何程序创建启动器。

注意:下面步骤假设程序压缩包放在 “Downloads” 目录下。

1、跳转到存放压缩包的目录,右击然后选择 “Extract here”。

 title=

2、解压后,进入新创建的目录然后找到可执行的文件。之后右击文件选择 “Run” 来启动程序,确定程序运行正常。

 title=

3、有时候,你在右键菜单中找不到 “Run” 选项。这通常是因为这个可执行文件是一个文本文件。你可以在终端中执行它,如果你使用 GNOME 的话,可以点击上面菜单栏中的 Files 菜单,然后选择 “Preferences”。

 title=

4、选择 “Behavior” 标签页然后选择 “Executable Text Files” 下的 “Run them”。现在右击可执行文本文件后也能出现 “Run” 选项了。

 title=

5、确认应用运行正常后,就可以退出它了。然后运行你的文本编辑器并将下面内容粘贴到空文本文件中:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/path/to/executable
Name=Name of Application
Icon=/path/to/icon

你需要更改 “Exec” 域的值为可执行文件的路径,并且将 “Name” 域的值改成应用的名称。大多数的程序都在压缩包中提供了一个图标,不要忘记把它也填上哦。在我们这个例子中,Super Tux Kart 的启动文件看起来是这样的:

 title=

6、将文件以 application-name.desktop 为名保存到 ~/.local/share/applications 目录中。.local 目录位于你的家目录下,是一个隐藏目录,你需要启用 “Show Hidden Files” 模式才能看到它。如果你希望这个应用所有人都能访问,则在终端中运行下面命令:

sudo mv ~/.local/share/applications/<application-name`.desktop`> /usr/share/applications/

当然,别忘了把命令中的 <application-name.desktop> 改成真实的 .desktop 文件名。

7、完成后,打开应用菜单,就能看到应用出现在其中,可以使用了。

 title=

这个方法应该适用于所有主流的 Linux 操作系统。下面是另一张 Super Tux Kart 在 elementary OS 的应用启动器 (slingshot) 上的截图

 title=

如果你觉得本教程还有点用的话,欢迎留言。


via: https://www.maketecheasier.com/create-desktop-file-linux/

作者:Ayo Isaiah 译者:lujun9972 校对:wxy

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

英特尔处理器曝出了一个严重的硬件设计漏洞,迫使包括 Linux、Windows 在内的主要操作系统和各大云计算服务商都忙着打补丁。因为漏洞信息没有解密,所以目前只能通过已发布的补丁反推这个漏洞

这里是一篇对该漏洞的技术分析文章。

在十月底的时候,KAISER 补丁集被披露了;它做了一项工作,将内核空间与用户空间使用的 页表 page tables 进行了隔离,以解决 x86 处理器上向攻击者透露内核布局的安全漏洞。这些补丁是自它们被公布以来,这一星期中最值关注的事情,但是,它们似乎正在接近最终的状态。这应该是再次审视它们的合适机会。

这项工作被重命名为 “ 内核页表隔离 kernel page-table isolation ” (KPTI),但是目的是一样的:分割页表,将现在被用户空间和内核空间共享使用的这张表分成两套,内核空间和用户空间各自使用一个。这对内核的内存管理产生了根本性的变化,并且,这是本来人们期望先争论多年再做决定的,尤其是考虑到它的性能影响的时候。不过,KPTI 仍然处于快速发展的轨道上。一组预备补丁 已被被合并到 4.15 - rc4 之后的主版本线上了 — 一般情况下仅重要的修复才被允许这样做 — 并且其余的似乎被确定进入 4.16 版的合并窗口中。许多内核开发者都在这项工作上投入了大量的时间,并且 Linus Torvalds 要求 将这项工作 回迁 backport 到长期稳定内核中。

也就是说,KPTI 已经在最后期限的压力下安全补丁的所有标记都已经就绪了。对于任何基于 ARM 的读者,在这里值的注意的是,在这项工作中有一个 为 arm64 的等效补丁集

51 个补丁乃至更多

在这篇文章中,x86 补丁系列正处在 163 版本。它包含 51 个补丁,因此,我们应该感谢那些没有公开的版本。最初的补丁集,由 Dave Hansen 发布,由 Thomas Gleixner、Peter Zijlstra、Andy Lutomirski、和 Hugh Dickins 根据许多其它人的建议,做了大量的修订。任何还存在的缺陷都不是由于没有足够多的有经验的开发人员过目所导致的。

在现代系统中,页表是以一个树形结构进行组织的,这样可以高效地存储稀疏内存映射和支持巨页特性;可以查看这篇 2005 年的文章 了解更多细节以及它是怎么工作的示意图。在一个有四级页面表的系统上(目前的大多数大型系统都是这样),顶级是页面全局目录(PGD)。紧接着是页面上层目录(PUD)、页面中层目录(PMD)和页面表条目(PTE)。有五级页面表的系统是在 PGD 下面插入了一层(称为 P4D)。

页面故障解析通常遍历整个树去查找所需的 PTE,但是,巨页可以被更高层级的特定条目所表示。例如,一个 2MB 的内存 chunk 既可以由 PMD 层级的一个单个的巨页条目表示,也可以由一个单页 PTE 条目的完整页面表示。

在当前的内核中,每个处理器有一个单个的 PGD;在 KPTI 系列补丁中所采取的第一步的其中一个措施是,去创建一个第二个 PGD。当内核运行时,原来的仍然在使用;它映射所有的地址空间。当处理器运行在用户空间时,(在打完该系列补丁之后)第二个被激活。它指向属于该进程的页面的相同目录层次,但是,描述内核空间(位于虚拟地址空间的顶端)的部分通常都不在这里。

页表条目包含权限描述位,它们记录了内存该如何被访问;不用说都知道,这些位是用来设置阻止用户空间访问内核页面的,即便是通过那些被映射到该地址空间的页面访问。不幸的是,一些硬件级的错误允许用户空间的攻击者去确定一个给定的内核空间地址是否被映射,而不管那个页面上映射的地址是否被允许访问。而那个信息可以被用于击败内核地址空间布局随机化,可以使一个本地的攻击者更易于得逞。在 KPTI 背后的核心思想是,切换到一个没有内核空间映射的 PGD,将会使基于这个漏洞的攻击失效,而到现在为止,我们还没有看到这些攻击。

细节

这个想法很简单,但是,就像经常发生的那样,有各种各样麻烦的细节使得这个简单的想法变成了一个由 51 个部分构成的补丁集。其中最初的一个是,如果处理器在用户模式运行时响应一个硬件中断,处理中断需要的内核代码将在地址空间中不存在。因此,必须有足够的内核代码映射在用户模式中,以能够切换回到内核 PGD,使剩余的代码也可用。对于 traps、非屏蔽中断、和系统调用,也存在一个相似的情况。这个代码很小而且可以与其它部分隔离,但是,在处理安全且有效地切换时,涉及到一些很复杂的细节。

另一个难题来自 x86 本地描述符表(LDT)的构成,它可以被用于去改变用户空间的内存布局。它可以使用鲜为人知的 modify_ldt() 系统调用来做微调。例如,在 Linux 上早期的 POSIX 线程实现,使用了 LDT 去创建一个本地线程存储区域。在现在的 Linux 系统上,LDT 几乎不再使用了,但是,一些应用程序(比如,Wine)仍然需要它。当它被使用时,LDT 必须能够被用户空间和内核空间都可以访问到,但是,它必须一直处于内核空间中。KPTI 补丁集打乱内核附近的内存,在 PGD 级别上为 LDT 保留一个完全的条目;因此,vmalloc() 调用的可用空间收缩到仅有 12,800TB。那是一个非常巨大的 LDT 空间数,可以满足有很多 CPU 系统的需要。这种变化的其中一个结果是,LDT 的位置将是固定的,并且已知道用户空间 ——因此这将是个潜在的问题,由于覆写 LDT 的能力很容易被用来破坏整个系统。在这个系列的最终的补丁是映射为只读 LDT,以阻止此类攻击。

另一个潜在的安全缺陷是,如果内核可以一直被操纵直至返回用户空间,以至于不切换回经过过滤的 PGD。因为内核空间 PGD 也映射用户空间内存,这种疏忽可能在一段时间内不会被察觉到。对此问题的应对方法是将虚拟内存空间中用户空间的部分以非可执行的方式映射到内核的 PGD。只要用户空间(的程序)开始从一个错误的页面表开始执行,它将会立即崩溃。

最后,虽然所有已存在的 x86 处理器似乎都会受到这个信息泄露的漏洞影响,但是,以后的处理器可能不会受此影响。KPTI 有一个可测量的运行时成本,估计在 5%。有些用户也许不愿意为这些成本埋单,尤其是他们拿到了不存在这个问题的新处理器之后。为此将会有一个 nopti (内核)命令行选项来在启动的时候禁用这个机制。这个补丁系列也增加了一个新的“特性”标识(X86_BUG_CPU_INSECURE)去标识有漏洞的 CPU;它被设置在现在所有的 x86 CPU 上(LCTT 译注:AMD 表示不背这锅),但是在以后的硬件上可能没有。如果没有该特性标识,页面隔离将自动被关闭。

在 4.16 版的合并窗口打开之前剩下将近一个月。在这期间,针对一些新发现而不可避免的小毛病,KPTI 补丁集毫无疑问的将迎来一系列的小修订。一旦所有的事情都敲定了,看起来这些代码将会被合并同时以相对快的速度迁回到稳定版本的内核。显而易见的是,我们将会收到一个更慢,但是更安全的内核作为一个新年礼物。


via: https://lwn.net/SubscriberLink/741878/eb6c9d3913d7cb2b/

作者:Jonathan Corbet 译者:qhwdw 校对:wxy

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