分类 技术 下的文章

隐私保护、安全和加密是不可分开的,用户可以通过加密来提高安全和保护操作系统的隐私信息。本文将会介绍在 Ubuntu Linux 中对硬盘全盘加密的优缺点。此外,我们也介绍如何在系统级别上进行加密设置,并对一些目录进行加密。加密是非常有用的,而且也没有你想象中那么复杂。综上所述,让我开始进行加密吧。

加密的优缺点

尽管进行全盘加密听起来非常棒,但是否要这么做还是有些争议的。我们先来看看这个做法有哪些优缺点。

加密的优点

  • 提高私密程度
  • 只有拥有密钥的人才能访问操作系统及其中文件
  • 确保政府或者黑客无法侦测你的系统和侵犯你的隐私

加密的缺点

  • 在其他的 Linux 操作系统上访问和挂载文件系统将变得困难
  • 无法从那些加密分区中恢复数据
  • 如果用户丢失了加密密钥,那就彻底悲剧了

安装前的准备

在 Ubuntu 中加密最好就是在安装进程开始之前在系统层面进行。在 Ubuntu 安装进程开始之后是无法加密的,所以先备份你的重要数据到 Dropbox、 Google Drive (或者其它硬盘上),然后后准备重新安装 Ubuntu。

从 此处 开始下载最新版本的 Ubuntu,并制作好可启动的 U 盘 (需要至少 2 GB 可用空间)。

制作启动 U 盘需要一个烧录程序,可以到 etcher.io 去下载。下载好之后解压 zip 文件,右击 (或者使用鼠标选定之后按下回车) 解压出来的文件以运行。

注意:烧录程序会询问是否创建图标,选择“yes”。

在烧录程序中点击“ 选择镜像 ( Select Image ) ”按钮,选择之前下载好的 Ubuntu ISO 镜像。然后插入你的 U 盘。烧录程序会自动检测并为你选择。最后,点击“ 开始烧录 ( Flash ) ”按钮来开始创建进程。

完成之后,重启电脑至 BIOS,设置为 U 盘启动。

注意:如果你的电脑不支持从 U 盘启动,下载 32 位的 Ubuntu,并使用你电脑中的烧录软件将其烧录到 DVD 中。

对你的硬盘进行全盘加密

加载好 Live Ubuntu 之后,安装进程就可以开始了。当 Ubuntu 安装进程开始之后,会出现下面这样一个界面。注意每个人安装进程都可能不同的,或许你会看到的不太一样。

选择“ 擦除磁盘并安装 Ubuntu ( Erase disk and install Ubuntu ) ”,并选择“ 加密新装的 Ubuntu 以提高安全程度 ( Encrypt the new Ubuntu installation for Security ) ”来开始加密的安装进程。这样会自动选择 LVM。两个选框都必须选中。选好加密选项之后,点击“ 现在安装 ( Install Now ) ”。

注意:如果是双系统启动的话,你需要安装到空余磁盘空间,而非擦除磁盘。选择好之后,像上边一样选择加密选项。

选择加密选项并开始安装之后,会出现一个加密配置页面。这个页面用户需要为安装进程设置自己的加密密钥。

输入安全密钥。该安全密钥设置窗口会自动为你输入的密钥进行密码强度评级,使用这个功能时看着后边的显示,直到显示为“ 高强度密码 ( strong password ) ”为止。输入完成后,在下方在此输入来确认密码,最后用一张纸把密码写下下来妥善保管。

此外,选定“ 覆些磁盘空余空间 ( Overwrite empty disk space ) ”,当然这是一个可选步骤。一切准备就绪之后点击现在安装即可。

在设置完加密密钥之后,就是传统的 Ubuntu 安装配置了。选择时区、创建用户以及对应的安全密码。

与创建和加密 Ubuntu 磁盘对应,在创建用户的时记得候选择“ 登录系统需要密码 ( require my password to log in ) ”和“ 加密我的家目录 ( encrypt my home folder ) ”。这样可以为你的数据再增加一层保护。

等到用户名、加密设置以及其他所有事情都完成之后,Ubuntu 安装进程就可以开始了。随后,安装进程会告知你安装已完成,移除安装介质后重启即可享受 Ubuntu 之旅。

结论

进行磁盘加密之后,如果没有加密密钥则无法开启 Ubuntu。尽管无趣,但这种级别的加密使用最容易的,并且还充分利用了操作系统提供的特性。用户不需要过多的知识,或者使用其他第三方程序就可以很快完成加密要求。

加密之后的 Ubuntu,使用起来和没有加密的并没有什么区别。不需要其他的步骤,也不需要学习什么复杂的解密方法。对于那些非常在意隐私但又不想太过麻烦的人来说,这个提高安全等级的方法是必须学会的(当然,这很容易不是吗)。

你是否会使用 Ubuntu 对硬盘进行加密呢?在下方评论告诉我们。


译者简介:

GHLandy —— 欲得之,则为之奋斗。 ( If you want it, work for it. )


via: https://www.maketecheasier.com/encrypt-hard-disk-in-ubuntu/

作者:Derrik Diener 译者:GHLandy 校对:wxy

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

Ceph 是一个高性能、可靠、可扩展的开源存储平台。它是一个自由的分布式存储系统,提供了对象、块和文件级存储的接口,并可以不受单点故障的影响而运行。

在这个教程中,我将指导你在 Ubuntu 16.04 服务器上安装建立一个 Ceph 集群。Ceph 集群包括这些组件:

  • Ceph OSD (ceph-osd) - 控制数据存储,数据复制和恢复。Ceph 集群需要至少两个 Ceph OSD 服务器。这次安装中我们将使用三个 Ubuntu 16.04 服务器。
  • Ceph Monitor (ceph-mon) - 监控集群状态并运行 OSD 映射 和 CRUSH 映射。这里我们使用一个服务器。
  • Ceph Meta Data Server (ceph-mds) - 如果你想把 Ceph 作为文件系统使用,就需要这个。

前提条件

  • 6 个安装了 Ubuntu 16.04 的服务器节点
  • 所有节点上的 root 权限

我将使用下面这些 hostname /IP 安装:

主机名              IP 地址
ceph-admin        10.0.15.10
mon1                 10.0.15.11
osd1                  10.0.15.21
osd2                  10.0.15.22
osd3                  10.0.15.23
client                 10.0.15.15

第 1 步 - 配置所有节点

这次安装,我将配置所有的 6 个节点来准备安装 Ceph 集群软件。所以你必须在所有节点运行下面的命令。然后确保所有节点都安装了 ssh-server。

创建 Ceph 用户

在所有节点创建一个名为 cephuser 的新用户

useradd -m -s /bin/bash cephuser
passwd cephuser

创建完新用户后,我们需要给 cephuser 配置无密码的 sudo 权限。这意味着 cephuser 可以不先输入密码而获取到 sudo 权限运行。

运行下面的命令来完成配置。

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

安装和配置 NTP

安装 NTP 来同步所有节点的日期和时间。先运行 ntpdate 命令通过 NTP 设置日期。我们将使用 US 池的 NTP 服务器。然后开启并使 NTP 服务在开机时启动。

sudo apt-get install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntp
systemctl start ntp

安装 Open-vm-tools

如果你正在 VMware 里运行所有节点,你需要安装这个虚拟化工具。

sudo apt-get install -y open-vm-tools

安装 Python 和 parted

在这个教程,我们需要 python 包来建立 ceph 集群。安装 python 和 python-pip。

sudo apt-get install -y python python-pip parted

配置 Hosts 文件

用 vim 编辑器编辑所有节点的 hosts 文件。

vim /etc/hosts

粘帖如下配置:

10.0.15.10        ceph-admin
10.0.15.11        mon1
10.0.15.21        ceph-osd1
10.0.15.22        ceph-osd2
10.0.15.23        ceph-osd3
10.0.15.15        ceph-client

保存 hosts 文件,然后退出 vim 编辑器。

现在你可以试着在两个服务器间 ping 主机名来测试网络连通性。

ping -c 5 mon1

Ceph cluster Installation on Ubuntu 16.04

第 2 步 - 配置 SSH 服务器

这一步,我们将配置 ceph-admin 节点。管理节点是用来配置监控节点和 osd 节点的。登录到 ceph-admin 节点然后使用 cephuser 用户。

ssh root@ceph-admin
su - cephuser

管理节点用来安装配置所有集群节点,所以 ceph-admin 上的用户必须有不使用密码连接到所有节点的权限。我们需要为 'ceph-admin' 节点的 cephuser 用户配置无密码 SSH 登录权限。

生成 cephuser 的 ssh 密钥。

ssh-keygen

让密码为空。

下面,为 ssh 创建一个配置文件

vim ~/.ssh/config

粘帖如下配置:

Host ceph-admin
        Hostname ceph-admin
        User cephuser

Host mon1
        Hostname mon1
        User cephuser

Host ceph-osd1
        Hostname ceph-osd1
        User cephuser

Host ceph-osd2
        Hostname ceph-osd2
        User cephuser

Host ceph-osd3
        Hostname ceph-osd3
        User cephuser

Host ceph-client
        Hostname ceph-client
        User cephuser

保存文件并退出 vim。

Ceph-admin configuration

改变配置文件权限为 644。

chmod 644 ~/.ssh/config

现在使用 ssh-copy-id 命令增加密钥到所有节点。

ssh-keyscan ceph-osd1 ceph-osd2 ceph-osd3 ceph-client mon1 >> ~/.ssh/known_hosts
ssh-copy-id ceph-osd1
ssh-copy-id ceph-osd2
ssh-copy-id ceph-osd3
ssh-copy-id mon1

当请求输入密码时输入你的 cephuser 密码。

Ceph-admin deploy ssh key to all cluster nodes

现在尝试从 ceph-admin 节点登录 osd1 服务器,测试无密登录是否正常。

ssh ceph-osd1

SSH Less password from ceph-admin to all nodes cluster

第 3 步 - 配置 Ubuntu 防火墙

出于安全原因,我们需要在服务器打开防火墙。我们更愿使用 Ufw(不复杂防火墙)来保护系统,这是 Ubuntu 默认的防火墙。在这一步,我们在所有节点开启 ufw,然后打开 ceph-admin、ceph-mon 和 ceph-osd 需要使用的端口。

登录到 ceph-admin 节点,然后安装 ufw 包。

ssh root@ceph-admin
sudo apt-get install -y ufw

打开 80,2003 和 4505-4506 端口,然后重启防火墙。

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 2003/tcp
sudo ufw allow 4505:4506/tcp

开启 ufw 并设置开机启动。

sudo ufw enable

UFW Firewall with Ceph service

从 ceph-admin 节点,登录到监控节点 mon1 然后安装 ufw。

ssh mon1
sudo apt-get install -y ufw

打开 ceph 监控节点的端口然后开启 ufw。

sudo ufw allow 22/tcp
sudo ufw allow 6789/tcp
sudo ufw enable

最后,在每个 osd 节点 ceph-osd1、ceph-osd2 和 ceph-osd3 上打开这些端口 6800-7300。

从 ceph-admin 登录到每个 ceph-osd 节点安装 ufw。

ssh ceph-osd1
sudo apt-get install -y ufw

在 osd 节点打开端口并重启防火墙。

sudo ufw allow 22/tcp
sudo ufw allow 6800:7300/tcp
sudo ufw enable

ufw 防火墙配置完成。

第 4 步 - 配置 Ceph OSD 节点

这个教程里,我们有 3 个 OSD 节点,每个节点有两块硬盘分区。

  1. /dev/sda 用于根分区
  2. /dev/sdb 空闲分区 - 20GB

我们要使用 /dev/sdb 作为 ceph 磁盘。从 ceph-admin 节点,登录到所有 OSD 节点,然后格式化 /dev/sdb 分区为 XFS 文件系统。

ssh ceph-osd1
ssh ceph-osd2
ssh ceph-osd3

使用 fdisk 命令检查分区表。

sudo fdisk -l /dev/sdb

格式化 /dev/sdb 分区为 XFS 文件系统,使用 parted 命令创建一个 GPT 分区表。

sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%

下面,使用 mkfs 命令格式化分区为 XFS 格式。

sudo mkfs.xfs -f /dev/sdb

现在检查分区,然后你会看见一个 XFS 文件系统的 /dev/sdb 分区。

sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb

Format partition ceph OSD nodes

第 5 步 - 创建 Ceph 集群

在这步,我们将从 ceph-admin 安装 Ceph 到所有节点。马上开始,先登录到 ceph-admin 节点。

ssh root@ceph-admin
su - cephuser

在 ceph-admin 节点上安装 ceph-deploy

首先我们已经在系统上安装了 python 和 python-pip。现在我们需要从 pypi python 仓库安装 Ceph 部署工具 'ceph-deploy'。

用 pip 命令在 ceph-admin 节点安装 ceph-deploy 。

sudo pip install ceph-deploy

注意: 确保所有节点都已经更新。

ceph-deploy 工具已经安装完毕后,为 Ceph 集群配置创建一个新目录。

创建一个新集群

创建一个新集群目录。

mkdir cluster
cd cluster/

下一步,用 ceph-deploy 命令通过定义监控节点 mon1 创建一个新集群。

ceph-deploy new mon1

命令将在集群目录生成 Ceph 集群配置文件 ceph.conf。

Generate new ceph cluster configuration

用 vim 编辑 ceph.conf。

vim ceph.conf

在 [global] 块下,粘贴下面的配置。

# Your network address
public network = 10.0.15.0/24
osd pool default size = 2

保存文件并退出编辑器。

安装 Ceph 到所有节点

现在用一个命令从 ceph-admin 节点安装 Ceph 到所有节点。

ceph-deploy install ceph-admin ceph-osd1 ceph-osd2 ceph-osd3 mon1

命令将自动安装 Ceph 到所有节点:mon1、osd1-3 和 ceph-admin - 安装将花一些时间。

现在到 mon1 节点部署监控节点。

ceph-deploy mon create-initial

命令将创建一个监控密钥,用 ceph 命令检查密钥。

ceph-deploy gatherkeys mon1

Deploy key ceph

增加 OSD 到集群

在所有节点上安装了 Ceph 之后,现在我们可以增加 OSD 守护进程到该集群。OSD 守护进程将在磁盘 /dev/sdb 分区上创建数据和日志 。

检查所有 osd 节点的 /dev/sdb 磁盘可用性。

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

disk list of osd nodes

你将看见我们之前创建 XFS 格式的 /dev/sdb。

下面,在所有 OSD 节点上用 zap 选项删除该分区表。

ceph-deploy disk zap ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

这个命令将删除所有 Ceph OSD 节点的 /dev/sdb 上的数据。

现在准备所有 OSD 节点,请确保结果没有报错。

ceph-deploy osd prepare ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

当你看到 ceph-osd1-3 结果已经准备好供 OSD 使用,就表明命令已经成功。

Prepare the ceph-osd nodes

用下面的命令激活 OSD:

ceph-deploy osd activate ceph-osd1:/dev/sdb ceph-osd2:/dev/sdb ceph-osd3:/dev/sdb

现在你可以再一次检查 OSDS 节点的 sdb 磁盘。

ceph-deploy disk list ceph-osd1 ceph-osd2 ceph-osd3

Ceph osds activated

结果是 /dev/sdb 现在已经分为两个区:

  1. /dev/sdb1 - Ceph Data
  2. /dev/sdb2 - Ceph Journal

或者你直接在 OSD 节点山检查。

ssh ceph-osd1
sudo fdisk -l /dev/sdb

Ceph OSD nodes were created

接下来,部署管理密钥到所有关联节点。

ceph-deploy admin ceph-admin mon1 ceph-osd1 ceph-osd2 ceph-osd3

在所有节点运行下面的命令,改变密钥文件权限。

sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

Ceph 集群在 Ubuntu 16.04 已经创建完成。

第 6 步 - 测试 Ceph

在第 4 步,我们已经安装并创建了一个新 Ceph 集群,然后添加了 OSD 节点到集群。现在我们应该测试集群确保它如期工作。

从 ceph-admin 节点,登录到 Ceph 监控服务器 mon1。

ssh mon1

运行下面命令来检查集群是否健康。

sudo ceph health

现在检查集群状态。

sudo ceph -s

你可以看到下面返回结果:

Ceph Cluster Status

确保 Ceph 健康状态是 OK 的,有一个监控节点 mon1 IP 地址为 '10.0.15.11'。有 3 个 OSD 服务器都是 up 状态并且正在运行,可用磁盘空间为 45GB - 3x15GB 的 Ceph 数据 OSD 分区。

我们在 Ubuntu 16.04 建立一个新 Ceph 集群成功。

参考


via: https://www.howtoforge.com/tutorial/how-to-install-a-ceph-cluster-on-ubuntu-16-04/

作者:Muhammad Arul 译者:wyangsun 校对:wxy

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

为了从 Linux 服务器榨取尽可能多的性能,请了解如何更改 I/O 调度器以满足你的需求。

Linux I/O 调度器 ( Linux I/O scheduler ) 控制内核提交读写请求给磁盘的方式。自从 2.6 内核以来,管理员已经能够更改这个调度器,所以他们可以自定义他们的平台以完全适合他们的需要。

有三个调度器可供选择,每个调度器都有其优点。这些调度器是:

  • CFQ ( Completely Fair Scheduler ( 完全公平调度器 ) )(cfq) :它是许多 Linux 发行版的默认调度器;它将由进程提交的同步请求放到多个进程队列中,然后为每个队列分配时间片以访问磁盘。
  • Noop 调度器(noop) : 基于先入先出(FIFO)队列概念的 Linux 内核里最简单的 I/O 调度器。此调度程序最适合于 SSD。
  • 截止时间调度器(deadline) : 尝试保证请求的开始服务时间。

当你想要让 Linux 机器发挥最佳性能时,这可能是你所要做的事情之一。幸运的是,更改 I/O 调度器非常简单。让我告诉你怎么做。

找出你有的调度器

你需要做的第一件事是找出哪个调度器正在处理你系统上的 I/O。这是从命令行完成的,你必须知道磁盘的名称。为简单起见,我假设磁盘是 sda。据此信息,打开终端窗口并输入以下命令:

cat /sys/block/sda/queue/scheduler

该命令的结果将显示当前运行的调度程序(下图)。

Figure A

Elementary OS Loki 运行 deadline 调度器。

更改你的调度器

你可以通过两种方式更改你的调度器:即时或永久。如果你即时更改调度器,它会在重启后恢复到之前的默认调度器。你可能希望首先进行即时更改,以查看哪个调度器能为你的需求带来最佳性能。

说到你要即时改到 noop 调度器。 为此,输入以下命令:

sudo echo noop > /sys/block/hda/queue/scheduler

你可以将 noop 更改为 cfq 或 deadline。

此更改可以在不重新启动计算机的情况下生效。 一旦更改,I/O 调度器将会切换,(希望)你能看到性能提高(再说一次,根据你的需要而定)。

如果要将调度器更改为永久,则必须在 GRUB 配置文件中执行此操作。 为此,请输入 sudo nano /etc/default/grub,然后修改下面的行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

到

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"

同样,你可以改变 noop 为任何你需要的调度器。如果你用的是即时修改,则不必重新启动以使新调度器生效。

这些就是修改调度器的方法了。

做出明智的选择

你应该做研究,找出什么调度器最适合你的特殊情况。要了解每个调度器的更多信息,请查看这些 Wiki 页面:CFS、Noop和 Deadline。


via: http://www.techrepublic.com/article/how-to-change-the-linux-io-scheduler-to-fit-your-needs/

作者:Jack Wallen 译者:geekpi 校对:wxy

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

我们在使用 DokuWiki,它是一个真棒的工具。我们团队有一个内部知识库,我们使用 DokuWiki 存储我们的所有评论、教程等。它很简单,并且易于安装和使用。在这篇文章中,我们将展示如何在 Ubuntu 16.04 服务器上安装 DokuWiki。

需求

DokuWiki 不需要太多依赖,因为它不需要数据库。这里是 DokuWiki 的要求:

  • PHP 5.3.4 或更高版本(建议使用 PHP 7+)
  • 一台 web 服务器(Apache/Nginx/任何其他)
  • 一台 VPS。买一台便宜的托管 VPS,那么你就不必这样做了。你只需与支持团队联系,他们将会为您安装。

指导

在你开始之前,你应该升级你的系统。运行下面的命令:

sudo apt-get update && sudo apt-get upgrade

安装 Apache

我们需要一台用于我们 wiki 的 web 服务器。我们在本教程中使用 Apache,但你也可以使用 Nginx 或任何其他 web 服务器。用下面的命令安装apache:

apt-get install apache2

安装 PHP7 和模块

接下来,如果你还没有安装 PHP,你应该先安装 PHP。在本教程中,我们使用 PHP7。所以请使用下面的命令安装 PHP7 和一些其他 PHP 模块:

apt-get install php7.0-fpm php7.0-cli php-apcu php7.0-gd php7.0-xml php7.0-curl php7.0-json php7.0-mcrypt php7.0-cgi php7.0 libapache2-mod-php7.0

下载安装 DokuWiki

下面就来到主要部分了 - 实际安装 DokuWiki。

首先,为你的 DokuWiki 创建一个目录:

mkdir -p /var/www/thrwiki

进入你刚才创建的目录:

cd /var/www/thrwiki

运行下面的命令来下载最新(稳定)的 DokuWiki:

wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz

解压 .tgz 文件:

tar xvf dokuwiki-stable.tgz

更改文件/文件夹权限:

www-data:www-data -R /var/www/thrwiki
chmod -R 707 /var/www/thrwiki

为 DokuWiki 配置 Apache

为你的 DokuWiki 创建一个 .conf 文件(我们把它命名为 thrwiki.conf,但是你可以把它命名成任何你想要的),并用你喜欢的文本编辑器打开。我们使用 nano:

touch /etc/apache2/sites-available/thrwiki.conf
ln -s /etc/apache2/sites-available/thrwiki.conf /etc/apache2/sites-enabled/thrwiki.conf
nano /etc/apache2/sites-available/thrwiki.conf

下面是 thrwiki.conf 中的内容:

<VirtualHost yourServerIP:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/thrwiki/
  ServerName wiki.thishosting.rocks
  ServerAlias www.wiki.thishosting.rocks
  <Directory /var/www/thrwiki/>
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
  ErrorLog /var/log/apache2/wiki.thishosting.rocks-error_log
  CustomLog /var/log/apache2/wiki.thishosting.rocks-access_log common
</VirtualHost>

编辑与你服务器相关的行。将 [email protected]、wiki.thishosting.rocks 替换成你自己的数据,重启 apache 使更改生效:

systemctl restart apache2.service

就是这样了。现在已经配置完成了。现在你可以继续通过前端页面 http://wiki.thishosting.rocks/install.php 安装配置 DokuWiki 了。安装完成后,你可以用下面的命令删除 install.php:

rm -f /var/www/html/thrwiki/install.php

如果你需要任何帮助,请随意留下评论。


via: https://thishosting.rocks/build-your-own-wiki-on-ubuntu-with-dokuwiki/

作者:thishostrocks.com 译者:geekpi 校对:wxy

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

当我在运行 Linux 的计算机上安装我的第一块固态驱动器(SSD)后,我开始探索如何用好它们。SSD 在操作方式上与传统磁性驱动器不同,并且它们需要在软件上另行处理以达到功能优化。

在传统磁盘驱动器上,删除时所删除的文件不会从磁盘中完全删除。这就是为什么你可以恢复已删除的文件的原因。基本上,文件系统仅引用磁盘上文件的位置,并且当文件被删除时,该引用被擦除,以允许你在这些空间中写入新数据覆盖原来的数据。然而,对于 SSD,新数据只能写在驱动器上完全新的或已擦除的单元上。因为必须在写入之前清除空间,如果在写入文件时尚未有足够的可用空间,则必须首先擦除该空间。这可能会对性能产生负面影响。

如果操作系统在写入新数据之前就擦除了未使用的空间,而不是在写入时同时进行擦除,则可以提高文件保存性能。这种做法就是 TRIM)。 TRIM 命令本质上允许你的操作系统告诉驱动器哪些区域的数据不再使用,以便擦除它们,加快驱动器将来的写入,可以 SSD 的用户提供更佳的体验。

在 Linux 中,fstrim 提供此功能,它可以为写入新数据而准备驱动器,并延长驱动器的使用寿命。由于在我使用的 Linux 发行版上 SSD 的 trim 不是自动的,所以必须去调度该操作,否则 SSD 的性能会随着时间的推移而降低。

为了在驱动器上运行 fstrim,驱动器本身以及其上的文件系统必须支持 TRIM。在文件系统挂载过程中可以启用 TRIM。例如,为了将设备 /dev/sda2 启用 TRIM 挂载到 /mnt,你要运行:

mount -t ext4 -o discard /dev/sda2 /mnt

一旦启用,TRIM 过程本身就相当简单。TRIM SSD 也可以在命令行或 cron 任务中手动完成。作为超级用户(使用 su 或 sudo),运行 fstrim / -v 以完成手动 trim,或者设置 cron 任务以在计算机未使用时定期为你运行此命令。对于 fstrim 的完整选项列表请参考它的 man 手册。

硬件支持根据使用的驱动器接口类型如 PCI、ATA#ATA)、SCSI#SCSI) 还是 SD/MMC#SD.2FMMC) 而有所不同。你需要咨询你的 Linux 供应商以了解你的特定发行版是如何支持 TRIM 的。

例如,红帽提供以下 SSD 磁盘指南。“性能随着所使用的块数接近磁盘容量而降低,性能影响程度因供应商而异,但是所有设备都会遇到一些性能降低。为了解决性能降低问题,主机系统(例如 Linux 内核)使用丢弃请求以通知存储器给定范围的块不再使用。”

Debian wiki 提供了 SSD 使用的一些基本注意事项:使用 Linux 3.2 或更高版本内核,使用 SSD 的最新固件,使用 EXT4 文件系统,并且“在正常工作负载下有足够的 DRAM 用来操作而不用使用交换空间“。


作者简介:

Don Watkins - 教育家、教育技术专家、企业家、开源倡导者。教育心理学硕士、教育领导硕士、Linux 系统管理员、CCNA、使用 Virtual Box 虚拟化。关注我 @Don\_Watkins。


via: https://opensource.com/article/17/1/solid-state-drives-linux-enabling-trim-ssds

作者:Don Watkins 译者:geekpi 校对:wxy

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

PHP 配置默认允许服务器在 HTTP 响应头 X-Powered-By 中显示安装在服务器上的 PHP 版本。

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了 PHP。

假设你服务器上安装的特定版本的 PHP 具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

在我以前的文章中,我已经展示了如何隐藏 apache 版本号,你已经看到如何不再显示 apache 的安装版本。但是如果你在你的 apache 服务器上运行 PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。

因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP 版本号。

此设置可以在加载的 PHP 配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

$ php -i | grep "Loaded Configuration File"

PHP 配置文件位置

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
Loaded Configuration File => /etc/php.ini
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
Loaded Configuration File => /etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP 配置文件,如下所示:

----------------在 CentOS/RHEL/Fedora 上---------------- 
$ sudo cp /etc/php.ini /etc/php.ini.orig
---------------- 在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo cp /etc/php/7.0/cli/php.ini  /etc/php/7.0/cli/php.ini.orig  

用你最喜欢的编辑器,使用超级用户权限打开文件:

---------------- 在 CentOS/RHEL/Fedora 上---------------- 
$ sudo vi /etc/php.ini
----------------在 Debian/Ubuntu/Linux Mint 上---------------- 
$ sudo vi /etc/php/7.0/cli/php.ini

定位到关键词 expose_php,并将值设置成 Off:

expose_php = Off

保存并退出文件。之后,重启 web 服务器:

---------------- 使用 SystemD ---------------- 
$ sudo systemctl restart httpd  
或
$ sudo systemctl restart apache2 
---------------- 使用 SysVInit ---------------- 
$ sudo service httpd restart  
或
$ sudo service apache2 restart

最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的 PHP 版本号。

$ lynx -head -mime_header http://localhost 
或者
$ lynx -head -mime_header http://server-address

这里的标志含义是:

  • -head – 发送一个请求 mime 报头的 HEAD 请求。
  • -mime_header – 打印所提取文档的 MIME 标头及其源代码。

注意: 确保你系统中已经安装了命令行 web 浏览器 lynx。

就是这样了!在本文中,我们解释了如何隐藏服务器 HTTP 响应头中的 PHP 版本号以保护 web 服务器免受可能的攻击。你可以在下面的评论栏中留下你的想法或者相关的问题。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 及 web 开发者,目前是 TecMint 的内容创作者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/hide-php-version-http-header/

作者:Aaron Kili 译者:geekpi 校对:jasminepeng

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