分类 技术 下的文章

很多时候我们诸如 SD 卡和 U 盘这样的储存器可能会被损坏,并且因此或其他原因不能继续使用。

这可能是因为使用这个设备创建了一个引导媒体或者是通过错误的平台格式化亦或是创建了一个新的分区在这个设备上。

恢复损坏的 USB 设备至初始状态

Linux 系统磁盘管理器

警告:接下来的操作会将你设备上的所有数据格式化。

无论是上面提及的什么原因,最终的结果是我们无法继续使用这个设备。

所以这里有一个恢复 USB 设备或者是 SD 卡到出厂状态的方法。

大多数时候通过文件浏览器进行一次简单格式化可以解决问题,但是在一些极端情况下,比如文件管理器没有作用,而你又需要你的设备可以继续工作时,你可以使用下面的指导:

我们将会使用一个叫做 mkusb 的小工具来实现目标,这个工具的安装非常简单。

添加 mkusb 的仓库:

sudo apt add repository ppa:mkusb/ppa

现在更新你的包列表:

sudo apt-get update

安装 `mkusb:

sudo apt-get install mkusb

现在运行 mkusb 你将会看到这个提示,点击 ‘Yes’。

运行 mkusb dus

现在 mkusb 将会最后一次询问你是否希望继续格式化你的数据,‘Stop’是被默认选择的,你现在选择 ‘Go’ 并点击 ‘OK’。

Linux mkusb

窗口将会关闭,此时你的终端看起来是这样的。

mkusb usb 控制台

在几秒钟之后,整个过程将会完成,并且你将看到一个这样的弹出窗口。

恢复损坏的 USB 设备

你现在需要把你的设备从系统推出,然后再重新插进去。你的设备将被恢复成为一个普通设备而且还能像原来一样的工作。

Linux 磁盘管理器

我们现在所做的操作本可以通过终端命令或是 gparted 或者其他的软件来完成,但是那将会需要一些关于分区管理的知识。

所以有一个像这样可以自动解决专一问题的小工具总是一个好事。

结论

mkusb 是一个很容易使用的程序,它可以修复你的 USB 储存设备和 SD 卡。mkusb 通过 mkusb 的 PPA 来下载。所有在 mkusb 上的操作都需要超级管理员的权限,并且你在这个设备上的所有数据将会被格式化。

一旦操作完成,你将会重置这个设备并让它继续工作。

如果你感到任何疑惑,你可以在下面的评论栏里免费发表。


via: http://www.linuxandubuntu.com/home/restore-corrupted-usb-drive-to-original-state-in-linux

作者:LINUXANDUBUNTU 译者:Drshu 校对:wxy

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

unhide 是一个小巧的网络取证工具,能够发现那些借助 rootkit、LKM 及其它技术隐藏的进程和 TCP/UDP 端口。这个工具在 Linux、UNIX 类、MS-Windows 等操作系统下都可以工作。根据其 man 页面的说明:

Unhide 通过下述三项技术来发现隐藏的进程。

  1. 进程相关的技术,包括将 /proc 目录与 /bin/ps 命令的输出进行比较。
  2. 系统相关的技术,包括将 /bin/ps 命令的输出结果同从系统调用方面得到的信息进行比较。
  3. 穷举法相关的技术,包括对所有的进程 ID 进行暴力求解,该技术仅限于在基于 Linux2.6 内核的系统中使用。

绝大多数的 Rootkit 工具或者恶意软件借助内核来实现进程隐藏,这些进程只在内核内部可见。你可以使用 unhide 或者诸如 rkhunter 等工具,扫描 rootkit 程序 、后门程序以及一些可能存在的本地漏洞

这篇文章描述了如何安装 unhide 并搜索隐藏的进程和 TCP/UDP 端口。

如何安装 unhide

首先建议你在只读介质上运行这个工具。如果使用的是 Ubuntu 或者 Debian 发行版,输入下述的 apt-get/apt 命令以安装 Unhide:

$ sudo apt-get install unhide

一切顺利的话你的命令行会输出以下内容:

[sudo] password for vivek: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
  rkhunter
The following NEW packages will be installed:
  unhide
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 46.6 kB of archives.
After this operation, 136 kB of additional disk space will be used.
Get:1 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 unhide amd64 20130526-1 [46.6 kB]
Fetched 46.6 kB in 0s (49.0 kB/s)
Selecting previously unselected package unhide.
(Reading database ... 205367 files and directories currently installed.)
Preparing to unpack .../unhide_20130526-1_amd64.deb ...
Unpacking unhide (20130526-1) ...
Setting up unhide (20130526-1) ...
Processing triggers for man-db (2.7.6.1-2) ...

如何在 RHEL/CentOS/Oracle/Scientific/Fedora 上安装 unhide

输入下列 yum Type the following yum command (first turn on EPLE repo on a CentOS/RHEL version 6.x or version 7.x):

输入以下的 yum 命令(CentOS/RHEL 6.x7.x 上首先打开 EPEL 仓库):

$ sudo yum install unhide

在 Fedora 上则使用以下 dnf 命令:

$ sudo dnf install unhide

如何在 Arch 上安装 unhide

键入以下 pacman 命令安装:

$ sudo pacman -S unhide

如何在 FreeBSD 上安装 unhide

可以通过以下的命令使用 port 来安装 unhide:

# cd /usr/ports/security/unhide/
# make install clean

或者可以通过二进制文件安装 hide,使用 pkg 命令安装:

# pkg install unhide

如何使用 unhide 工具?

unhide 的语法是:

unhide [options] test_list

test_list 参数可以是以下测试列表中的一个或者多个标准测试:

  1. brute
  2. proc
  3. procall
  4. procfs
  5. quick
  6. reverse
  7. sys

或基本测试:

  1. checkbrute
  2. checkchdir
  3. checkgetaffinity
  4. checkgetparam
  5. checkgetpgid
  6. checkgetprio
  7. checkRRgetinterval
  8. checkgetsched
  9. checkgetsid
  10. checkkill
  11. checknoprocps
  12. checkopendir
  13. checkproc
  14. checkquick
  15. checkreaddir
  16. checkreverse
  17. checksysinfo
  18. checksysinfo2
  19. checksysinfo3

你可以通过以下示例命令使用 unhide

# unhide proc
# unhide sys
# unhide quick

示例输出:

Unhide 20130526
Copyright © 2013 Yago Jesus & Patrick Gouin
License GPLv3+ : GNU GPL version 3 or later
http://www.unhide-forensics.info

NOTE : This version of unhide is for systems using Linux >= 2.6 

Used options: 
[*]Searching for Hidden processes through  comparison of results of system calls, proc, dir and ps

如何使用 unhide-tcp 工具辨明 TCP/UDP 端口的身份

以下是来自 man 页面的介绍:

unhide-tcp 取证工具通过对所有可用的 TCP/IP 端口进行暴力求解的方式,辨别所有正在监听,却没有列入 /bin/netstat 或者 /bin/ss 命令输出的 TCP/IP 端口身份。

注一:对于 FreeBSD、OpenBSD系统,一般使用 netstat 命令取代在这些操作系统上不存在的 iproute2,此外,sockstat 命令也用于替代 fuser。

注二:如果操作系统不支持 iproute2 命令,在使用 unhide 时需要在命令上加上 -n 或者 -s 选项。

# unhide-tcp

示例输出:

Unhide 20100201
http://www.security-projects.com/?Unhide

Starting TCP checking

Starting UDP checking

上述操作中,没有发现隐藏的端口。

但在下述示例中,我展示了一些有趣的事。

# unhide-tcp

示例输出:

Unhide 20100201
http://www.security-projects.com/?Unhide


Starting TCP checking

Found Hidden port that not appears in netstat: 1048
Found Hidden port that not appears in netstat: 1049
Found Hidden port that not appears in netstat: 1050
Starting UDP checking

可以看到 netstat -tulpnss 命令确实没有反映出这三个隐藏的端口:

# netstat -tulpn | grep 1048
# ss -lp
# ss -l | grep 1048

通过下述的 man 命令可以更多地了解 unhide

$ man unhide
$ man unhide-tcp

Windows 用户如何安装使用 unhide

你可以通过这个页面获取 Windows 版本的 unhide。


via: https://www.cyberciti.biz/tips/linux-unix-windows-find-hidden-processes-tcp-udp-ports.html

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

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

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

目标:使用 Linux 命令行显示天气预报。

发行版:所有 Linux 发行版。

要求:能连上因特网的 Linux

难度:容易

约定:

  • # - 需要使用 root 权限来执行指定命令,可以直接使用 root 用户来执行也可以使用 sudo 命令
  • $ - 可以使用普通用户来执行指定命令

简介

无需打开网页浏览器就能直接从终端获取最新的天气预报那该多方便啊,对吧?你还能把它写成脚本,或者设置定义定时任务。

http://wttr.in 是一个允许你搜索世界各地天气预报的网站,而且它的是以 ASCII 字符的形式来显示结果的。通过使用 cURL 访问 http://wttr.in,就能直接在终端显示查询结果了。

获取所在地的天气

Local weather from wttr.in

要抓取所在地的天气情况非常简单。wttr.in 会自动根据 IP 地址来探测你的所在地。除非你用了 VPN,否则它的精度还不错。

$ curl wttr.in

获取指定城市的天气

Weather by city from wttr.in

你可以通过在 wttr.in 后加上斜杠和城市名称的方式来获得其他城市的天气情况。不过要把名字中的空格替换成 +

$ curl wttr.in/New+York

你也可以以 Unix 时区的形式来填写城市名称。

$ curl wttr.in/New_York

不要直接使用空格,否则会出现奇怪而不准确的结果。

获取机场天气

Weather by airport from wttr.in

若你对地区的三位机场代号很熟悉,你也可以使用机场代号来查询天气。一般来说使用机场要比使用城市更贴近你,而且更精确一些。

$ curl wttr.in/JFK

猜测所在地

Weather by landmark from wttr.in

通过使用 ~ 字符,你可以让 wttr.in 通过地标来猜测天气情况。

$ curl wttr.in/~Statue+Of+Liberty

域名所在地的天气

Weather by domain name from wttr.in

你想不想知道 LinuxConfig 托管地的天气?现在有一个方法可以知道!wttr.in 可以通过域名获取天气。是的,这个功能可能不那么实用,但这很有趣啊。

$ curl wttr.in/@linuxconfig.org

更改温度单位

Change unit system in wttr.in

默认情况下,wttr.in 会根据你的实际地址来决定显示哪种温度单位(C 还是 F)。基本上,在美国,使用的是华氏度,而其他地方显示的是摄氏度。你可以指定显示的温度单位,在 URL 后添加 ?u 会显示华氏度,而添加 ?m 会显示摄氏度。

$ curl wttr.in/New_York?m

$ curl wttr.in/Toronto?u

在 ZSH 上有一个很奇怪的 bug,会使得这两条语句不能正常工作,如果你需要更换单位,恐怕需要改成使用 Bash 了。

总结

你可以很方便地在脚本,定时任务,甚至 MOTD(LCTT 译注:Message Of The Day - 每日消息)中访问 wttr.in。当然,你完全没有必要这么做。当你需要查看天气预报的时候只需要访问一下这个超棒的网站就行了。


via: https://linuxconfig.org/get-your-weather-forecast-from-the-linux-cli

作者:Nick Congleton 译者:lujun9972 校对:wxy

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

本文解释了 “ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。” 的原因及其解决方案。

ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。

check_mk 是一个帮你配置 nagios 监控服务器的工具。然后在配置其中一台机器时,我遇到了下面的错误:

ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。

该错误是在我使用下面命令尝试将该机器注册到监控服务器时发生的:

root@kerneltalks# /usr/bin/cmk-update-agent register -s monitor.kerneltalks.com -i master -H `hostname` -p http -U omdadmin -S ASFKWEFUNSHEFKG -v 

其中:

  • -s 指明监控服务器
  • -i 指定服务器上 Check\_MK 站点的名称
  • -H 指定 agent 所在的主机名
  • -p 为协议,可以是 http 或 https (默认为 https)
  • -U 允许下载 agent 的用户 ID
  • -S 为密码。用户的自动操作密码(当是自动用户时)

从错误中可以看出,命令无法解析监控服务器的 DNS 名称 monitor.kerneltalks.com

解决方案:

超级简单。检查 /etc/resolv.conf,确保你的 DNS 配置正确。如果还解决不了这个问题那么你可以直接在 /etc/hosts 中指明它的 IP。

root@kerneltalks# cat /etc/hosts
10.0.10.9 monitor.kerneltalks.com

这就搞定了。你现在可以成功注册了。

root@kerneltalks # /usr/bin/cmk-update-agent register -s monitor.kerneltalks.com -i master -H `hostname` -p http -U omdadmin -S ASFKWEFUNSHEFKG -v
Going to register agent at deployment server
Successfully registered agent for deployment.
You can now update your agent by running 'cmk-update-agent -v'
Saved your registration settings to /etc/cmk-update-agent.state.

另外,你也可以为 -s 直接指定 IP 地址,就没那么多事了!


via: https://kerneltalks.com/troubleshooting/check_mk-register-cannot-fetch-deployment-url-via-curl-error/

作者:kerneltalks 译者:lujun9972 校对:wxy

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

作为我工作的一部分,我所维护的 PATHspider 依赖于 cURLPycURL中的一些刚刚合并或仍在等待被合并的功能。我需要构建一个包含这些 Debian 包的 Docker 容器,所以我需要快速构建一个 APT 仓库。

Debian 仓库本质上可以看作是一个静态的网站,而且内容是经过 GPG 签名的,所以它不一定需要托管在某个可信任的地方(除非可用性对你的程序来说是至关重要的)。我在 Netlify(一个静态的网站主机)上托管我的博客,我认为它很合适这种情况。他们也支持开源项目

你可以用下面的命令安装 netlify 的 CLI 工具:

sudo apt install npm
sudo npm install -g netlify-cli

设置仓库的基本步骤是:

mkdir repository
cp /path/to/*.deb repository/
cd repository
apt-ftparchive packages . > Packages
apt-ftparchive release . > Release
gpg --clearsign -o InRelease Release
netlify deploy

当你完成这些步骤后,并在 Netlify 上创建了一个新的网站,你也可以通过 Web 界面来管理这个网站。你可能想要做的一些事情是为你的仓库设置自定义域名,或者使用 Let's Encrypt 启用 HTTPS。(如果你打算启用 HTTPS,请确保命令中有 apt-transport-https。)

要将这个仓库添加到你的 apt 源:

gpg --export -a YOURKEYID | sudo apt-key add -
echo "deb https://SUBDOMAIN.netlify.com/ /" | sudo tee -a /etc/apt/sources.list
sudo apt update

你会发现这些软件包是可以安装的。注意下 APT pinnng,因为你可能会发现,根据你的策略,仓库上的较新版本实际上并不是首选版本。

更新:如果你想要一个更适合平时使用的解决方案,请参考 repropro。如果你想让最终用户将你的 apt 仓库作为第三方仓库添加到他们的系统中,请查看 Debian wiki 上的这个页面,其中包含关于如何指导用户使用你的仓库。

更新 2:有一位评论者指出用 aptly,它提供了更多的功能,并消除了 repropro 的一些限制。我从来没有用过 aptly,所以不能评论具体细节,但从网站看来,这是一个很好的工具。


via: https://iain.learmonth.me/blog/2017/2017w383/

作者:Iain R. Learmonth 译者:geekpi 校对:wxy

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

在 Linux 中查找文件并不是什么大问题。市面上也有很多可靠的自由开源的可视化查找工具。但对我而言,查找文件,用命令行的方式会更快更简单。我们已经知道 如何根据访问和修改文件的时间寻找或整理文件。今天,在基于 Unix 的操作系统中,我们将见识如何通过权限查找文件。

本段教程中,我将创建三个文件名为 file1file2file3 分别赋予 777766655 文件权限,并分别置于名为 ostechnix 的文件夹中。

mkdir ostechnix && cd ostechnix/
install -b -m 777 /dev/null file1
install -b -m 766 /dev/null file2
install -b -m 655 /dev/null file3

现在,让我们通过权限来查找一下文件。

根据权限查找文件

根据权限查找文件最具代表性的语法:

find -perm mode

mode 可以是代表权限的八进制数字(777、666 …)也可以是权限符号(u=x,a=r+x)。

在深入之前,我们就以下三点详细说明 mode 参数。

  1. 如果我们不指定任何参数前缀,它将会寻找具体权限的文件。
  2. 如果我们使用 - 参数前缀, 寻找到的文件至少拥有 mode 所述的权限,而不是具体的权限(大于或等于此权限的文件都会被查找出来)。
  3. 如果我们使用 / 参数前缀,那么所有者、组或者其他人任意一个应当享有此文件的权限。

为了让你更好的理解,让我举些例子。

首先,我们将要看到基于数字权限查找文件。

基于数字(八进制)权限查找文件

让我们运行下列命令:

find -perm 777

这条命令将会查找到当前目录权限为确切为 777 权限的文件。

1

如你看见的屏幕输出,file1 是唯一一个拥有确切为 777 权限的文件。

现在,让我们使用 - 参数前缀,看看会发生什么。

find -perm -766

如你所见,命令行上显示两个文件。我们给 file2 设置了 766 权限,但是命令行显示两个文件,什么鬼?因为,我们设置了 - 参数前缀。它意味着这条命令将在所有文件中查找文件所有者的“读/写/执行”权限,文件用户组的“读/写”权限和其他用户的“读/写”权限。本例中,file1 和 file2 都符合要求。换句话说,文件并不一样要求时确切的 766 权限。它将会显示任何属于(高于)此权限的文件 。

然后,让我们使用 / 参数前置,看看会发生什么。

find -perm /222

上述命令将会查找某些人(要么是所有者、用户组,要么是其他人)拥有写权限的文件。这里有另外一个例子:

find -perm /220

这条命令会查找所有者或用户组中拥有写权限的文件。这意味着匹配所有者和用户组任一可写的文件,而其他人的权限随意。

如果你使用 - 前缀运行相同的命令,你只会看到所有者和用户组都拥有写权限的文件。

find -perm -220

下面的截图会告诉你这两个参数前缀的不同。

如我之前说过的一样,我们也可以使用符号表示文件权限。

请阅读:

基于符号的文件权限查找文件

在下面的例子中,我们使用例如 u(所有者)、g(用户组) 和 o(其他) 的符号表示法。我们也可以使用字母 a 代表上述三种类型。我们可以通过特指的 r (读)、 w (写)、 x (执行)分别代表它们的权限。

例如,寻找用户组中拥有 权限的文件,执行:

find -perm -g=w

上面的例子中,file1 和 file2 都拥有 权限。请注意,你可以等效使用 =+ 两种符号标识。例如,下列两行相同效果的代码。

find -perm -g=w
find -perm -g+w

查找文件所有者中拥有写权限的文件,执行:

find -perm -u=w

查找所有用户中拥有写权限的文件,执行:

find -perm -a=w

查找所有者和用户组中同时拥有写权限的文件,执行:

find -perm -g+w,u+w

上述命令等效与 find -perm -220

查找所有者或用户组中拥有写权限的文件,执行:

find -perm /u+w,g+w

或者,

find -perm /u=w,g=w

上述命令等效于 find -perm /220

更多详情,参照 man 手册。

man find

了解更多简化案例或其他 Linux 命令,查看man 手册

然后,这就是所有的内容。希望这个教程有用。更多干货,敬请关注。

干杯!


via: https://www.ostechnix.com/find-files-based-permissions/

作者:SK 译者:CYLeft 校对:校对者ID

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