mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-28 23:20:10 +08:00
commit
6d95be67dc
@ -1,66 +1,59 @@
|
||||
|
||||
Openstack 30个经典面试问题和解答
|
||||
30 个 Openstack 经典面试问题和解答
|
||||
======
|
||||
|
||||
现在,大多数公司都试图将它们的 IT 基础设施和 Telco Infra 迁移到私有云,即OpenStack。如果你打算面试 OpenStack 管理员这个岗位,那么下面列出的这些面试问题可能会帮助你通过面试。
|
||||
现在,大多数公司都试图将它们的 IT 基础设施和电信设施迁移到私有云, 如 OpenStack。如果你打算面试 OpenStack 管理员这个岗位,那么下面列出的这些面试问题可能会帮助你通过面试。
|
||||
|
||||
![](https://www.linuxtechi.com/wp-content/uploads/2018/11/OpenStack-Interview-Questions.jpg)
|
||||
|
||||
### Q:1 说一下 OpenStack 及其主要组件?
|
||||
|
||||
Ans: OpenStack 是一系列开源软件,这些软件组成了一个云提供软件,也就是 OpenStack,被称为开源软件或项目栈。
|
||||
答: OpenStack 是一系列开源软件,这些软件组成了一个云供给软件,也就是 OpenStack,意即开源软件或项目栈。
|
||||
|
||||
下面是 OpenStack 的主要关键组件:
|
||||
|
||||
* **Nova** – 用于计算级别管理虚拟机,并在计算或管理程序级别执行其他计算任务。
|
||||
* **Nova** – 用于在计算级别管理虚拟机,并在计算或管理程序级别执行其他计算任务。
|
||||
* **Neutron** – 为虚拟机、计算和控制节点提供网络功能。
|
||||
* **Keystone** – 为所有云用户和 OpenStack 云服务提供身份认证服务。换句话说,我们可以说 Keystone 是一个提供给云用户和云服务访问权限的方法。
|
||||
* **Horizon** – 用于提供图形用户界面。使用图形化管理界面可以很轻松地完成各种日常操作任务。
|
||||
* **Cinder** – 用于提供块存储功能。通常来说 OpenStack 的 Cinder 中集成了 Chef 和 ScaleIO 来共同为计算和控制节点提供块存储服务。
|
||||
* **Swift** – 用于提供对象存储功能。通常来说,Glance 管理的镜像是存储在对象存储空间的。扩展存储就像 ScaleIO 也可以提供对象存储,可以很容易的集成 Glance 服务。
|
||||
* **Swift** – 用于提供对象存储功能。通常来说,Glance 管理的镜像是存储在对象存储空间的。像 ScaleIO 这样的外部存储也可以提供对象存储,可以很容易的集成 Glance 服务。
|
||||
* **Glance** – 用于提供镜像服务。使用 Glance 的管理平台来上传和下载云镜像。
|
||||
* **Heat** – 用于提供编排服务或功能。使用 Heat 管理平台可以轻松地将虚拟机作为堆栈,并且根据需要可以将虚拟机扩展或收缩。
|
||||
* **Ceilometer** – 用于提供计量与监控功能。
|
||||
|
||||
|
||||
|
||||
### Q:2 什么服务通常在控制节点上运行?
|
||||
|
||||
Ans: 以下服务通常在控制节点上运行:
|
||||
答: 以下服务通常在控制节点上运行:
|
||||
|
||||
* 认证服务 ( KeyStone)
|
||||
* 镜像服务 ( Glance)
|
||||
* Nova 服务比如 Nova API, Nova Scheduler 和 Nova DB
|
||||
* 认证服务(KeyStone)
|
||||
* 镜像服务(Glance)
|
||||
* Nova 服务比如 Nova API、Nova Scheduler 和 Nova DB
|
||||
* 块存储和对象存储服务
|
||||
* Ceilometer 服务
|
||||
* MariaDB / MySQL 和 RabbitMQ 服务
|
||||
* 网络(Neutron)和网络代理的管理服务
|
||||
* 编排服务 (Heat)
|
||||
|
||||
|
||||
* 编排服务(Heat)
|
||||
|
||||
### Q:3 什么服务通常在计算节点上运行?
|
||||
|
||||
Ans: 以下服务通常在计算节点运行:
|
||||
答: 以下服务通常在计算节点运行:
|
||||
|
||||
* Nova 计算
|
||||
* 网络服务,比如 OVS
|
||||
|
||||
|
||||
|
||||
### Q:4 计算节点上虚拟机的默认地址是什么?
|
||||
|
||||
Ans: 虚拟机存储在计算节点的 “ **/var/lib/nova/instances** ”
|
||||
答: 虚拟机存储在计算节点的 `/var/lib/nova/instances`。
|
||||
|
||||
### Q:5 Glance 镜像的默认地址是什么?
|
||||
|
||||
Ans: 因为Glance 服务运行在控制节点上,所以 Glance 镜像都被存储在控制节点的“ **/var/lib/glance/images** ”文件夹下。
|
||||
答: 因为 Glance 服务运行在控制节点上,所以 Glance 镜像都被存储在控制节点的 `/var/lib/glance/images` 文件夹下。
|
||||
|
||||
想了解更多请访问 : [**在 OpenStack 中如何使用命令行创建和删除虚拟机**][1]
|
||||
想了解更多请访问:[在 OpenStack 中如何使用命令行创建和删除虚拟机][1]
|
||||
|
||||
### Q:6 说一下如何使用命令行启动一个虚拟机?
|
||||
|
||||
Ans: 我们可以使用如下 OpenStack 命令来启动一个新的虚拟机:
|
||||
答: 我们可以使用如下 OpenStack 命令来启动一个新的虚拟机:
|
||||
|
||||
```
|
||||
# openstack server create --flavor {flavor-name} --image {Image-Name-Or-Image-ID} --nic net-id={Network-ID} --security-group {Security_Group_ID} –key-name {Keypair-Name} <VM_Name>
|
||||
@ -68,7 +61,7 @@ Ans: 我们可以使用如下 OpenStack 命令来启动一个新的虚拟机:
|
||||
|
||||
### Q:7 如何在 OpenStack 中显示用户的网络命名空间列表?
|
||||
|
||||
Ans: 可以使用 “ip net ns” 命令来列出用户的网络命名空间。
|
||||
答: 可以使用 `ip net ns` 命令来列出用户的网络命名空间。
|
||||
|
||||
```
|
||||
~# ip netns list
|
||||
@ -79,9 +72,9 @@ vrouter
|
||||
|
||||
### Q:8 如何在 OpenStack 中执行网络命名空间内的命令?
|
||||
|
||||
Ans: 假设我们想在 “qdhcp-a51635b1-d023-419a-93b5-39de47755d2d” 网络命名空间中执行 “ifconfig” 命令,我们可以执行如下命令。
|
||||
答: 假设我们想在 `qdhcp-a51635b1-d023-419a-93b5-39de47755d2d` 网络命名空间中执行 `ifconfig` 命令,我们可以执行如下命令。
|
||||
|
||||
命令格式 : ip netns exec {network-space} <command>
|
||||
命令格式 : `ip netns exec {network-space} <command>`:
|
||||
|
||||
```
|
||||
~# ip netns exec qdhcp-a51635b1-d023-419a-93b5-39de47755d2d "ifconfig"
|
||||
@ -89,7 +82,7 @@ Ans: 假设我们想在 “qdhcp-a51635b1-d023-419a-93b5-39de47755d2d” 网络
|
||||
|
||||
### Q:9 在 Glance 服务中如何使用命令行上传和下载镜像?
|
||||
|
||||
Ans: Glance 服务中云镜像上传可以使用如下 OpenStack 命令:
|
||||
答: Glance 服务中云镜像上传可以使用如下 OpenStack 命令:
|
||||
|
||||
```
|
||||
~# openstack image create --disk-format qcow2 --container-format bare --public --file {Name-Cloud-Image}.qcow2 <Cloud-Image-Name>
|
||||
@ -103,7 +96,7 @@ Ans: Glance 服务中云镜像上传可以使用如下 OpenStack 命令:
|
||||
|
||||
### Q:10 OpenStack 如何将虚拟机从错误状态转换为活动状态?
|
||||
|
||||
Ans: 在某些情况下虚拟机可能会进入错误状态,可以使用如下命令将错误状态转换为活动状态:
|
||||
答: 在某些情况下虚拟机可能会进入错误状态,可以使用如下命令将错误状态转换为活动状态:
|
||||
|
||||
```
|
||||
~# nova reset-state --active {Instance_id}
|
||||
@ -111,7 +104,7 @@ Ans: 在某些情况下虚拟机可能会进入错误状态,可以使用如下
|
||||
|
||||
### Q:11 如何使用命令行来获取可使用的浮动 IP 列表?
|
||||
|
||||
Ans: 可使用如下命令来显示可用浮动 IP 列表:
|
||||
答: 可使用如下命令来显示可用浮动 IP 列表:
|
||||
|
||||
```
|
||||
~]# openstack ip floating list | grep None | head -10
|
||||
@ -119,7 +112,7 @@ Ans: 可使用如下命令来显示可用浮动 IP 列表:
|
||||
|
||||
### Q:12 如何在特定可用区域中或在计算主机上配置虚拟机?
|
||||
|
||||
Ans: 假设我们想在 compute-02 中的可用区 NonProduction 上配置虚拟机,可以使用如下命令:
|
||||
答: 假设我们想在 compute-02 中的可用区 NonProduction 上配置虚拟机,可以使用如下命令:
|
||||
|
||||
```
|
||||
~]# openstack server create --flavor m1.tiny --image cirros --nic net-id=e0be93b8-728b-4d4d-a272-7d672b2560a6 --security-group NonProd_SG --key-name linuxtec --availability-zone NonProduction:compute-02 nonprod_testvm
|
||||
@ -127,17 +120,17 @@ Ans: 假设我们想在 compute-02 中的可用区 NonProduction 上配置虚拟
|
||||
|
||||
### Q:13 如何在特定计算节点上获取配置的虚拟机列表?
|
||||
|
||||
Ans: 假设我们想要获取在 compute-0-19 中配置的虚拟机列表,可以使用如下命令:
|
||||
答: 假设我们想要获取在 compute-0-19 中配置的虚拟机列表,可以使用如下命令:
|
||||
|
||||
命令格式: openstack server list –all-projects –long -c Name -c Host | grep -i {Compute-Node-Name}
|
||||
命令格式: `openstack server list –all-projects –long -c Name -c Host | grep -i {Compute-Node-Name}`:
|
||||
|
||||
```
|
||||
~# openstack server list --all-projects --long -c Name -c Host | grep -i compute-0-19
|
||||
```
|
||||
|
||||
### Q:14 如何使用命令行查看 OpenStack 实例的打印信息?
|
||||
### Q:14 如何使用命令行查看 OpenStack 实例的控制台日志?
|
||||
|
||||
Ans: 使用如下命令可查看实例的命令行打印信息:
|
||||
答: 使用如下命令可查看实例的控制台日志。
|
||||
|
||||
首先获取实例的 ID,然后使用如下命令:
|
||||
|
||||
@ -147,7 +140,7 @@ Ans: 使用如下命令可查看实例的命令行打印信息:
|
||||
|
||||
### Q:15 如何获取 OpenStack 实例的控制台的 URL 地址?
|
||||
|
||||
Ans: 可以使用以下 OpenStack 命令从命令行检索实例的控制台 URL 地址:
|
||||
答: 可以使用以下 OpenStack 命令从命令行检索实例的控制台 URL 地址:
|
||||
|
||||
```
|
||||
~# openstack console url show {Instance-id}
|
||||
@ -155,28 +148,23 @@ Ans: 可以使用以下 OpenStack 命令从命令行检索实例的控制台 URL
|
||||
|
||||
### Q:16 如何使用命令行创建可启动的 cinder / block 存储卷?
|
||||
|
||||
Ans: 假设创建一个 8GB 可启动存储卷,可参考如下步骤:
|
||||
答: 假设创建一个 8GB 可启动存储卷,可参考如下步骤:
|
||||
|
||||
* 使用如下命令获取镜像列表
|
||||
|
||||
|
||||
|
||||
```
|
||||
```
|
||||
~# openstack image list | grep -i cirros
|
||||
| 89254d46-a54b-4bc8-8e4d-658287c7ee92 | cirros | active |
|
||||
```
|
||||
|
||||
* 使用 cirros 镜像创建 8GB 的可启动存储卷
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
~# cinder create --image-id 89254d46-a54b-4bc8-8e4d-658287c7ee92 --display-name cirros-bootable-vol 8
|
||||
```
|
||||
|
||||
### Q:17 如何列出所有在你的 OpenStack 中创建的项目或用户?
|
||||
|
||||
Ans: 可以使用如下命令来检索所有项目和用户:
|
||||
答: 可以使用如下命令来检索所有项目和用户:
|
||||
|
||||
```
|
||||
~# openstack project list --long
|
||||
@ -184,14 +172,12 @@ Ans: 可以使用如下命令来检索所有项目和用户:
|
||||
|
||||
### Q:18 如何显示 OpenStack 服务端点列表?
|
||||
|
||||
Ans: OpenStack 服务端点被分为 3 类:
|
||||
答: OpenStack 服务端点被分为 3 类:
|
||||
|
||||
* 公共端点
|
||||
* 内部端点
|
||||
* 管理端点
|
||||
|
||||
|
||||
|
||||
使用如下 OpenStack 命令来查看各种 OpenStack 服务端点:
|
||||
|
||||
```
|
||||
@ -204,23 +190,21 @@ Ans: OpenStack 服务端点被分为 3 类:
|
||||
~# openstack catalog show keystone
|
||||
```
|
||||
|
||||
想了解更多请访问 : [**OpenStack 中的实例创建流程**][2]
|
||||
想了解更多请访问:[OpenStack 中的实例创建流程][2]。
|
||||
|
||||
### Q:19 在控制节点上你应该按照什么步骤来重启 nova 服务?
|
||||
|
||||
Ans: 应该按照如下步骤来重启 OpenStack 控制节点的 nova 服务:
|
||||
|
||||
* service nova-api restart
|
||||
* service nova-cert restart
|
||||
* service nova-conductor restart
|
||||
* service nova-consoleauth restart
|
||||
* service nova-scheduler restart
|
||||
|
||||
答: 应该按照如下步骤来重启 OpenStack 控制节点的 nova 服务:
|
||||
|
||||
* `service nova-api restart`
|
||||
* `service nova-cert restart`
|
||||
* `service nova-conductor restart`
|
||||
* `service nova-consoleauth restart`
|
||||
* `service nova-scheduler restart`
|
||||
|
||||
### Q:20 假如计算节点上为数据流量配置了一些 DPDK 端口,你如何检查 DPDK 端口的状态呢?
|
||||
|
||||
Ans: 因为我们使用 openvSwitch (OVS) 来配置 DPDK 端口,因此可以使用如下命令来检查端口的状态:
|
||||
答: 因为我们使用 openvSwitch (OVS) 来配置 DPDK 端口,因此可以使用如下命令来检查端口的状态:
|
||||
|
||||
```
|
||||
root@compute-0-15:~# ovs-appctl bond/show | grep dpdk
|
||||
@ -231,9 +215,9 @@ root@compute-0-15:~#
|
||||
root@compute-0-15:~# dpdk-devbind.py --status
|
||||
```
|
||||
|
||||
### Q:21 How to add new rules to the existing SG(Security Group) from command line in openstack?如何使用命令行在 OpenStack 中向存在的安全组 SG(Security Group)中添加新规则?
|
||||
### Q:21 如何使用命令行在 OpenStack 中向存在的安全组 SG(安全组)中添加新规则?
|
||||
|
||||
Ans: 可以使用 neutron 命令向 OpenStack 已存在的安全组中添加新规则:
|
||||
答: 可以使用 `neutron` 命令向 OpenStack 已存在的安全组中添加新规则:
|
||||
|
||||
```
|
||||
~# neutron security-group-rule-create --protocol <tcp or udp> --port-range-min <port-number> --port-range-max <port-number> --direction <ingress or egress> --remote-ip-prefix <IP-address-or-range> Security-Group-Name
|
||||
@ -241,37 +225,37 @@ Ans: 可以使用 neutron 命令向 OpenStack 已存在的安全组中添加新
|
||||
|
||||
### Q:22 如何查看控制节点和计算节点的 OVS 桥配置?
|
||||
|
||||
Ans: 控制节点和计算节点的 OVS 桥配置可使用以下命令来查看:
|
||||
答: 控制节点和计算节点的 OVS 桥配置可使用以下命令来查看:
|
||||
|
||||
```
|
||||
~]# ovs-vsctl show
|
||||
```
|
||||
|
||||
### Q:23 计算节点上的集成桥(br-int)的作用是什么?
|
||||
### Q:23 计算节点上的集成桥(br-int)的作用是什么?
|
||||
|
||||
Ans: 集成桥(br-int)对来自和运行在计算节点上的实例的流量执行 VLAN 标记和取消标记。
|
||||
答: 集成桥(br-int)对来自和运行在计算节点上的实例的流量执行 VLAN 标记和取消标记。
|
||||
|
||||
数据包从实例的 n/w 接口发出使用虚拟接口 qvo 通过 linux 桥(qbr)。qvb接口是用来连接 Linux 桥的,qvo 接口是用来连接集成桥(br-int)的。集成桥上的 qvo 端口有一个内部 VLAN 标签,这个标签是用于当数据包到达集成桥的时候贴到数据包头部的。
|
||||
数据包从实例的 n/w 接口发出使用虚拟接口 qvo 通过 Linux 桥(qbr)。qvb 接口是用来连接 Linux 桥的,qvo 接口是用来连接集成桥的。集成桥上的 qvo 端口有一个内部 VLAN 标签,这个标签是用于当数据包到达集成桥的时候贴到数据包头部的。
|
||||
|
||||
### Q:24 隧道桥(br-tun)在计算节点上的作用是什么?
|
||||
|
||||
Ans: 隧道网桥(br-tun)根据 OpenFlow 规则将 VLAN 标记的流量从集成网桥转换为隧道 ID。
|
||||
答: 隧道桥(br-tun)根据 OpenFlow 规则将 VLAN 标记的流量从集成网桥转换为隧道 ID。
|
||||
|
||||
br-tun(tunnel bridge,即隧道桥)允许不同网络的实例彼此进行通信。隧道有利于封装在非安全网络上传输的流量,br-tun 支持两层网络,即 GRE 和 VXLAN。
|
||||
隧道桥允许不同网络的实例彼此进行通信。隧道有利于封装在非安全网络上传输的流量,它支持两层网络,即 GRE 和 VXLAN。
|
||||
|
||||
### Q:25 外部 OVS 桥(br-ex)的作用是什么?
|
||||
|
||||
Ans: 顾名思义,此网桥转发来往网络的流量,以允许外部访问实例。br-ex 连接物理接口比如 eth2,这样用户网络的浮动 IP 数据从物理网络接收并路由到用户网络端口。
|
||||
答: 顾名思义,此网桥转发来往网络的流量,以允许外部访问实例。br-ex 连接物理接口比如 eth2,这样用户网络的浮动 IP 数据从物理网络接收并路由到用户网络端口。
|
||||
|
||||
### Q:26 OpenStack 网络中 OpenFlow 规则的作用是什么?
|
||||
|
||||
Ans: OpenFlow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。OpenFlow 规则存储在 flow 表中。flow 表是 OpenFlow 交换机的一部分。
|
||||
答: OpenFlow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。OpenFlow 规则存储在 flow 表中。flow 表是 OpenFlow 交换机的一部分。
|
||||
|
||||
当一个数据包到达交换机就会被第一个 flow 表检查,如果不匹配 flow 表中的任何入口,那这个数据包就会被丢弃或者转发到其他 flow 表中。
|
||||
|
||||
### Q:27 怎样查看 OpenFlow 交换机的信息(比如端口、表编号、缓存编号等)?
|
||||
|
||||
Ans: 假如我们要显示 OpenFlow 交换机的信息(br-int),需要执行如下命令:
|
||||
答: 假如我们要显示 OpenFlow 交换机的信息(br-int),需要执行如下命令:
|
||||
|
||||
```
|
||||
root@compute-0-15# ovs-ofctl show br-int
|
||||
@ -293,9 +277,9 @@ actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src mod_dl_d
|
||||
|
||||
### Q:28 如何显示交换机中的所有 flow 的入口?
|
||||
|
||||
Ans: 可以使用命令 ‘ **ovs-ofctl dump-flows** ‘ 来查看交换机的 flow 入口
|
||||
答: 可以使用命令 `ovs-ofctl dump-flows` 来查看交换机的 flow 入口。
|
||||
|
||||
假设我们想显示 OVS 集成桥(br-int)的所有 flow 入口,可以使用如下命令:
|
||||
假设我们想显示 OVS 集成桥(br-int)的所有 flow 入口,可以使用如下命令:
|
||||
|
||||
```
|
||||
[root@compute01 ~]# ovs-ofctl dump-flows br-int
|
||||
@ -303,7 +287,7 @@ Ans: 可以使用命令 ‘ **ovs-ofctl dump-flows** ‘ 来查看交换机的 f
|
||||
|
||||
### Q:29 什么是 Neutron 代理?如何显示所有 Neutron 代理?
|
||||
|
||||
Ans: OpenStack Neutron 服务器充当中心控制器,实际网络配置是在计算节点或者网络节点上执行的。Neutron 代理是计算节点或者网络节点上进行配置更新的软件实体。Neutron 代理通过 Neuron 服务和消息队列来和中心 Neutron 服务通信。
|
||||
答: OpenStack Neutron 服务器充当中心控制器,实际网络配置是在计算节点或者网络节点上执行的。Neutron 代理是计算节点或者网络节点上进行配置更新的软件实体。Neutron 代理通过 Neuron 服务和消息队列来和中心 Neutron 服务通信。
|
||||
|
||||
可通过如下命令查看 Neutron 代理列表:
|
||||
|
||||
@ -313,14 +297,12 @@ Ans: OpenStack Neutron 服务器充当中心控制器,实际网络配置是
|
||||
|
||||
### Q:30 CPU Pinning 是什么?
|
||||
|
||||
Ans: CPU Pinning 是指为某个虚拟机保留物理核心。它也称为 CPU 隔离或处理器关联。有两个目的:
|
||||
答: CPU Pinning 是指为某个虚拟机保留物理核心。它也称为 CPU 隔离或处理器关联。有两个目的:
|
||||
|
||||
* 它确保虚拟机只能在专用核心上运行
|
||||
* 它还确保公共主机进程不在这些核心上运行
|
||||
|
||||
|
||||
|
||||
我们也可以认为 Pinning 是物理核心到一个用户虚拟 CPU(vCPU) 的一对一映射。
|
||||
我们也可以认为 Pinning 是物理核心到一个用户虚拟 CPU(vCPU)的一对一映射。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
@ -329,7 +311,7 @@ via: https://www.linuxtechi.com/openstack-interview-questions-answers/
|
||||
作者:[Pradeep Kumar][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[ScarboroughCoral](https://github.com/ScarboroughCoral)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,17 +1,19 @@
|
||||
Udev 入门:管理设备事件的 Linux 子系统
|
||||
udev 入门:管理设备事件的 Linux 子系统
|
||||
======
|
||||
创建这样一个脚本,当指定的设备插入时触发你的计算机去做一个指定动作。
|
||||
|
||||
> 创建这样一个脚本,当指定的设备插入时触发你的计算机去做一个指定动作。
|
||||
|
||||
![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_520x292_opensourceprescription.png?itok=gFrc_GTH)
|
||||
|
||||
Udev 是一个让你的计算机使用设备事件的 Linux 子系统。通俗来讲就是,当你的计算机上插入了像网卡、外置硬盘(包括 U 盘)、鼠标、键盘、游戏操纵杆和手柄、DVD-ROM 驱动器等等设备时,代码能够检测到它们。这样就能写出很多可能非常有用的实用程序,而它已经很好了,普通用户就可以写出脚本去做一些事情,比如当某个硬盘驱动器插入时,执行某个任务。
|
||||
udev 是一个为你的计算机提供设备事件的 Linux 子系统。通俗来讲就是,当你的计算机上插入了像网卡、外置硬盘(包括 U 盘)、鼠标、键盘、游戏操纵杆和手柄、DVD-ROM 驱动器等等设备时,代码能够检测到它们。这样就能写出很多可能非常有用的实用程序,而它已经很好了,普通用户就可以写出脚本去做一些事情,比如当某个硬盘驱动器插入时,执行某个任务。
|
||||
|
||||
这篇文章教你去如何写一个由一些 udev 事件触发的 [udev][1] 脚本,比如插入了一个 U 盘。当你理解了 udev 的工作原理,你就可以用它去做各种事情,比如当一个游戏手柄连接后加载一个指定的驱动程序,或者当你用于备份的驱动器连接后,自动执行备份工作。
|
||||
|
||||
### 一个初级的脚本
|
||||
|
||||
使用 udev 的最佳方式是让它工作在一个小的代码块中。不要指望从一开始就写出完整的脚本,而是从最简单的确认 udev 触发了某些指定的事件开始。
|
||||
使用 udev 的最佳方式是从一个小的代码块开始。不要指望从一开始就写出完整的脚本,而是从最简单的确认 udev 触发了某些指定的事件开始。
|
||||
|
||||
对于你的脚本,依据你的目标,并不是在任何情况下都能保证你亲眼看到你的脚本运行结果的,因此需要在你的脚本日志中确认它成功触发了。而日志文件通常放在 **/var** 目录下,但那个目录通常是 root 用户的领地。对于测试目的,可以使用 **/tmp**,它可以被普通用户访问并且在重启动后就被清除了。
|
||||
对于你的脚本,依据你的目标,并不是在任何情况下都能保证你亲眼看到你的脚本运行结果的,因此需要在你的脚本日志中确认它成功触发了。而日志文件通常放在 `/var` 目录下,但那个目录通常是 root 用户的领地。对于测试目的,可以使用 `/tmp`,它可以被普通用户访问并且在重启动后就被清除了。
|
||||
|
||||
打开你喜欢的文本编辑器,然后输入下面的简单脚本:
|
||||
|
||||
@ -21,14 +23,14 @@ Udev 是一个让你的计算机使用设备事件的 Linux 子系统。通俗
|
||||
echo $date > /tmp/udev.log
|
||||
```
|
||||
|
||||
把这个脚本放在 **/usr/local/bin** 或缺省可运行路径的位置中。将它命名为 **trigger.sh**,并运行 **chmod +x** 授予可运行权限:
|
||||
把这个脚本放在 `/usr/local/bin` 或缺省可运行路径的位置中。将它命名为 `trigger.sh`,并运行 `chmod +x` 授予可运行权限:
|
||||
|
||||
```
|
||||
$ sudo mv trigger.sh /usr/local/bin
|
||||
$ sudo chmod +x /usr/local/bin/trigger.sh
|
||||
```
|
||||
|
||||
udev 用这个脚本并不做任何事情。当它运行时,这个脚本将在文件 **/tmp/udev.log** 中放入当前的时间戳。你可以自己测试一下这个脚本:
|
||||
这个脚本没有任何和 udev 有关的事情。当它运行时,这个脚本将在文件 `/tmp/udev.log` 中放入当前的时间戳。你可以自己测试一下这个脚本:
|
||||
|
||||
```
|
||||
$ /usr/local/bin/trigger.sh
|
||||
@ -42,33 +44,31 @@ Tue Oct 31 01:05:28 NZDT 2035
|
||||
|
||||
为了让你的脚本能够被一个设备事件触发,udev 必须要知道在什么情况下调用该脚本。在现实中,你可以通过它的颜色、制造商、以及插入到你的计算机这一事实来识别一个 U 盘。而你的计算机,它需要一系列不同的标准。
|
||||
|
||||
Udev 通过序列号、制造商、以及提供商 ID 和产品 ID 号来识别设备。由于现在你的 udev 脚本还处于它的生命周期的早期阶段,因此要尽可能地宽泛、非特定和全包括。换句话说就是,你希望首先去捕获尽可能多的有效 udev 事件来触发你的脚本。
|
||||
udev 通过序列号、制造商、以及提供商 ID 和产品 ID 号来识别设备。由于现在你的 udev 脚本还处于它的生命周期的早期阶段,因此要尽可能地宽泛、非特定和包容。换句话说就是,你希望首先去捕获尽可能多的有效 udev 事件来触发你的脚本。
|
||||
|
||||
使用 **udevadm monitor** 命令你可以实时利用 udev,并且可以看到当你插入不同设备时发生了什么。用 root 权限试一试。
|
||||
使用 `udevadm monitor` 命令你可以实时利用 udev,并且可以看到当你插入不同设备时发生了什么。用 root 权限试一试。
|
||||
|
||||
```
|
||||
$ su
|
||||
# udevadm monitor
|
||||
```
|
||||
|
||||
监视函数输出接收到的事件:
|
||||
该监视函数输出接收到的事件:
|
||||
|
||||
* UDEV:在规则处理之后发出 udev 事件
|
||||
* KERNEL:内核发送 uevent 事件
|
||||
|
||||
在 `udevadm monitor` 命令运行时,插入一个 U 盘,你将看到各种信息在你的屏幕上滚动而出。注意那一个 `ADD` 事件的事件类型。这是你所需要的识别事件类型的一个好方法。
|
||||
|
||||
|
||||
在 **udevadm monitor** 命令运行时,插入一个 U 盘,你将看到各种信息在你的屏幕上滚动而出。注意那一个 **ADD** 事件的事件类型。这是你所需要的识别事件类型的一个好方法。
|
||||
|
||||
**udevadm monitor** 命令提供了许多很好的信息,但是你可以使用 **udevadm info** 命令以更好看的格式来看到它,假如你知道你的 U 盘当前已经位于你的 **/dev** 树。如果不在这个树下,拔下它并重新插入,然后立即运行这个命令:
|
||||
`udevadm monitor` 命令提供了许多很好的信息,但是你可以使用 `udevadm info` 命令以更好看的格式来看到它,假如你知道你的 U 盘当前已经位于你的 `/dev` 树。如果不在这个树下,拔下它并重新插入,然后立即运行这个命令:
|
||||
|
||||
```
|
||||
$ su -c 'dmesg | tail | fgrep -i sd*'
|
||||
```
|
||||
|
||||
举例来说,如果那个命令返回 **sdb: sdb1**,说明内核已经给你的 U 盘分配了 **sdb** 卷标。
|
||||
举例来说,如果那个命令返回 `sdb: sdb1`,说明内核已经给你的 U 盘分配了 `sdb` 卷标。
|
||||
|
||||
或者,你可以使用 **lsblk** 命令去查看所有附加到你的系统上的驱动器,包括它的大小和分区。
|
||||
或者,你可以使用 `lsblk` 命令去查看所有连接到你的系统上的驱动器,包括它的大小和分区。
|
||||
|
||||
现在,你的驱动器已经处于你的文件系统中了,你可以使用下面的命令去查看那个设备的相关 udev 信息:
|
||||
|
||||
@ -80,7 +80,7 @@ $ su -c 'dmesg | tail | fgrep -i sd*'
|
||||
|
||||
你的任务是从 udev 的报告中找出能唯一标识那个设备的部分,然后当计算机检测到这些唯一属性时,告诉 udev 去触发你的脚本。
|
||||
|
||||
**udevadm info** 命令处理一个(由设备路径指定的)设备上的报告,接着“遍历”父级设备链。对于找到的大多数设备,它以一个“键值对”格式输出所有可能的属性。你可以写一个规则,从一个单个的父级设备属性上去匹配插入设备的属性。
|
||||
`udevadm info` 命令处理一个(由设备路径指定的)设备上的报告,接着“遍历”父级设备链。对于找到的大多数设备,它以一个“键值对”格式输出所有可能的属性。你可以写一个规则,从一个单个的父级设备属性上去匹配插入设备的属性。
|
||||
|
||||
```
|
||||
looking at device '/devices/000:000/blah/blah//block/sdb':
|
||||
@ -98,11 +98,11 @@ looking at device '/devices/000:000/blah/blah//block/sdb':
|
||||
|
||||
一个 udev 规则必须包含来自单个父级设备的一个属性。
|
||||
|
||||
父级属性是描述一个设备的最基本的东西,比如它是插入到一个物理端口的东西、或是一个多大的东西、或这是一个可移除的设备。
|
||||
父级属性是描述一个设备的最基本的东西,比如它是插入到一个物理端口的东西、或是一个容量多大的东西、或这是一个可移除的设备。
|
||||
|
||||
由于内核卷标 **sdb** 可能会由于分配给在它之前插入的其它驱动器而发生变化,因此卷标并不是一个 udev 规则的父级属性的好选择。但是,在做概念论证时你可以使用它。一个事件的最佳候选者是 SUBSYSTEM 属性,它表示那个设备是一个 “block” 系统设备(也就是为什么我们要使用 **lsblk** 命令来列出设备的原因)。
|
||||
由于 `KERNEL` 卷标 `sdb` 可能会由于分配给在它之前插入的其它驱动器而发生变化,因此卷标并不是一个 udev 规则的父级属性的好选择。但是,在做概念论证时你可以使用它。一个事件的最佳候选者是 `SUBSYSTEM` 属性,它表示那个设备是一个 “block” 系统设备(也就是为什么我们要使用 `lsblk` 命令来列出设备的原因)。
|
||||
|
||||
在 **/etc/udev/rules.d** 目录中打开一个名为 **80-local.rules** 的文件,然后输入如下代码:
|
||||
在 `/etc/udev/rules.d` 目录中打开一个名为 `80-local.rules` 的文件,然后输入如下代码:
|
||||
|
||||
```
|
||||
SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
|
||||
@ -112,9 +112,9 @@ SUBSYSTEM=="block", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
|
||||
|
||||
等等,重启动 Linux 机器?
|
||||
|
||||
理论上说,你只需要运行 **udevadm control —reload** 即可,它将重新加载所有规则,但是在我们实验的现阶段,最好要排除可能影响实验结果的所有因素。Udev 是非常复杂的,为了不让你躺在床上整晚都在思考为什么这个规则不能正常工作,是因为语法错误吗?还是应该重启动一下。所以,不管 POSIX 自负地告诉你过什么,你都应该去重启动一下。
|
||||
理论上说,你只需要运行 `udevadm control —reload` 即可,它将重新加载所有规则,但是在我们实验的现阶段,最好要排除可能影响实验结果的所有因素。udev 是非常复杂的,为了不让你躺在床上整晚都在思考为什么这个规则不能正常工作,是因为语法错误吗?还是应该重启动一下。所以,不管 POSIX 自负地告诉你过什么,你都应该去重启动一下。
|
||||
|
||||
当你的系统重启动完毕之后,(使用 Ctl+Alt+F3 或类似快捷键)切换到一个文本控制台,并插入你的 U 盘。如果你运行了一个最新的内核,当你插入 U 盘后你或许可以看到一大堆输出。如果看到一个错误信息,比如 “Could not execute /usr/local/bin/trigger.sh”,或许是因为你忘了授予这个脚本可运行的权限。否则你将看到的是,一个设备插入,它得到内核设备分配的一些东西,等等。
|
||||
当你的系统重启动完毕之后,(使用 `Ctl+Alt+F3` 或类似快捷键)切换到一个文本控制台,并插入你的 U 盘。如果你运行了一个最新的内核,当你插入 U 盘后你或许可以看到一大堆输出。如果看到一个错误信息,比如 “Could not execute /usr/local/bin/trigger.sh”,或许是因为你忘了授予这个脚本可运行的权限。否则你将看到的是,一个设备插入,它得到内核设备分配的一些东西,等等。
|
||||
|
||||
现在,见证奇迹的时刻到了。
|
||||
|
||||
@ -123,13 +123,13 @@ $ cat /tmp/udev.log
|
||||
Tue Oct 31 01:35:28 NZDT 2035
|
||||
```
|
||||
|
||||
如果你在 **/tmp/udev.log** 中看到了最新的日期和时间,那么说明 udev 已经成功触发了你的脚本。
|
||||
如果你在 `/tmp/udev.log` 中看到了最新的日期和时间,那么说明 udev 已经成功触发了你的脚本。
|
||||
|
||||
### 改进规则做一些有用的事情
|
||||
|
||||
现在的问题是使用的规则太通用了。插入一个鼠标、一个 U 盘、或某个人的 U 盘都将盲目地触发这个脚本。现在,我们开始专注于希望触发你的脚本的是确定的某个 U 盘。
|
||||
|
||||
实现上述目标的一种方式是使用提供商 ID 和产品 ID。你可以使用 **lsusb** 命令去得到这些数字。
|
||||
实现上述目标的一种方式是使用提供商 ID 和产品 ID。你可以使用 `lsusb` 命令去得到这些数字。
|
||||
|
||||
```
|
||||
$ lsusb
|
||||
@ -140,7 +140,7 @@ Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 hub
|
||||
Bus 001 Device 003: ID 13d3:5165 SBo Networks
|
||||
```
|
||||
|
||||
在这个例子中,**TyCoon Corp** 前面的 **03f0:3307** 就表示了提供商 ID 和产品 ID 的属性。你也可以通过 **udevadm info -a -n /dev/sdb | grep vendor** 的输出来查看这些数字,但是从 **lsusb** 的输出中可以很容易地一眼找到这些数字。
|
||||
在这个例子中,`TyCoon Corp` 前面的 `03f0:3307` 就表示了提供商 ID 和产品 ID 的属性。你也可以通过 `udevadm info -a -n /dev/sdb | grep vendor` 的输出来查看这些数字,但是从 `lsusb` 的输出中可以很容易地一眼找到这些数字。
|
||||
|
||||
现在,可以在你的脚本中包含这些属性了。
|
||||
|
||||
@ -150,7 +150,7 @@ SUBSYSTEM=="block", ATTRS{idVendor}=="03f0", ACTION=="add", RUN+="/usr/local/bin
|
||||
|
||||
测试它(是的,为了确保不会有来自 udev 的影响因素,我们仍然建议先重新启动一下),它应该会像前面一样工作,现在,如果你插入一个不同公司制造的 U 盘(因为它们的提供商 ID 不一样)、或插入一个鼠标、或插入一个打印机,这个脚本将不会被触发。
|
||||
|
||||
继续添加新属性来进一步专注于你希望去触发你的脚本的那个唯一的 U 盘。使用 **udevadm info -a -n /dev/sdb** 命令,你可以找出像提供商名字、序列号、或产品名这样的东西。
|
||||
继续添加新属性来进一步专注于你希望去触发你的脚本的那个唯一的 U 盘。使用 `udevadm info -a -n /dev/sdb` 命令,你可以找出像提供商名字、序列号、或产品名这样的东西。
|
||||
|
||||
为了保证思路清晰,确保每次只添加一个新属性。我们(和在网上看到的其他人)在 udev 规则中所遇到的大多数错误都是因为一次添加了太多的属性,而奇怪为什么不能正常工作了。逐个测试属性是最安全的作法,这样可以确保 udev 能够成功识别到你的设备。
|
||||
|
||||
@ -160,18 +160,16 @@ SUBSYSTEM=="block", ATTRS{idVendor}=="03f0", ACTION=="add", RUN+="/usr/local/bin
|
||||
|
||||
在这里需要记住两个事情。
|
||||
|
||||
1. 聚焦于你的 udev 规则,当你真实地使用它们时,一旦让规则发挥作用将触发脚本。执行一个脚本去盲目地复制数据到你的计算上,或从你的计算机上复制出数据,是一个很糟糕的主意,因为有可能会遇到一个人拿着和你相同品牌的 U 盘插入到你的机器上的情况。
|
||||
1. 聚焦于你的 udev 规则,当你真实地使用它们时,一旦让规则发挥作用将触发脚本。执行一个脚本去盲目地复制数据到你的计算上,或从你的计算机上复制出数据,是一个很糟糕的主意,因为有可能会遇到一个人拿着和你相同品牌的 U 盘插入到你的机器上的情况。
|
||||
2. 不要在写了 udev 规则和脚本后忘记了它们的存在。我知道哪个计算上有我的 udev 规则,这些机器一般是我的个人计算机,而不是那些我带着去开会或办公室工作的计算机。一台计算机的 “社交” 程度越高,它就越不能有 udev 规则存在于它上面,因为它将潜在地导致我的数据最终可能会出现在某个人的设备、或某个人的数据中、或在我的设备上出现恶意程序。
|
||||
|
||||
|
||||
|
||||
换句话说就是,随着一个 GNU 系统提供了一个这么强大的功能,你的任务是小心地如何使用它们的强大功能。如果你滥用它或不小心谨慎地使用它,最终将让你出问题,它非常可能会导致可怕的问题。
|
||||
|
||||
### 现实中的 Udev
|
||||
|
||||
现在,你可以确认你的脚本是由 udev 触发的,那么,可以将你的关注点转到脚本功能上了。到目前为止,这个脚本是没有用的,它除了记录脚本已经运行过了这一事实外,再没有做更多的事情。
|
||||
|
||||
我使用 udev 去触发我的 U 盘的 [自动备份][2] 。这个创意是,将我正在处理的文档的主复本保存在我的 U 盘上(因为我随身带着它,这样就可以随时处理它),并且在我每次将 U 盘插入到那台机器上时,这些主文档将备份回我的计算机上。换句话说就是,我的计算机是备份驱动器,而产生的数据是移动的。源代码是可用的,你可以随意查看 attachup 的代码,以进一步限制你的 udev 的测试示例。
|
||||
我使用 udev 去触发我的 U 盘的 [自动备份][2] 。这个创意是,将我正在处理的文档的主副本保存在我的 U 盘上(因为我随身带着它,这样就可以随时处理它),并且在我每次将 U 盘插入到那台机器上时,这些主文档将备份回我的计算机上。换句话说就是,我的计算机是备份驱动器,而产生的数据是移动的。源代码是可用的,你可以随意查看 `attachup` 的代码,以进一步限制你的 udev 的测试示例。
|
||||
|
||||
虽然我使用 udev 最多的情况就是这个例子,但是 udev 能抓取很多的事件,像游戏手柄(当连接游戏手柄时,让系统去加载 xboxdrv 模块)、摄像头、麦克风(当指定的麦克风连接时用于去设置输入),所以应该意识到,它能做的事情远比这个示例要多。
|
||||
|
||||
@ -182,7 +180,7 @@ SUBSYSTEM=="block", ATTRS{idVendor}=="03f0", ACTION=="add", SYMLINK+="safety%n"
|
||||
SUBSYSTEM=="block", ATTRS{idVendor}=="03f0", ACTION=="add", RUN+="/usr/local/bin/trigger.sh"
|
||||
```
|
||||
|
||||
第一行使用属性去检测我的 U 盘,这在前面已经讨论过了,接着在设备树中为我的 U 盘分配一个符号链接,给它分配的符号连接是 **safety%n**。这个 **%n** 是一个 udev 宏,它是内核分配给这个设备的任意数字,比如 sdb1、sdb2、sdb3、等等。因此 **%n** 应该是 1 或 2 或 3。
|
||||
第一行使用属性去检测我的 U 盘,这在前面已经讨论过了,接着在设备树中为我的 U 盘分配一个符号链接,给它分配的符号连接是 `safety%n`。这个 `%n` 是一个 udev 宏,它是内核分配给这个设备的任意数字,比如 sdb1、sdb2、sdb3、等等。因此 `%n` 应该是 1 或 2 或 3。
|
||||
|
||||
这将在 dev 树中创建一个符号链接,因此它不会干涉插入一个设备的正常过程。这意味着,如果你在自动挂载设备的桌面环境中使用它,将不会出现问题。
|
||||
|
||||
@ -198,13 +196,13 @@ sleep 2
|
||||
rsync -az /mnt/hd/ /home/seth/backups/ && umount /dev/safety1
|
||||
```
|
||||
|
||||
这个脚本使用符号链接,这将避免出现 udev 命名导致的意外情况(例如,假设一个命名为 DISK 的 U 盘已经插入到我的计算机上,而我插入的其它 U 盘恰好名字也是 DISK,那么第二个 U 盘的卷标将被命名为 `DISK_`,这将导致我的脚本不会正常运行),它在我喜欢的挂载点 **/mnt/hd** 上挂载了 **safety1**(驱动器的第一个分区)。
|
||||
这个脚本使用符号链接,这将避免出现 udev 命名导致的意外情况(例如,假设一个命名为 DISK 的 U 盘已经插入到我的计算机上,而我插入的其它 U 盘恰好名字也是 DISK,那么第二个 U 盘的卷标将被命名为 `DISK_`,这将导致我的脚本不会正常运行),它在我喜欢的挂载点 `/mnt/hd` 上挂载了 `safety1`(驱动器的第一个分区)。
|
||||
|
||||
一旦 safely 挂载之后,它将使用 [rsync][3] 将驱动器备份到我的备份文件夹(我真实使用的脚本用的是 rdiff-backup,而你可以使用任何一个你喜欢的自动备份解决方案)。
|
||||
一旦 `safely` 挂载之后,它将使用 [rsync][3] 将驱动器备份到我的备份文件夹(我真实使用的脚本用的是 `rdiff-backup`,而你可以使用任何一个你喜欢的自动备份解决方案)。
|
||||
|
||||
### Udev 让你的设备你做主
|
||||
### udev 让你的设备你做主
|
||||
|
||||
Udev 是一个非常灵活的系统,它可以让你用其它系统很少敢提供给用户的方式去定义规则和功能。学习它,使用它,去享受 POSIX 的强大吧。
|
||||
udev 是一个非常灵活的系统,它可以让你用其它系统很少敢提供给用户的方式去定义规则和功能。学习它,使用它,去享受 POSIX 的强大吧。
|
||||
|
||||
本文内容来自 [Slackermedia Handbook][4],它以 [GNU Free Documentation License 1.3][5] 许可证授权使用。
|
||||
|
||||
@ -215,7 +213,7 @@ via: https://opensource.com/article/18/11/udev
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[qhwdw](https://github.com/qhwdw)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
@ -1,139 +0,0 @@
|
||||
translating by seriouszyx
|
||||
|
||||
A Free, Secure And Cross-platform Password Manager
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-Password-Manager-720x340.png)
|
||||
|
||||
In this modern Internet era, you will surely have multiple accounts on lot of websites. It could be a personal or official mail account, social or professional network account, GitHub account, and ecommerce account etc. So you should have several different passwords for different accounts. I am sure that you are already aware that setting up same password to multiple accounts is crazy and dangerous practice. If an attacker managed to breach one of your accounts, it’s highly likely he/she will try to access other accounts you have with the same password. So, it is **highly recommended to set different passwords** to different accounts.
|
||||
|
||||
However, remembering several passwords might be difficult. You can write them in a paper. But it is not an efficient method either and you might lose them over a period of time. This is where the password managers comes in help. The password managers are like a repository where you can store all your passwords for different accounts and lock them down with a master password. By this way, all you need to remember is just the master password. We already have reviewed an open source password manager named [**KeeWeb**][1]. Today, we are going to see yet another password manager called **Buttercup**.
|
||||
|
||||
### About Buttercup
|
||||
|
||||
Buttercup is a free, open source, secure and cross-platform password manager written using **NodeJS**. It helps you to store all your login credentials of different accounts in an encrypted archive, which can be stored in your local system or any remote services like DropBox, ownCloud, NextCloud and WebDAV-based services. It uses strong **256bit AES encryption** method to save your sensitive data with a master password. So, no one can access your login details except those who have the master password. Buttercup currently supports Linux, Mac OS and Windows. It is also available a browser extension and mobile app. so, you can access the same archive you use on the desktop application and browser extension in your Android or iOS devices as well.
|
||||
|
||||
### Installing Buttercup Password Manager
|
||||
|
||||
Buttercup is currently available as **.deb** , **.rpm** packages, portable AppImage and tar archives for Linux platform. Head over to the [**releases pages**][2] and download and install the version you want to use.
|
||||
|
||||
Buttercup desktop application is also available in [**AUR**][3], so you can install on Arch-based systems using AUR helper programs, such as [**Yay**][4], as shown below:
|
||||
|
||||
```
|
||||
$ yay -S buttercup-desktop
|
||||
```
|
||||
|
||||
If you have downloaded the portable AppImage file, make it executable using command:
|
||||
|
||||
```
|
||||
$ chmod +x buttercup-desktop-1.11.0-x86_64.AppImage
|
||||
```
|
||||
|
||||
Then, launch it using command:
|
||||
|
||||
```
|
||||
$ ./buttercup-desktop-1.11.0-x86_64.AppImage
|
||||
```
|
||||
|
||||
Once you run this command, it will prompt whether you like to integrate Buttercup AppImage with your system. If you choose ‘Yes’, this will add it to your applications menu and install icons. If you don’t do this, you can still launch the application by double-clicking on the AppImage or using the above command from the Terminal.
|
||||
|
||||
### Add archives
|
||||
|
||||
When you launch it for the first time, you will see the following welcome screen:
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-1.png)
|
||||
|
||||
We haven’t added any archives yet, so let us add one. To do so, click on the “New Archive File” button and type the name of the archive file and choose the location to save it.
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-2.png)
|
||||
|
||||
You can name it as you wish. I named it mine as “mypass”. The archives will have extension **.bcup** at the end and saved in the location of your choice.
|
||||
|
||||
If you already have created one, simply choose it by clicking on “Open Archive File”.
|
||||
|
||||
Next, buttercup will prompt you to enter a master password to the newly created archive. It is recommended to provide a strong password to protect the archives from the unauthorized access.
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-3.png)
|
||||
|
||||
We have now created an archive and secured it with a master password. Similarly, you can create any number of archives and protect them with a password.
|
||||
|
||||
Let us go ahead and add the account details in the archives.
|
||||
|
||||
### Adding entries (login credentials) in the archives
|
||||
|
||||
Once you created or opened the archive, you will see the following screen.
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-4.png)
|
||||
|
||||
It is like a vault where we are going to save our login credentials of different online accounts. As you can see, we haven’t added any entries yet. Let us add some.
|
||||
|
||||
To add a new entry, click “ADD ENTRY” button on the lower right corner and enter your account information you want to save.
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-5-1.png)
|
||||
|
||||
If you want to add any extra detail, there is an “ADD NEW FIELD” option right under the each entry. Just click on it and add as many as fields you want to include in the entries.
|
||||
|
||||
Once you added all entries, you will see them on the right pane of the Buttercup interface.
|
||||
|
||||
![][6]
|
||||
|
||||
### Creating new groups
|
||||
|
||||
You can also group login details under different name for easy recognition. Say for example, you can group all your mail accounts under a distinct name named “my_mails”. By default, your login details will be saved under “General” group. To create a new group, click “NEW GROUP” button and provide the name for the group. When creating new entries inside a new group, just click on the group name and start adding the entries as shown above.
|
||||
|
||||
### Manage and access login details
|
||||
|
||||
The data stored in the archives can be edited, moved to different groups, or entirely deleted at anytime. For instance, if you want to copy the username or password to clipboard, right click on the entry and choose “Copy to Clipboard” option.
|
||||
|
||||
![][7]
|
||||
|
||||
To edit/modify the data in the future, just click “Edit” button under the selected entry.
|
||||
|
||||
### Save archives on remote location
|
||||
|
||||
By default, Buttercup will save your data on the local system. However, you can save them on different remote services, such as Dropbox, ownCloud/NextCloud, WebDAV-based service.
|
||||
|
||||
To connect to these services, go to **File - > Connect Cloud Sources**.
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-8.png)
|
||||
|
||||
And, choose the service you want to connect and authorize it to save your data.
|
||||
|
||||
![][8]
|
||||
|
||||
You can also connect those services from the Buttercup welcome screen while adding the archives.
|
||||
|
||||
### Import/Export
|
||||
|
||||
Buttercup allows you to import or export data to or from other password managers, such as 1Password, Lastpass and KeePass. You can also export your data and access them from another system or device, for example on your Android phone. You can export Buttercup vaults to CSV format as well.
|
||||
|
||||
![][9]
|
||||
|
||||
Buttercup is a simple, yet mature and fully functional password manager. It is being actively developed for years. If you ever in need of a password manager, Buttercup might a good choice. For more details, refer the project website and github page.
|
||||
|
||||
And, that’s all for now. Hope this was useful. More good stuffs to come. Stay tuned!
|
||||
|
||||
Cheers!
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/buttercup-a-free-secure-and-cross-platform-password-manager/
|
||||
|
||||
作者:[SK][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.ostechnix.com/keeweb-an-open-source-cross-platform-password-manager/
|
||||
[2]: https://github.com/buttercup/buttercup-desktop/releases/latest
|
||||
[3]: https://aur.archlinux.org/packages/buttercup-desktop/
|
||||
[4]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
|
||||
[5]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[6]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-6.png
|
||||
[7]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-7.png
|
||||
[8]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-9.png
|
||||
[9]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-10.png
|
@ -0,0 +1,139 @@
|
||||
(本文共两处译注)
|
||||
|
||||
一个免费、安全、跨平台的密码管理器
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-Password-Manager-720x340.png)
|
||||
|
||||
在这个现代化的互联网时代,你一定在许多网站上有多个账户,它可能是个人或官方邮箱账户、社交或专业网络账户、GitHub 账户和电子商务账户等。因此,对于不同的账户,你应该设置多个不同的密码。我相信你应该已经意识到为多个账户设置相同的密码是件疯狂又危险的事情。如果攻击者设法破解了你的一个账户,那么他/她很可能尝试使用相同的密码访问你的其他账户。所以,**强烈建议为不同的账户设置不同的密码**。
|
||||
|
||||
不过,记住好几个密码是很困难的。你可以把它们写在纸上,但那也不是一个有效的方法,你可能会在一段时间后失去它们。这时密码管理器就派上用场了。密码管理器就像一个存储库,你可以在其中存储不同账户的所有密码,并用一个主密码将其锁定。这样,你需要记住的就只剩下主密码了。之前我们介绍过一个叫 [**KeeWeb**][1] 的开源密码管理器,今天,我们将介绍另外一款密码管理器———**Buttercup**。
|
||||
|
||||
### 关于 Buttercup
|
||||
|
||||
Buttercup 是一个免费、开源、安全、跨平台的使用 **NodeJS** 编写的密码管理器。它可以帮助你将不同账户的所有登录凭证存储到加密存档中,该存档可以保存在本地系统或任何远程服务(如 DropBox、OwnCloud、NextCloud 和基于 WebDAV 的服务)中。它使用强大的 **256 位 AES 加密算法**,用主密码保存你的敏感数据。所以,除了拥有主密码的人以外,没有人可以访问你的登录信息。Buttercup 目前支持 Linux、Mac OS 和 Windows,还提供了一个浏览器扩展和移动应用程序。因此,你也可以在 Android 和 iOS 设备中的桌面应用程序和浏览器扩展程序中使用相同的存档。
|
||||
|
||||
### 安装 Buttercup 密码管理器
|
||||
|
||||
(译注:此处没有找到合适的语言翻译)Buttercup 目前可作为 .deb、.rpm 软件包、便携式 AppImage 和用于 Linux 平台的 tar 归档文件使用。转到 [**releases pages**][2] 下载安装你想要的版本。
|
||||
|
||||
Buttercup 桌面应用程序在 [**AUR**][3] 中也可用,你可以使用 AUR 帮助程序(如 [**Yay**][4])在基于 Arch 的系统上安装,如下所示:
|
||||
|
||||
```
|
||||
$ yay -S buttercup-desktop
|
||||
```
|
||||
|
||||
如果你已经下载了方便的 AppImage 文件,使用如下命令让它执行:
|
||||
|
||||
```
|
||||
$ chmod +x buttercup-desktop-1.11.0-x86_64.AppImage
|
||||
```
|
||||
|
||||
然后,使用命令启动它:
|
||||
|
||||
```
|
||||
$ ./buttercup-desktop-1.11.0-x86_64.AppImage
|
||||
```
|
||||
|
||||
运行此命令后,会提示是否要将 Buttercup AppImage 集成到你的系统中。如果选择“Yes”,则会将其添加到应用程序菜单并安装图标。如果不这样做,你仍然可以通过双击 AppImage 或在终端中使用上述命令启动应用程序。
|
||||
|
||||
### 添加存档
|
||||
|
||||
第一次启动时,会看到下面的欢迎界面:
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-1.png)
|
||||
|
||||
我们还没有添加任何存档,所以让我们添加一个吧。单击“New Archive File”按钮,输入存档文件的名称,并选择它的保存位置。
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-2.png)
|
||||
|
||||
你可以随意命名。我把它命名为“mypass”,存档将以 **.bcup** 为扩展名保存在你选择的位置。
|
||||
|
||||
如果你已经创建了一个,只需单击“Open Archive File”来选择它。
|
||||
|
||||
接下来,buttercup 将提示你为新创建的存档输入主密码,建议提供一个强级别的密码,以保护存档不受未经授权的访问。
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-3.png)
|
||||
|
||||
现在我们已经创建了一个存档并使用主密码对其进行了保护。类似地,你可以创建任意数量的存档,并使用密码保护它们。
|
||||
|
||||
让我们继续在存档中添加账户的详细信息。
|
||||
|
||||
### 在存档中添加条目(登陆凭证)
|
||||
|
||||
创建或打开存档后,你将看到下面的界面。
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-4.png)
|
||||
|
||||
它就像一个保险库,我们将保存不同账户的登录凭证。如你所见,我们并没有添加任何条目。让我们添加一些。
|
||||
|
||||
点击右下角的“ADD ENTRY”按钮来添加新的条目,输入你想要保存的账户的信息。
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-5-1.png)
|
||||
|
||||
在每个条目下面都有一个“ADD NEW FIELD”选项,可以用来添加其他的细节。只需点击它,然后添加要包含在条目中的字段。
|
||||
|
||||
添加完所有条目后,你将在 Buttercup 界面的右侧窗格中看到它们。
|
||||
|
||||
![][6]
|
||||
|
||||
### 添加新的群组
|
||||
|
||||
你还可以将登陆的详细信息分组到不同的名称下,以便于识别。例如,你可以将所有邮箱账户分组到一个名为“my_mails”的名称下。默认情况下,你的登录详细信息将保存在“General”群组下。要创建新的群组,请点击“NEW GROUP”按钮并输入名称。在新的群组中创建新条目时,与上述的步骤相同,只需单击组名并开始添加条目。
|
||||
|
||||
### 管理和访问登陆的详细信息
|
||||
|
||||
存储在存档中的数据可以随时编辑、移动到其他组或彻底删除。例如,如果要将用户名或密码复制到剪切板,请右击该条目,然后选择“Copy to Clipboard”。
|
||||
|
||||
![][7]
|
||||
|
||||
(译注:没理解这个 in the future 的意思)要在将来编辑/修改数据,只需点击所选条目下的“Edit”按钮。
|
||||
|
||||
### 在远程保存存档
|
||||
|
||||
默认情况下,Buttercup 会将数据保存在本地系统上。但是,你可以将它们保存在不同的远程服务(例如 Dropbox、OwnCloud、NextCloud 和基于 WebDAV 的服务)上。
|
||||
|
||||
要连接这些服务,请点击 **File - > Connect Cloud Sources**。
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-8.png)
|
||||
|
||||
接下来,选择要连接的服务并对其授权以保存数据。
|
||||
|
||||
![][8]
|
||||
|
||||
你还可以在添加存档时在 Buttercup 的欢迎界面连接这些服务。
|
||||
|
||||
### 导入/导出
|
||||
|
||||
Buttercup 允许你向其他密码管理器(例如 1Password、Lastpass 和 KeePass)导入导出数据。你也可以导出数据,在另一个系统或设备(例如 Android)中访问它们。你还可以将 Buttercup 保险库导出为 CSV 格式文件。
|
||||
|
||||
![][9]
|
||||
|
||||
Buttercup 是一个简单但成熟、功能齐全的密码管理器。多年来它一直在积极发展。如果你需要密码管理器,Buttercup 可能是个不错的选择。有关更多的详细信息,请参阅项目网站和 GitHub 页面。
|
||||
|
||||
那就介绍到这里,希望它对你有用。更多的精彩内容即将到来,敬请关注!
|
||||
|
||||
谢谢!
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/buttercup-a-free-secure-and-cross-platform-password-manager/
|
||||
|
||||
作者:[SK][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[seriouszyx](https://github.com/seriouszyx)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.ostechnix.com/author/sk/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.ostechnix.com/keeweb-an-open-source-cross-platform-password-manager/
|
||||
[2]: https://github.com/buttercup/buttercup-desktop/releases/latest
|
||||
[3]: https://aur.archlinux.org/packages/buttercup-desktop/
|
||||
[4]: https://www.ostechnix.com/yay-found-yet-another-reliable-aur-helper/
|
||||
[5]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[6]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-6.png
|
||||
[7]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-7.png
|
||||
[8]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-9.png
|
||||
[9]: http://www.ostechnix.com/wp-content/uploads/2018/11/buttercup-10.png
|
Loading…
Reference in New Issue
Block a user