分类 技术 下的文章

新的笔记本有触摸屏,它可以折叠成平板电脑,我听说 gnome-shell 将是桌面环境的一个很好的选择,我设法调整它以按照现有的习惯使用。

然而,我发现一个很大的问题,它怎么会鼓励人们从互联网上下载随机扩展,并将它们作为整个桌面环境的一部分运行呢? 一个更大的问题是,gnome-corechrome-gnome-shell 有强制依赖,这个插件如果不用 root 用户编辑 /etc 下的文件则无法禁用,这会给将我的桌面环境暴露给网站。

访问这个网站,它会知道你已经安装了哪些扩展,并且能够安装更多。我不信任它,我不需要那样,我不想那样。我为此感到震惊。

我想出了一个临时解决方法。(LCTT 译注:作者做了一个空的依赖包来满足依赖,而不会做任何可能危害你的隐私和安全的操作。)

人们会在 firefox 中如何做呢?

描述

chrome-gnome-shell 是 gnome-core 的一个强制依赖项,它安装了一个你可能不需要的浏览器插件,并强制它使用系统级的 chrome 策略。

我认为使用 chrome-gnome-shell 会不必要地增加系统的攻击面,我作为主要用户,它会获取下载和执行随机未经审查代码的可疑特权。

(我做的)这个包满足了 chrome-gnome-shell 的依赖,但不会安装任何东西。

请注意,在安装此包之后,如果先前安装了 chrome-gnome-shell,则需要清除 chrome-gnome-shell,以使其在 /etc/chromium 中删除 chromium 策略文件。

说明

apt install equivs
equivs-build contain-gnome-shell
sudo dpkg -i contain-gnome-shell_1.0_all.deb
sudo dpkg --purge chrome-gnome-shell

via: http://www.enricozini.org/blog/2018/debian/gnome-without-chrome-gnome-shell/

作者:Enrico Zini 译者:geekpi 校对:wxy

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

如果你是一个 Linux 系统管理方面的新手,如何在 Linux 上使用命令行方式去安装或者更新 Intel/AMD CPU 的微码固件呢?

微码 microcode 就是由 Intel/AMD 提供的 CPU 固件。Linux 的内核可以在引导时更新 CPU 固件,而无需 BIOS 更新。处理器的微码保存在内存中,在每次启动系统时,内核可以更新这个微码。这些来自 Intel/AMD 的微码的更新可以去修复 bug 或者使用补丁来防范 bug。这篇文章演示了如何使用包管理器或由 lntel 提供的 Linux 处理器微码更新来安装 AMD 或 Intel 的微码更新。

如何查看当前的微码状态

以 root 用户运行下列命令:

# dmesg | grep microcode

输出如下:

Verify microcode update on a CentOS RHEL Fedora Ubuntu Debian Linux

请注意,你的 CPU 在这里完全有可能出现没有可用的微码更新的情况。如果是这种情况,它的输出可能是如下这样的:

[ 0.952699] microcode: sig=0x306a9, pf=0x10, revision=0x1c
[ 0.952773] microcode: Microcode Update Driver: v2.2.

如何在 Linux 上使用包管理器去安装微码固件更新

对于运行在 x86/amd64 架构的 CPU 上的 Linux 系统,Linux 自带了工具去更改或者部署微码固件。在 Linux 上安装 AMD 或者 Intel 的微码固件的过程如下:

  1. 打开终端应用程序
  2. Debian/Ubuntu Linux 用户推输入:sudo apt install intel-microcode
  3. CentOS/RHEL Linux 用户输入:sudo yum install microcode_ctl

对于流行的 Linux 发行版,这个包的名字一般如下 :

  • microcode_ctllinux-firmware —— CentOS/RHEL 微码更新包
  • intel-microcode —— Debian/Ubuntu 和衍生发行版的适用于 Intel CPU 的微码更新包
  • amd64-microcode —— Debian/Ubuntu 和衍生发行版的适用于 AMD CPU 的微码固件
  • linux-firmware —— 适用于 AMD CPU 的 Arch Linux 发行版的微码固件(你不用做任何操作,它是默认安装的)
  • intel-ucode —— 适用于 Intel CPU 的 Arch Linux 发行版微码固件
  • microcode_ctllinux-firmwareucode-intel —— Suse/OpenSUSE Linux 微码更新包

警告 :在某些情况下,微码更新可能会导致引导问题,比如,服务器在引导时被挂起或者自动重置。以下的步骤是在我的机器上运行过的,并且我是一个经验丰富的系统管理员。对于由此引发的任何硬件故障,我不承担任何责任。在做固件更新之前,请充分评估操作风险!

示例

在使用 Intel CPU 的 Debian/Ubuntu Linux 系统上,输入如下的 apt 命令/apt-get 命令

$ sudo apt-get install intel-microcode

示例输出如下:

How to install Intel microcode firmware Linux

必须重启服务器以激活微码 更新:

$ sudo reboot

重启后检查微码状态:

# dmesg | grep 'microcode'

示例输出如下:

[ 0.000000] microcode: microcode updated early to revision 0x1c, date = 2015-02-26
[ 1.604672] microcode: sig=0x306a9, pf=0x10, revision=0x1c
[ 1.604976] microcode: Microcode Update Driver: v2.01 <[email protected]>, Peter Oruba

如果你使用的是 RHEL/CentOS 系统,使用 yum 命令 尝试去安装或者更新以下两个包:

$ sudo yum install linux-firmware microcode_ctl
$ sudo reboot
$ sudo dmesg | grep 'microcode'

如何更新/安装从 Intel 网站上下载的微码

只有在你的 CPU 制造商建议这么做的时候,才可以使用下列的方法去更新/安装微码,除此之外,都应该使用上面的方法去更新。大多数 Linux 发行版都可以通过包管理器来维护、更新微码。使用包管理器的方法是经过测试的,对大多数用户来说是最安全的方式。

如何为 Linux 安装 Intel 处理器微码块(20180108 发布)

首先通过 AMD 或 Intel 网站 去获取最新的微码固件。在本示例中,我有一个名称为 ~/Downloads/microcode-20180108.tgz 的文件(不要忘了去验证它的检验和),它的用途是去防范 meltdown/Spectre bug。先使用 tar 命令去提取它:

$ mkdir firmware
$ cd firmware
$ tar xvf ~/Downloads/microcode-20180108.tgz
$ ls -l

示例输出如下:

drwxr-xr-x 2 vivek vivek 4096 Jan 8 12:41 intel-ucode
-rw-r--r-- 1 vivek vivek 4847056 Jan 8 12:39 microcode.dat
-rw-r--r-- 1 vivek vivek 1907 Jan 9 07:03 releasenote
我只在 CentOS 7.x/RHEL、 7.x/Debian 9.x 和 Ubuntu 17.10 上测试了如下操作。如果你没有找到 /sys/devices/system/cpu/microcode/reload 文件的话,更老的发行版所带的更老的内核也许不能使用此方法。参见下面的讨论。请注意,在应用了固件更新之后,有一些客户遇到了系统重启现象。特别是对于那些运行 Intel Broadwell 和 Haswell CPU 的用于客户机和数据中心服务器上的系统。不要在 Intel Broadwell 和 Haswell CPU 上应用 20180108 版本。尽可能使用软件包管理器方式。

检查一下,确保存在 /sys/devices/system/cpu/microcode/reload

$ ls -l /sys/devices/system/cpu/microcode/reload

你必须使用 cp 命令 拷贝 intel-ucode 目录下的所有文件到 /lib/firmware/intel-ucode/ 下面:

$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

你只需要将 intel-ucode 这个目录整个拷贝到 /lib/firmware/ 目录下即可。然后在重新加载接口中写入 1 去重新加载微码文件:

# echo 1 > /sys/devices/system/cpu/microcode/reload

更新现有的 initramfs,以便于下次启动时它能通过内核来加载:

$ sudo update-initramfs -u
$ sudo reboot

重启后通过以下的命令验证微码是否已经更新:

# dmesg | grep microcode

到此为止,就是更新处理器微码的全部步骤。如果一切顺利的话,你的 Intel CPU 的固件将已经是最新的版本了。

关于作者

作者是 nixCraft 的创始人、一位经验丰富的系统管理员、Linux/Unix 操作系统 shell 脚本培训师。他与全球的包括 IT、教育、国防和空间研究、以及非盈利组织等各行业的客户一起工作。可以在 TwitterFacebookGoogle+ 上关注他。


via: https://www.cyberciti.biz/faq/install-update-intel-microcode-firmware-linux/

作者:Vivek Gite 译者:qhwdw 校对:wxy

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

在 Linux 系统中,你可能会在主目录中存储了大量文件和文件夹。但在这些文件之外,你知道你的主目录还附带了很多隐藏的文件和文件夹吗?如果你在主目录中运行 ls -a,你会发现一堆带有点前缀的隐藏文件和目录。这些隐藏的文件到底做了什么?

在主目录中隐藏的文件是干什么用的?

 title=

通常,主目录中的隐藏文件和目录包含该用户程序访问的设置或数据。它们不打算让用户编辑,只需要应用程序进行编辑。这就是为什么它们被隐藏在用户的正常视图之外。

通常,删除和修改自己主目录中的文件不会损坏操作系统。然而,依赖这些隐藏文件的应用程序可能不那么灵活。从主目录中删除隐藏文件时,通常会丢失与其关联的应用程序的设置。

依赖该隐藏文件的程序通常会重新创建它。 但是,你将从“开箱即用”设置开始,如全新用户一般。如果你在使用应用程序时遇到问题,那实际上可能是一个巨大的帮助。它可以让你删除可能造成麻烦的自定义设置。但如果你不这样做,这意味着你需要把所有的东西都设置成原来的样子。

主目录中某些隐藏文件的特定用途是什么?

 title=

每个人在他们的主目录中都会有不同的隐藏文件。每个人都有一些。但是,无论应用程序如何,这些文件都有类似的用途。

系统设置

系统设置包括桌面环境和 shell 的配置。

  • shell 和命令行程序的配置文件:根据你使用的特定 shell 和类似命令的应用程序,特定的文件名称会变化。你会看到 .bashrc.vimrc.zshrc。这些文件包含你已经更改的有关 shell 的操作环境的任何设置,或者对 vim 等命令行实用工具的设置进行的调整。删除这些文件将使关联的应用程序返回到其默认状态。考虑到许多 Linux 用户多年来建立了一系列微妙的调整和设置,删除这个文件可能是一个非常头疼的问题。
  • 用户配置文件:像上面的配置文件一样,这些文件(通常是 .profile.bash_profile)保存 shell 的用户设置。该文件通常包含你的 PATH 环境变量。它还包含你设置的别名。用户也可以在 .bashrc 或其他位置放置别名。PATH 环境变量控制着 shell 寻找可执行命令的位置。通过添加或修改 PATH,可以更改 shell 的命令查找位置。别名更改了原有命令的名称。例如:一个别名可能将 ls -l 设置为 ll。这为经常使用的命令提供基于文本的快捷方式。如果删除 .profile 文件,通常可以在 /etc/skel 目录中找到默认版本。
  • 桌面环境设置:这里保存你的桌面环境的任何定制。其中包括桌面背景、屏幕保护程序、快捷键、菜单栏和任务栏图标以及用户针对其桌面环境设置的其他任何内容。当你删除这个文件时,用户的环境会在下一次登录时恢复到新的用户环境。

应用配置文件

你会在 Ubuntu 的 .config 文件夹中找到它们。 这些是针对特定应用程序的设置。 它们将包含喜好列表和设置等内容。

  • 应用程序的配置文件:这包括应用程序首选项菜单中的设置、工作区配置等。 你在这里找到的具体取决于应用程序。
  • Web 浏览器数据:这可能包括书签和浏览历史记录等内容。这些文件大部分是缓存。这是 Web 浏览器临时存储下载文件(如图片)的地方。删除这些内容可能会降低你首次访问某些媒体网站的速度。
  • 缓存:如果用户应用程序缓存仅与该用户相关的数据(如 Spotify 应用程序存储播放列表的缓存),则主目录是存储该目录的默认地点。 这些缓存可能包含大量数据或仅包含几行代码:这取决于应用程序需要什么。 如果你删除这些文件,则应用程序会根据需要重新创建它们。
  • 日志:一些用户应用程序也可能在这里存储日志。根据开发人员设置应用程序的方式,你可能会发现存储在你的主目录中的日志文件。然而,这不是一个常见的选择。

结论

在大多数情况下,你的 Linux 主目录中的隐藏文件用于存储用户设置。 这包括命令行程序以及基于 GUI 的应用程序的设置。删除它们将删除用户设置。 通常情况下,它不会导致程序被破坏。


via: https://www.maketecheasier.com/hidden-files-linux-home-directory/

作者:Alexander Fox 译者:MjSeven 校对:wxy

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

目标

学习在 Linux 上使用 pass 密码管理器来管理你的密码

条件

  • 需要 root 权限来安装需要的包

难度

简单

约定

  • # - 执行指定命令需要 root 权限,可以是直接使用 root 用户来执行或者使用 sudo 命令来执行
  • $ - 使用普通的非特权用户执行指定命令

介绍

如果你有根据不同的意图设置不同密码的好习惯,你可能已经感受到需要一个密码管理器的必要性了。在 Linux 上有很多选择,可以是专有软件(如果你敢用的话)也可以是开源软件。如果你跟我一样喜欢简洁的话,你可能会对 pass 感兴趣。

第一步

pass 作为一个密码管理器,其实际上是一些你可能早已每天使用的、可信赖且实用的工具的一种封装,比如 gpggit 。虽然它也有图形界面,但它专门设计能成在命令行下工作的:因此它也可以在 headless 机器上工作(LCTT 译注:根据 wikipedia 的说法,所谓 headless 是指没有显示器、键盘和鼠标的机器,一般通过网络链接来控制)。

安装

pass 在主流的 Linux 发行版中都是可用的,你可以通过包管理器安装:

Fedora

# dnf install pass

RHEL 和 CentOS

pass 不在官方仓库中,但你可以从 epel 中获取道它。要在 CentOS7 上启用后面这个源,只需要执行:

# yum install epel-release

然而在 Red Hat 企业版的 Linux 上,这个额外的源是不可用的;你需要从 EPEL 官方网站上下载它。

Debian 和 Ubuntu

# apt-get install pass

Arch Linux

# pacman -S pass

初始化密码仓库

安装好 pass 后,就可以开始使用和配置它了。首先,由于 pass 依赖于 gpg 来对我们的密码进行加密并以安全的方式进行存储,我们必须准备好一个 gpg 密钥对。

首先我们要初始化密码仓库:这就是一个用来存放 gpg 加密后的密码的目录。默认情况下它会在你的 $HOME 创建一个隐藏目录,不过你也可以通过使用 PASSWORD_STORE_DIR 这一环境变量来指定另一个路径。让我们运行:

$ pass init

然后 password-store 目录就创建好了。现在,让我们来存储我们第一个密码:

$ pass edit mysite

这会打开默认文本编辑器,我么只需要输入密码就可以了。输入的内容会用 gpg 加密并存储为密码仓库目录中的 mysite.gpg 文件。

pass 以目录树的形式存储加密后的文件,也就是说我们可以在逻辑上将多个文件放在子目录中以实现更好的组织形式,我们只需要在创建文件时指定存在哪个目录下就行了,像这样:

$ pass edit foo/bar

跟上面的命令一样,它也会让你输入密码,但是创建的文件是放在密码仓库目录下的 foo 子目录中的。要查看文件组织结构,只需要不带任何参数运行 pass 命令即可:

$ pass
Password Store
├── foo
│   └── bar
└── mysite

若想修改密码,只需要重复创建密码的操作就行了。

获取密码

有两种方法可以获取密码:第一种会显示密码到终端上,方法是运行:

pass mysite

然而更好的方法是使用 -c 选项让 pass 将密码直接拷贝到剪切板上:

pass -c mysite

这种情况下剪切板中的内容会在 45 秒后自动清除。两种方法都会要求你输入 gpg 密码。

生成密码

pass 也可以为我们自动生成(并自动存储)安全密码。假设我们想要生成一个由 15 个字符组成的密码:包含字母,数字和特殊符号,其命令如下:

pass generate mysite 15

若希望密码只包含字母和数字则可以是使用 --no-symbols 选项。生成的密码会显示在屏幕上。也可以通过 --clip-c 选项让 pass 把密码直接拷贝到剪切板中。通过使用 -q--qrcode 选项来生成二维码:

qrcode

从上面的截屏中可看出,生成了一个二维码,不过由于运行该命令时 mysite 的密码已经存在了,pass 会提示我们确认是否要覆盖原密码。

pass 使用 /dev/urandom 设备作为(伪)随机数据生成器来生成密码,同时它使用 xclip 工具来将密码拷贝到粘帖板中,而使用 qrencode 来将密码以二维码的形式显示出来。在我看来,这种模块化的设计正是它最大的优势:它并不重复造轮子,而只是将常用的工具包装起来完成任务。

你也可以使用 pass mvpass cppass rm 来重命名、拷贝和删除密码仓库中的文件。

将密码仓库变成 git 仓库

pass 另一个很棒的功能就是可以将密码仓库当成 git 仓库来用:通过版本管理系统能让我们管理密码更方便。

pass git init

这会创建 git 仓库,并自动提交所有已存在的文件。下一步就是指定跟踪的远程仓库了:

pass git remote add <name> <url>

我们可以把这个密码仓库当成普通仓库来用。唯一的不同点在于每次我们新增或修改一个密码,pass 都会自动将该文件加入索引并创建一个提交。

pass 有一个叫做 qtpass 的图形界面,而且也支持 Windows 和 MacOs。通过使用 PassFF 插件,它还能获取 firefox 中存储的密码。在它的项目网站上可以查看更多详细信息。试一下 pass 吧,你不会失望的!


via: https://linuxconfig.org/how-to-organize-your-passwords-using-pass-password-manager

作者:Egidio Docile 译者:lujun9972 校对:Locez

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

CGManager 是一个核心的特权守护进程,通过一个简单的 D-Bus API 管理你所有的 cgroup。它被设计用来处理嵌套的 LXC 容器以及接受无特权的请求,包括解析用户名称空间的 UID/GID。

组件

cgmanager

这个守护进程在宿主机上运行,​​将 cgroupfs 挂载到一个独立的挂载名称空间(所以它不能从宿主机上看到),绑定 /sys/fs/cgroup/cgmanager/sock 用于传入的 D-Bus 查询,并通常处理宿主机上直接运行的所有客户端。

cgmanager 既接受使用 D-Bus + SCM 凭证的身份验证请求,用于在命名空间之间转换 uid、gid 和 pid,也可以使用简单的 “unauthenticated”(只是初始的 ucred)D-Bus 来查询来自宿主机级别的查询。

cgproxy

你可能会在两种情况下看到这个守护进程运行。在宿主机上,如果你的内核老于 3.8(没有 pidns 连接支持)或处于容器中(只有 cgproxy 运行)。

cgproxy 本身并不做任何 cgroup 配置更改,而是如其名称所示,代理请求给主 cgmanager 进程。

这是必要的,所以一个进程可以直接使用 D-Bus(例如使用 dbus-send)与 /sys/fs/cgroup/cgmanager/sock 进行通信。

之后 cgproxy 将从该查询中得到 ucred,并对真正的 cgmanager 套接字进行身份验证的 SCM 查询,并通过 ucred 结构体传递参数,使它们能够正确地转换为 cgmanager 可以理解的宿主机命名空间 。

cgm

一个简单的命令行工具,与 D-Bus 服务通信,并允许你从命令行执行所有常见的 cgroup 操作。

通信协议

如上所述,cgmanager 和 cgproxy 使用 D-Bus。建议外部客户端(所以不要是 cgproxy)使用标准的 D-Bus API,不要试图实现 SCM creds 协议,因为它是不必要的,并且容易出错。

相反,只要简单假设与 /sys/fs/cgroup/cgmanager/sock 的通信总是正确的。

cgmanager API 仅在独立的 D-Bus 套接字上可用,cgmanager 本身不连接到系统总线,所以 cgmanager/cgproxy 不要求有运行中的 dbus 守护进程。

你可以在这里阅读更多关于 D-Bus API。

许可证

CGManager 是免费软件,大部分代码是根据 GNU LGPLv2.1+ 许可条款发布的,一些二进制文件是在 GNU GPLv2 许可下发布的。

该项目的默认许可证是 GNU LGPLv2.1+

支持

CGManager 的稳定版本支持依赖于 Linux 发行版以及它们自己承诺推出稳定修复和安全更新。

你可以从 Canonical Ltd 获得对 Ubuntu LTS 版本的 CGManager 的商业支持。


via: https://linuxcontainers.org/cgmanager/introduction/

作者:Canonical Ltd. 译者:geekpi 校对:wxy

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

你有没有发现自己在某种情况下想要折叠或中断命令的输出,以适应特定的宽度?在运行虚拟机的时候,我遇到了几次这种的情况,特别是没有 GUI 的服务器。 以防万一,如果你想限制一个命令的输出为一个特定的宽度,现在看看这里! fold 命令在这里就能派的上用场了! fold 命令会以适合指定的宽度调整输入文件中的每一行,并将其打印到标准输出。

在这个简短的教程中,我们将看到 fold 命令的用法,带有实例。

fold 命令示例教程

fold 命令是 GNU coreutils 包的一部分,所以我们不用为安装的事情烦恼。

fold 命令的典型语法:

fold [OPTION]... [FILE]...

请允许我向您展示一些示例,以便您更好地了解 fold 命令。 我有一个名为 linux.txt 文件,内容是随机的。

要将上述文件中的每一行换行为默认宽度,请运行:

fold linux.txt

每行 80 列是默认的宽度。 这里是上述命令的输出:

正如你在上面的输出中看到的,fold 命令已经将输出限制为 80 个字符的宽度。

当然,我们可以指定您的首选宽度,例如 50,如下所示:

fold -w50 linux.txt

示例输出:

我们也可以将输出写入一个新的文件,如下所示:

fold -w50 linux.txt > linux1.txt

以上命令将把 linux.txt 的行宽度改为 50 个字符,并将输出写入到名为 linux1.txt 的新文件中。

让我们检查一下新文件的内容:

cat linux1.txt

你有没有注意到前面的命令的输出? 有些词在行之间被中断。 为了解决这个问题,我们可以使用 -s 标志来在空格处换行。

以下命令将给定文件中的每行调整为宽度 50,并在空格处换到新行:

fold -w50 -s linux.txt

示例输出:

看清楚了吗? 现在,输出很清楚。 换到新行中的单词都是用空格隔开的,所在行单词的长度大于 50 的时候就会被调整到下一行。

在所有上面的例子中,我们用列来限制输出宽度。 但是,我们可以使用 -b 选项将输出的宽度强制为指定的字节数。 以下命令以 20 个字节中断输出。

fold -b20 linux.txt

示例输出:

另请阅读:

有关更多详细信息,请参阅 man 手册页。

man fold

这些就是所有的内容了。 您现在知道如何使用 fold 命令以适应特定的宽度来限制命令的输出。 我希望这是有用的。 我们将每天发布更多有用的指南。 敬请关注!

干杯!


via: https://www.ostechnix.com/fold-command-tutorial-examples-beginners/

作者:SK 译者:Flowsnow 校对:wxy

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