Quantcast
Channel: Linux 中国◆开源社区
Viewing all 9060 articles
Browse latest View live

每日安全资讯:法国政府发布它开发的端对端加密消息应用

$
0
0

法国政府正式发布了它开发的替代 Telegram、WhatsApp 等的端对端加密消息应用 Tchap,支持 iOS 和 Android。Tchap 由法国数字部 DINSIC 开发,基于端对端加密、去中心化实时通讯系统 Matrix 的开源客户端 Riot。Tchap 也是开源的,源代码发布在 Github 上,任何感兴趣的机构可以部署自己的 Tchap 版本供内部使用。

来源:solidot.org

更多资讯

甲骨文例行更新又来了,这次修复了 297 个漏洞

甲骨文(Oracle)发布了每季一次的 Critical Patch Update 安全更新,总计修复了 297 个产品漏洞,当中有 53 个漏洞的 CVSS(Common Vulnerability Scoring System)评分高达 9 或以上,被视为应优先修复的对象。

来源: 开源中国

详情: http://t.cn/Eaqv88D 

Mozilla Firefox 将默认启用点击跟踪

上周,Chrome、Safari、Opera 和 Microsoft Edge 的新版本被发现不再允许用户关闭“链接审计 hyperlink auditing”的功能。链接审计是一项 HTML 标准,被用于跟踪网站链接的点击。它通过创建特定网页的 POST 请求,用户检查请求头文件就可以了解点击的源地址。目前只有 Brave 和 Firefox 这两个浏览器默认禁用链接审计。

来源: solidot.org

详情: http://t.cn/EaqvuaC 

微软工程师希望独立 impl 进程改进 Chromium 的滚动效果

在拥抱 Chromium 之后,微软正积极为这款开源网页浏览器做贡献。目前谷歌的 Chrome 浏览器拥有自己的平滑滚动功能,而微软希望进一步优化来增强使用体验。在今年早些时候分享了对 Chromium 鼠标行为的看法之后,微软正计划改善 Windows 平台 Chromium 的滚动效果。

来源: cnBeta.COM

详情: http://t.cn/Eaqvgy5 

法治政府蓝皮书建议:将行政赔偿扩至个人数据保护领域

《法治政府蓝皮书——中国法治政府发展报告(2018)》21 日在中国政法大学发布。针对备受关注的个人数据保护问题,报告建议,将行政赔偿等行政救济方法扩展到个人数据保护领域,促使行政机关加强个人数据的储存安全与保密力度。

来源: 新京报

详情: http://t.cn/EaqPwss

(信息来源于网络,安华金和搜集整理)


HTTPie:替代 Curl 和 Wget 的现代 HTTP 命令行客户端

$
0
0

大多数时间我们会使用 curl 命令或是 wget 命令下载文件或者做其他事。

我们以前曾写过 最佳命令行下载管理器 的文章。你可以点击相应的 URL 连接来浏览这些文章。

今天我们将讨论同样的话题。这个实用程序名为 HTTPie。

它是现代命令行 http 客户端,也是 curlwget 命令的最佳替代品。

什么是 HTTPie?

HTTPie (发音是 aitch-tee-tee-pie) 是一个 HTTP 命令行客户端。

HTTPie 工具是现代的 HTTP 命令行客户端,它能通过命令行界面与 Web 服务进行交互。

它提供一个简单的 http 命令,允许使用简单而自然的语法发送任意的 HTTP 请求,并会显示彩色的输出。

HTTPie 能用于测试、调试及与 HTTP 服务器交互。

主要特点

  • 具表达力的和直观语法
  • 格式化的及彩色化的终端输出
  • 内置 JSON 支持
  • 表单和文件上传
  • HTTPS、代理和认证
  • 任意请求数据
  • 自定义头部
  • 持久化会话
  • 类似 wget 的下载
  • 支持 Python 2.7 和 3.x

在 Linux 下如何安装 HTTPie

大部分 Linux 发行版都提供了系统包管理器,可以用它来安装。

Fedora 系统,使用 DNF 命令 来安装 httpie:

$ sudo dnf install httpie

Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 来安装 HTTPie。

$ sudo apt install httpie

基于 Arch Linux 的系统,使用 Pacman 命令 来安装 HTTPie。

$ sudo pacman -S httpie

RHEL/CentOS 的系统,使用 YUM 命令 来安装 HTTPie。

$ sudo yum install httpie

openSUSE Leap 系统,使用 Zypper 命令 来安装 HTTPie。

$ sudo zypper install httpie

用法

如何使用 HTTPie 请求 URL?

HTTPie 的基本用法是将网站的 URL 作为参数。

# http 2daygeek.com
HTTP/1.1 301 Moved Permanently
CF-RAY: 4c4a618d0c02ce6d-LHR
Cache-Control: max-age=3600
Connection: keep-alive
Date: Tue, 09 Apr 2019 06:21:28 GMT
Expires: Tue, 09 Apr 2019 07:21:28 GMT
Location: https://2daygeek.com/
Server: cloudflare
Transfer-Encoding: chunked
Vary: Accept-Encoding

如何使用 HTTPie 下载文件

你可以使用带 --download 参数的 HTTPie 命令下载文件。类似于 wget 命令。

# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png
HTTP/1.1 200 OK
Accept-Ranges: bytes
CF-Cache-Status: HIT
CF-RAY: 4c4a65d5ca360a66-LHR
Cache-Control: public, max-age=7200
Connection: keep-alive
Content-Length: 32066
Content-Type: image/png
Date: Tue, 09 Apr 2019 06:24:23 GMT
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Expires: Tue, 09 Apr 2019 08:24:23 GMT
Last-Modified: Mon, 08 Apr 2019 04:54:25 GMT
Server: cloudflare
Set-Cookie: __cfduid=dd2034b2f95ae42047e082f59f2b964f71554791063; expires=Wed, 08-Apr-20 06:24:23 GMT; path=/; domain=.2daygeek.com; HttpOnly; Secure
Vary: Accept-Encoding

Downloading 31.31 kB to "Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png"
Done. 31.31 kB in 0.01187s (2.58 MB/s)

你还可以使用 -o 参数用不同的名称保存输出文件。

# http --download https://www.2daygeek.com/wp-content/uploads/2019/04/Anbox-Easy-Way-To-Run-Android-Apps-On-Linux.png -o Anbox-1.png
HTTP/1.1 200 OK
Accept-Ranges: bytes
CF-Cache-Status: HIT
CF-RAY: 4c4a68194daa0a66-LHR
Cache-Control: public, max-age=7200
Connection: keep-alive
Content-Length: 32066
Content-Type: image/png
Date: Tue, 09 Apr 2019 06:25:56 GMT
Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
Expires: Tue, 09 Apr 2019 08:25:56 GMT
Last-Modified: Mon, 08 Apr 2019 04:54:25 GMT
Server: cloudflare
Set-Cookie: __cfduid=d3eea753081690f9a2d36495a74407dd71554791156; expires=Wed, 08-Apr-20 06:25:56 GMT; path=/; domain=.2daygeek.com; HttpOnly; Secure
Vary: Accept-Encoding

Downloading 31.31 kB to "Anbox-1.png"
Done. 31.31 kB in 0.01551s (1.97 MB/s)

如何使用 HTTPie 恢复部分下载?

你可以使用带 -c 参数的 HTTPie 继续下载。

# http --download --continue https://speed.hetzner.de/100MB.bin -o 100MB.bin
HTTP/1.1 206 Partial Content
Connection: keep-alive
Content-Length: 100442112
Content-Range: bytes 4415488-104857599/104857600
Content-Type: application/octet-stream
Date: Tue, 09 Apr 2019 06:32:52 GMT
ETag: "5253f0fd-6400000"
Last-Modified: Tue, 08 Oct 2013 11:48:13 GMT
Server: nginx
Strict-Transport-Security: max-age=15768000; includeSubDomains

Downloading 100.00 MB to "100MB.bin"
 |  24.14 %   24.14 MB    1.12 MB/s  0:01:07 ETA^C

你根据下面的输出验证是否同一个文件:

[email protected]:/var/log# ls -lhtr 100MB.bin
-rw-r--r-- 1 root root 25M Apr  9 01:33 100MB.bin

如何使用 HTTPie 上传文件?

你可以通过使用带有小于号 < 的 HTTPie 命令上传文件

$ http https://transfer.sh < Anbox-1.png

如何使用带有重定向符号 > 下载文件?

你可以使用带有重定向 > 符号的 HTTPie 命令下载文件。

# http https://www.2daygeek.com/wp-content/uploads/2019/03/How-To-Install-And-Enable-Flatpak-Support-On-Linux-1.png > Flatpak.png

# ls -ltrh Flatpak.png
-rw-r--r-- 1 root root 47K Apr  9 01:44 Flatpak.png

发送一个 HTTP GET 请求?

您可以在请求中发送 HTTP GET 方法。GET 方法会使用给定的 URI,从给定服务器检索信息。

# http GET httpie.org
HTTP/1.1 301 Moved Permanently
CF-RAY: 4c4a83a3f90dcbe6-SIN
Cache-Control: max-age=3600
Connection: keep-alive
Date: Tue, 09 Apr 2019 06:44:44 GMT
Expires: Tue, 09 Apr 2019 07:44:44 GMT
Location: https://httpie.org/
Server: cloudflare
Transfer-Encoding: chunked
Vary: Accept-Encoding

提交表单?

使用以下格式提交表单。POST 请求用于向服务器发送数据,例如客户信息、文件上传等。要使用 HTML 表单。

# http -f POST Ubuntu18.2daygeek.com hello='World'
HTTP/1.1 200 OK
Accept-Ranges: bytes
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 3138
Content-Type: text/html
Date: Tue, 09 Apr 2019 06:48:12 GMT
ETag: "2aa6-5844bf1b047fc-gzip"
Keep-Alive: timeout=5, max=100
Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT
Server: Apache/2.4.29 (Ubuntu)
Vary: Accept-Encoding

运行下面的指令以查看正在发送的请求。

# http -v Ubuntu18.2daygeek.com
GET / HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: ubuntu18.2daygeek.com
User-Agent: HTTPie/0.9.8

hello=World

HTTP/1.1 200 OK
Accept-Ranges: bytes
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 3138
Content-Type: text/html
Date: Tue, 09 Apr 2019 06:48:30 GMT
ETag: "2aa6-5844bf1b047fc-gzip"
Keep-Alive: timeout=5, max=100
Last-Modified: Sun, 17 Mar 2019 15:29:55 GMT
Server: Apache/2.4.29 (Ubuntu)
Vary: Accept-Encoding

HTTP 认证?

当前支持的身份验证认证方案是基本认证(Basic)和摘要验证(Digest)。

基本认证:

$ http -a username:password example.org

摘要验证:

$ http -A digest -a username:password example.org

提示输入密码:

$ http -a username example.org

via: https://www.2daygeek.com/httpie-curl-wget-alternative-http-client-linux/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:zgj1024 校对:wxy

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

如何检查多个远程 Linux 系统是否打开了指定端口?

$
0
0

我们最近写了一篇文章关于如何检查远程 Linux 服务器是否打开指定端口。它能帮助你检查单个服务器。

如果要检查五个服务器有没有问题,可以使用以下任何一个命令,如 nc(netcat)、nmaptelnet。但是如果想检查 50 多台服务器,那么你的解决方案是什么?

要检查所有服务器并不容易,如果你一个一个这样做,完全没有必要,因为这样你将会浪费大量的时间。为了解决这种情况,我使用 nc 命令编写了一个 shell 小脚本,它将允许我们扫描任意数量服务器给定的端口。

如果你要查找单个服务器扫描,你有多个选择,你只需阅读 检查远程 Linux 系统上的端口是否打开? 了解更多信息。

本教程中提供了两个脚本,这两个脚本都很有用。这两个脚本都用于不同的目的,你可以通过阅读标题轻松理解其用途。

在你阅读这篇文章之前,我会问你几个问题,如果你不知道答案你可以通过阅读这篇文章来获得答案。

如何检查一个远程 Linux 服务器上指定的端口是否打开?

如何检查多个远程 Linux 服务器上指定的端口是否打开?

如何检查多个远程 Linux 服务器上是否打开了多个指定的端口?

什么是 nc(netcat)命令?

nc 即 netcat。它是一个简单实用的 Unix 程序,它使用 TCP 或 UDP 协议进行跨网络连接进行数据读取和写入。

它被设计成一个可靠的 “后端” 工具,我们可以直接使用或由其他程序和脚本轻松驱动它。

同时,它也是一个功能丰富的网络调试和探索工具,因为它可以创建你需要的几乎任何类型的连接,并具有几个有趣的内置功能。

netcat 有三个主要的模式。分别是连接模式,监听模式和隧道模式。

nc(netcat)的通用语法:

$ nc [-options] [HostName or IP] [PortNumber]

如何检查多个远程 Linux 服务器上的端口是否打开?

如果要检查多个远程 Linux 服务器上给定端口是否打开,请使用以下 shell 脚本。

在我的例子中,我们将检查端口 22 是否在以下远程服务器中打开,确保你已经更新文件中的服务器列表而不是使用我的服务器列表。

你必须确保已经更新服务器列表 :server-list.txt 。每个服务器(IP)应该在单独的行中。

# cat server-list.txt
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7

使用以下脚本可以达到此目的。

# vi port_scan.sh

#!/bin/sh
for server in `more server-list.txt`
do
  #echo $i
  nc -zvw3 $server 22
done

设置 port_scan.sh 文件的可执行权限。

$ chmod +x port_scan.sh

最后运行脚本来达到此目的。

# sh port_scan.sh

Connection to 192.168.1.2 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.3 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.4 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.5 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.6 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.7 22 port [tcp/ssh] succeeded!

如何检查多个远程 Linux 服务器上是否打开多个端口?

如果要检查多个服务器中的多个端口,请使用下面的脚本。

在我的例子中,我们将检查给定服务器的 22 和 80 端口是否打开。确保你必须替换所需的端口和服务器名称而不使用是我的。

你必须确保已经将要检查的端口写入 port-list.txt 文件中。每个端口应该在一个单独的行中。

# cat port-list.txt
22
80

你必须确保已经将要检查的服务器(IP 地址)写入 server-list.txt 到文件中。每个服务器(IP) 应该在单独的行中。

# cat server-list.txt
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.1.7

使用以下脚本来达成此目的。

# vi multiple_port_scan.sh

#!/bin/sh
for server in `more server-list.txt`
do
  for port in `more port-list.txt`
  do
    #echo $server
    nc -zvw3 $server $port
    echo ""
  done
done

设置 multiple_port_scan.sh 文件的可执行权限。

$ chmod +x multiple_port_scan.sh

最后运行脚本来实现这一目的。

# sh multiple_port_scan.sh
Connection to 192.168.1.2 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.2 80 port [tcp/http] succeeded!

Connection to 192.168.1.3 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.3 80 port [tcp/http] succeeded!

Connection to 192.168.1.4 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.4 80 port [tcp/http] succeeded!

Connection to 192.168.1.5 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.5 80 port [tcp/http] succeeded!

Connection to 192.168.1.6 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.6 80 port [tcp/http] succeeded!

Connection to 192.168.1.7 22 port [tcp/ssh] succeeded!
Connection to 192.168.1.7 80 port [tcp/http] succeeded!

via: https://www.2daygeek.com/check-a-open-port-on-multiple-remote-linux-server-using-nc-command/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:zero-MK 校对:wxy

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

每日安全资讯:NCSC 发布最常被黑客入侵的密码列表

$
0
0

英国国家网络安全中心(NCSC)发布了一份列表,列出了数据泄露中出现的 100000 个最常见的密码,以鼓励用户选择强密码。到目前为止,数据泄露中显示的最常用密码是 “123456”,有 2320 万个帐户使用此密码。另外,全世界有 770 万用户选择使用 “123456789” 作为密码。

紧接着排名靠前的三个密码均被超过 300 万用户使用:“qwerty” 出现 3.8 万次,“password” 出现 3.6 万次,“111111” 出现 310 万次。

许多常用的密码都是由一系列简单的数字构成,或将相同数字重复六到七次。

“iloveyou”、“monkey” 和 “dragon” 也排在最常用密码的前 20 位。

此外,成千上万的用户只使用一个名称作为密码。每年有超过 400,000 名用户使用 “ashley”、“michael” 和 “daniel”;“jessica” 和 “charlie” 各被使用超过 300,000 次。

这些可能是用户自己的名字,这意味着如果黑客获取了一个电子邮件地址而没有密码,那么使用受害者的名字来破解它可能会令人大开眼界。

当用户选择简单密码时,乐队也是一个常见的主题。密码列表详细说明 285,706 用户选择 “blink182” 作为他们的密码——这使得 pop-punk 乐队成为最常用的音乐相关密码。“50cent”、“enimem”、“metallica” 和 “slipknot” 都被使用了超过 140,000 次。

球队也是一大密码主题。“Liverpool” 在密码中赢得了最常用的英超足球队冠军头衔。其余最常遭泄露的此类密码分别为 “chelsea”、“arsenal”、“manutd” 和 “everton”。

使用自己喜欢的球队作为密码的人很容易发现自己是黑客攻击的受害者——许多体育迷会在社交媒体上谈论他们最喜欢的球队,因此对于网络犯罪分子来说,在社交媒体上寻找这些信息以破解帐户可能相对简单。

对此,NCSC 技术总监 Ian Levy 博士给出建议:

密码重用是一个可以避免的主要风险,没有人应该用可以猜到的东西保护敏感数据,比如他们的名字、当地足球队或最喜欢的乐队。

使用难以猜测的密码是一个强有力的第一步。我们建议结合三个随机但令人难忘的单词,这样人们就无法猜出你的密码。

来源:开源中国

更多资讯

AV-TEST 反病毒测试表明:Google Play Protect让人失望

近日,知名安全评测机构 AV-TEST 对 19 款面向移动平台的防病毒解决方案进行了测试。结果发现,谷歌官方的 Google Play Protect,无法做到完全让人信赖。本轮测试对 19 款 Android 安全软件的防护、可用性、功能性进行了综合评估,满分分别为 6 分、6 分、以及 1 分。

来源: cnBeta.COM

详情: http://t.cn/EaxuJCK 

Google 故意破坏竞争对手的浏览器?

前 Firefox 副总裁 Johnathan Nightingale 早些时候公开指责 Google 通过各种动作破坏 Firefox。他的故事引起了很多人的共鸣。Nightingale 不是第一个提出此类指控的 Firefox 团队成员。去年 Mozilla 的技术项目经理 Chris Peterson 指责 Google 让 YouTube 在 Edge 和 Firefox 上加载缓慢。

来源: solidot.org

详情: http://t.cn/EaxuaZV 

B 站网站后台工程源码疑似泄露 内含部分用户名密码

4 月 22 日消息,据微博@互联网的那点事 爆料称,哔哩哔哩(B 站)整个网站后台工程源码泄露,并且“不少用户名密码被硬编码在代码里面,谁都可以用。”新浪科技在 GitHub 上查询后发现,平台上确实存在由一个名叫“openbilibili”的用户创建的“go-common”代码库。截至发稿时,该项目已获得 6597 个星标和 6050 个代码库分支。

来源: 新浪科技

详情: http://t.cn/EaxuKYB 

(信息来源于网络,安华金和搜集整理)

在 Linux 中把用户添加到组的四个方法

$
0
0

Linux 组是用于管理 Linux 中用户帐户的组织单位。对于 Linux 系统中的每一个用户和组,它都有惟一的数字标识号。它被称为 用户 ID(UID)和组 ID(GID)。组的主要目的是为组的成员定义一组特权。它们都可以执行特定的操作,但不能执行其他操作。

Linux 中有两种类型的默认组。每个用户应该只有一个 主要组primary group 和任意数量的 次要组secondary group

  • 主要组: 创建用户帐户时,已将主要组添加到用户。它通常是用户的名称。在执行诸如创建新文件(或目录)、修改文件或执行命令等任何操作时,主要组将应用于用户。用户的主要组信息存储在 /etc/passwd 文件中。
  • 次要组: 它被称为次要组。它允许用户组在同一组成员文件中执行特定操作。例如,如果你希望允许少数用户运行 Apache(httpd)服务命令,那么它将非常适合。

你可能对以下与用户管理相关的文章感兴趣。

可以使用以下四种方法实现。

  • usermod:修改系统帐户文件,以反映在命令行中指定的更改。
  • gpasswd:用于管理 /etc/group/etc/gshadow。每个组都可以有管理员、成员和密码。
  • Shell 脚本:可以让管理员自动执行所需的任务。
  • 手动方式:我们可以通过编辑 /etc/group 文件手动将用户添加到任何组中。

我假设你已经拥有此操作所需的组和用户。在本例中,我们将使用以下用户和组:user1user2user3,另外的组是 mygroupmygroup1

在进行更改之前,我希望检查一下用户和组信息。详见下文。

我可以看到下面的用户与他们自己的组关联,而不是与其他组关联。

# id user1
uid=1008(user1) gid=1008(user1) groups=1008(user1)

# id user2
uid=1009(user2) gid=1009(user2) groups=1009(user2)

# id user3
uid=1010(user3) gid=1010(user3) groups=1010(user3)

我可以看到这个组中没有关联的用户。

# getent group mygroup
mygroup:x:1012:

# getent group mygroup1
mygroup1:x:1013:

方法 1:使用 usermod 命令

usermod 命令修改系统帐户文件,以反映命令行上指定的更改。

如何使用 usermod 命令将现有的用户添加到次要组或附加组?

要将现有用户添加到辅助组,请使用带有 -g 选项和组名称的 usermod 命令。

语法:

# usermod [-G] [GroupName] [UserName]

如果系统中不存在给定的用户或组,你将收到一条错误消息。如果没有得到任何错误,那么用户已经被添加到相应的组中。

# usermod -a -G mygroup user1

让我使用 id 命令查看输出。是的,添加成功。

# id user1
uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

如何使用 usermod 命令将现有的用户添加到多个次要组或附加组?

要将现有用户添加到多个次要组中,请使用带有 -G 选项的 usermod 命令和带有逗号分隔的组名称。

语法:

# usermod [-G] [GroupName1,GroupName2] [UserName]

在本例中,我们将把 user2 添加到 mygroupmygroup1 中。

# usermod -a -G mygroup,mygroup1 user2

让我使用 id 命令查看输出。是的,user2 已成功添加到 myGroupmyGroup1 中。

# id user2
uid=1009(user2) gid=1009(user2) groups=1009(user2),1012(mygroup),1013(mygroup1)

如何改变用户的主要组?

要更改用户的主要组,请使用带有 -g 选项和组名称的 usermod 命令。

语法:

# usermod [-g] [GroupName] [UserName]

我们必须使用 -g 改变用户的主要组。

# usermod -g mygroup user3

让我们看看输出。是的,已成功更改。现在,显示user3 主要组是 mygroup 而不是 user3

# id user3
uid=1010(user3) gid=1012(mygroup) groups=1012(mygroup)

方法 2:使用 gpasswd 命令

gpasswd 命令用于管理 /etc/group/etc/gshadow。每个组都可以有管理员、成员和密码。

如何使用 gpasswd 命令将现有用户添加到次要组或者附加组?

要将现有用户添加到次要组,请使用带有 -M 选项和组名称的 gpasswd 命令。

语法:

# gpasswd [-M] [UserName] [GroupName]

在本例中,我们将把 user1 添加到 mygroup 中。

# gpasswd -M user1 mygroup

让我使用 id 命令查看输出。是的,user1 已成功添加到 mygroup 中。

# id  user1
uid=1008(user1) gid=1008(user1) groups=1008(user1),1012(mygroup)

如何使用 gpasswd 命令添加多个用户到次要组或附加组中?

要将多个用户添加到辅助组中,请使用带有 -M 选项和组名称的 gpasswd 命令。

语法:

# gpasswd [-M] [UserName1,UserName2] [GroupName]

在本例中,我们将把 user2user3 添加到 mygroup1 中。

# gpasswd -M user2,user3 mygroup1

让我使用 getent 命令查看输出。是的,user2user3 已成功添加到 myGroup1 中。

# getent group mygroup1
mygroup1:x:1013:user2,user3

如何使用 gpasswd 命令从组中删除一个用户?

要从组中删除用户,请使用带有 -d 选项的 gpasswd 命令以及用户和组的名称。

语法:

# gpasswd [-d] [UserName] [GroupName]

在本例中,我们将从 mygroup 中删除 user1

# gpasswd -d user1 mygroup
Removing user user1 from group mygroup

方法 3:使用 Shell 脚本

基于上面的例子,我知道 usermod 命令没有能力将多个用户添加到组中,可以通过 gpasswd 命令完成。但是,它将覆盖当前与组关联的现有用户。

例如,user1 已经与 mygroup 关联。如果要使用 gpasswd 命令将 user2user3 添加到 mygroup 中,它将不会按预期生效,而是对组进行修改。

如果要将多个用户添加到多个组中,解决方案是什么?

两个命令中都没有默认选项来实现这一点。

因此,我们需要编写一个小的 shell 脚本来实现这一点。

如何使用 gpasswd 命令将多个用户添加到次要组或附加组?

如果要使用 gpasswd 命令将多个用户添加到次要组或附加组,请创建以下 shell 脚本。

创建用户列表。每个用户应该在单独的行中。

$ cat user-lists.txt
user1
user2
user3

使用以下 shell 脚本将多个用户添加到单个次要组。

vi group-update.sh

#!/bin/bash
for user in `cat user-lists.txt`
do
usermod -a -G mygroup $user
done

设置 group-update.sh 文件的可执行权限。

# chmod + group-update.sh

最后运行脚本来实现它。

# sh group-update.sh

让我看看使用 getent 命令的输出。 是的,user1user2user3 已成功添加到 mygroup 中。

# getent group mygroup
mygroup:x:1012:user1,user2,user3

如何使用 gpasswd 命令将多个用户添加到多个次要组或附加组?

如果要使用 gpasswd 命令将多个用户添加到多个次要组或附加组中,请创建以下 shell 脚本。

创建用户列表。每个用户应该在单独的行中。

$ cat user-lists.txt
user1
user2
user3

创建组列表。每组应在单独的行中。

$ cat group-lists.txt
mygroup
mygroup1

使用以下 shell 脚本将多个用户添加到多个次要组。

#!/bin/sh
for user in `more user-lists.txt`
do
for group in `more group-lists.txt`
do
usermod -a -G $group $user
done

设置 group-update-1.sh 文件的可执行权限。

# chmod +x group-update-1.sh

最后运行脚本来实现它。

# sh group-update-1.sh

让我看看使用 getent 命令的输出。 是的,user1user2user3 已成功添加到 mygroup 中。

# getent group mygroup
mygroup:x:1012:user1,user2,user3

此外,user1user2user3 已成功添加到 mygroup1 中。

# getent group mygroup1
mygroup1:x:1013:user1,user2,user3

方法 4:在 Linux 中将用户添加到组中的手动方法

我们可以通过编辑 /etc/group 文件手动将用户添加到任何组中。

打开 /etc/group 文件并搜索要更新用户的组名。最后将用户更新到相应的组中。

# vi /etc/group

via: https://www.2daygeek.com/linux-add-user-to-group-primary-secondary-group-usermod-gpasswd/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:NeverKnowsTomorrow 校对:wxy

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

你应该学习哪种编程语言?

$
0
0

学习一门新的编程语言是在你的职业生涯中继续前进的好方法,但是应该学习哪一门呢?

如果你想要开始你的编程生涯或继续前进,那么学习一门新语言是一个聪明的主意。但是,大量活跃使用的语言引发了一个问题:哪种编程语言是最好的?要回答这个问题,让我们从一个简单的问题开始:你想做什么样的程序?

如果你想在客户端进行网络编程,那么特定语言 HTML、CSS 和 JavaScript(看似无穷无尽的方言之一)是必须要学习的。

如果你想在服务器端进行 Web 编程,那么选择包括常见的通用语言:C++、Golang、Java、C#、 Node.js、Perl、Python、Ruby 等等。当然,服务器程序与数据存储(例如关系数据库和其他数据库)打交道,这意味着 SQL 等查询语言可能会发挥作用。

如果你正在为移动设备编写原生应用程序,那么了解目标平台非常重要。对于 Apple 设备,Swift 已经取代 Objective C 成为首选语言。对于 Android 设备,Java(带有专用库和工具集)仍然是主要语言。有一些特殊语言,如与 C# 一起使用的 Xamarin,可以为 Apple、Android 和 Windows 设备生成特定于平台的代码。

那么通用语言呢?通常有各种各样的选择。在动态脚本语言(如 Perl、Python 和 Ruby)中,有一些新东西,如 Node.js。而 Java 和 C# 的相似之处比它们的粉丝愿意承认的还要多,仍然是针对虚拟机(分别是 JVM 和 CLR)的主要静态编译语言。在可以编译为原生可执行文件的语言中,C++ 仍在使用,还有后来出现的 Golang 和 Rust 等。通用的函数式语言比比皆是(如 Clojure、Haskell、Erlang、F#、Lisp 和 Scala),它们通常都有热情投入的社区。值得注意的是,面向对象语言(如 Java 和 C#)已经添加了函数式构造(特别是 lambdas),而动态语言从一开始就有函数式构造。

让我以 C 语言结尾,它是一种小巧、优雅、可扩展的语言,不要与 C++ 混淆。现代操作系统主要用 C 语言编写,其余部分用汇编语言编写。任何平台上的标准库大多数都是用 C 语言编写的。例如,任何打印 Hello, world! 这种问候都是通过调用名为 write 的 C 库函数来实现的。

C 作为一种可移植的汇编语言,公开了其他高级语言有意隐藏的底层系统的详细信息。因此,理解 C 可以更好地掌握程序如何竞争执行所需的共享系统资源(如处理器、内存和 I/O 设备)。C 语言既高级又接近硬件,因此在性能方面无与伦比,当然,汇编语言除外。最后,C 是编程语言中的通用语言,几乎所有通用语言都支持某种形式的 C 调用。

有关现代 C 语言的介绍,参考我的书籍《C 语言编程:可移植的汇编器介绍》。无论你怎么做,学习 C 语言,你会学到比另一种编程语言多得多的东西。

你认为学习哪些编程语言很重要?你是否同意这些建议?在评论告知我们!


via: https://opensource.com/article/19/2/which-programming-languages-should-you-learn

作者:Marty Kalin 选题:lujun9972 译者:MjSeven 校对:wxy

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

每日安全资讯:搜 Wi-Fi 热点 Android 应用数据泄露

$
0
0

一款流行的 Android 热点(WiFi)搜寻 App“WiFi Finder”暴露了 200 多万个网络的 WiFi 密码。目前已有数千人下载了这款 WiFi Finder 应用,它允许用户搜索附近的 WiFi 网络。但同时,这款应用也允许用户将 WiFi 密码从自己的设备上传到数据库,供其他人使用。

这个包含了 200 多万个网络密码的数据库并未受到任何保护,允许任何人访问,并批量下载这些内容。

网络安全研究人员萨亚姆·杰恩率先发现了这个数据库,并将其发现报告给了 TechCrunch。

TechCrunch 试图联系开发商,但无济于事。最后,TechCrunch 联系上了数据库托管商 DigitalOcean,后者在一天内就关闭了该数据库。

据悉,数据库中的每条记录都包含了 WiFi 网络名称、精确的地理位置、基本服务集标识符(BSSID)和明文存储的网络密码。

来源:新浪科技

更多资讯

手机是否需要安装杀毒软件 看完你就知道答案

虽然我们都已经习惯了要在电脑上安装反病毒软件,但是这种习惯在手机上就不那么常见了,很少有人会在手机上安装反病毒软件,那么手机是否会受到病毒的侵扰呢?到底是否需要给手机也安装反病毒软件呢?

来源: 环球科技

详情: http://t.cn/Ea9tTgH 

俄罗斯黑客瞄准了各国驻欧洲大使馆和相关官员

根据 CheckPoint Research 的一份新报告,俄罗斯黑客最近通过向官员发送伪装成美国国务院官方文件的恶意附件,攻击了欧洲的一些大使馆。黑客攻击的目标是尼泊尔、圭亚那、肯尼亚、意大利、利比里亚、百慕大和黎巴嫩等国的欧洲大使馆。

来源: cnBeta.COM

详情: http://t.cn/Ea9tnP8 

收集使用未成年人个人信息应征得监护人同意

互联网时代该如何保护个人信息?4 月 20 日,民法典人格权编草案再次提请全国人大常委会会议审议。其中,有关个人信息保护的规定是此次二审稿的重要修改内容之一,引起广泛关注。

来源: 新华网

详情: http://t.cn/Ea9td6H 

全国人大常委会组成人员建议:对企业泄露个人信息的情况做专门规定

日前,民法典人格权编草案二审稿正式提请十三届全国人大常委会第十次会议审议。《每日经济新闻》记者注意到,在草案二审稿中,就用专章对隐私权和个人信息保护作出专门规定。

来源: 每日经济新闻

详情: http://t.cn/Ea9tFaC 

(信息来源于网络,安华金和搜集整理)

使用 sgdisk 管理分区

$
0
0

Roderick W. Smithsgdisk 命令可在命令行中管理硬盘的分区。下面将介绍使用它所需的基础知识。

使用 sgdisk 的大多数基本功能只需要了解以下六个参数:

1、-p 打印 分区表:

# sgdisk -p /dev/sda

2、 -d x 删除 分区 x:

# sgdisk -d 1 /dev/sda

3、 -n x:y:z 创建一个编号 x 的分区,从 y 开始,从 z 结束:

# sgdisk -n 1:1MiB:2MiB /dev/sda

4、-c x:y 更改分区 x 的名称为 y:

# sgdisk -c 1:grub /dev/sda

5、-t x:y 将分区 x 的类型更改为 y:

# sgdisk -t 1:ef02 /dev/sda

6、–list-types 列出分区类型代码:

# sgdisk --list-types

如你在上面的例子中所见,大多数命令都要求将要操作的硬盘的设备文件名指定为最后一个参数。

可以组合上面的参数,这样你可以一次定义所有分区:

# sgdisk -n 1:1MiB:2MiB -t 1:ef02 -c 1:grub /dev/sda

在值的前面加上 + 符号,可以为某些字段指定相对值。如果你使用相对值,sgdisk 会为你做数学运算。例如,上面的例子可以写成:

# sgdisk -n 1:1MiB:+1MiB -t 1:ef02 -c 1:grub /dev/sda

0 值对于以下几个字段有特殊意义:

  • 对于分区号字段,0 表示应使用下一个可用编号(编号从 1 开始)。
  • 对于起始地址字段,0 表示使用最大可用空闲块的头。硬盘开头的一些空间始终保留给分区表本身。
  • 对于结束地址字段,0 表示使用最大可用空闲块的末尾。

通过在适当的字段中使用 0 和相对值,你可以创建一系列分区,而无需预先计算任何绝对值。例如,如果在一块空白硬盘中,以下 sgdisk 命令序列将创建典型 Linux 安装所需的所有基本分区:

# sgdisk -n 0:0:+1MiB -t 0:ef02 -c 0:grub /dev/sda
# sgdisk -n 0:0:+1GiB -t 0:ea00 -c 0:boot /dev/sda
# sgdisk -n 0:0:+4GiB -t 0:8200 -c 0:swap /dev/sda
# sgdisk -n 0:0:0 -t 0:8300 -c 0:root /dev/sda

上面的例子展示了如何为基于 BIOS 的计算机分区硬盘。基于 UEFI 的计算机上不需要 grub 分区。由于 sgdisk 在上面的示例中为你计算了所有绝对值,因此你可以在基于 UEFI 的计算机上跳过第一个命令,并且可以无需修改即可运行其余命令。同样,你可以跳过创建交换分区,并且不需要修改其余命令。

还有使用一个命令删除硬盘上所有分区的快捷方式:

# sgdisk --zap-all /dev/sda

关于最新和详细信息,请查看手册页:

$ man sgdisk

via: https://fedoramagazine.org/managing-partitions-with-sgdisk/

作者:Gregory Bartholomew 选题:lujun9972 译者:geekpi 校对:wxy

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


Shell 脚本编程陷阱

$
0
0

Shell 脚本很棒,你可以非常轻松地写出有用的东西来。甚至像是下面这个傻瓜式的命令:

# 用含有 Go 的词汇起名字:
$ grep -i ^go /usr/share/dict/* | cut -d: -f2 | sort -R | head -n1
goldfish

如果用其他编程语言,就需要花费更多的脑力,用多行代码实现,比如用 Ruby 的话:

puts(Dir['/usr/share/dict/*-english'].map do |f|
  File.open(f)
    .readlines
    .select { |l| l[0..1].downcase == 'go' }
end.flatten.sample.chomp)

Ruby 版本的代码虽然不是那么长,也并不复杂。但是 shell 版是如此简单,我甚至不用实际测试就可以确保它是正确的。而 Ruby 版的我就没法确定它不会出错了,必须得测试一下。而且它要长一倍,看起来也更复杂。

这就是人们使用 Shell 脚本的原因,它简单却实用。下面是另一个例子:

curl https://nl.wikipedia.org/wiki/Lijst_van_Nederlandse_gemeenten |
    grep '^<li><a href=' |
    sed -r 's|<li><a href="/wiki/.+" title=".+">(.+)</a>.*</li>|\1|' |
    grep -Ev '(^Tabel van|^Lijst van|Nederland)'

这个脚本可以从维基百科上获取荷兰基层政权的列表。几年前我写了这个临时的脚本,用来快速生成一个数据库,到现在它仍然可以正常运行,当时写它并没有花费我多少精力。但要用 Ruby 完成同样的功能则会麻烦得多。


现在来说说 shell 的缺点吧。随着代码量的增加,你的脚本会变得越来越难以维护,但你也不会想用别的语言重写一遍,因为你已经在这个 shell 版上花费了很多时间。

我把这种情况称为“Shell 脚本编程陷阱”,这是沉没成本谬论的一种特例(LCTT 译注:“沉没成本谬论”是一个经济学概念,可以简单理解为,对已经投入的成本可能被浪费而念念不忘)。

实际上许多脚本会增长到超出预期的大小,你经常会花费过多的时间来“修复某个 bug”,或者“添加一个小功能”。如此循环往复,让人头大。

如果你从一开始就使用 Python、Ruby 或是其他类似的语言来写这个程序,你可能会在写第一版的时候多花些时间,但以后维护起来就容易很多,bug 也肯定会少很多。

以我的 packman.vim 脚本为例。它起初只包含一个简单的用来遍历所有目录的 for 循环,外加一个 git pull,但在这之后就刹不住车了,它现在有 200 行左右的代码,这肯定不能算是最复杂的脚本,但假如我一上来就按计划用 Go 来编写它的话,那么增加一些像“打印状态”或者“从配置文件里克隆新的 git 库”这样的功能就会轻松很多;添加“并行克隆”的支持也几乎不算个事儿了,而在 shell 脚本里却很难实现(尽管不是不可能)。事后看来,我本可以节省时间,并且获得更好的结果。

出于类似的原因,我很后悔写出了许多这样的 shell 脚本,而我在 2018 年的新年誓言就是不要再犯类似的错误了。

附录:问题汇总

需要指出的是,shell 编程的确存在一些实际的限制。下面是一些例子:

  • 在处理一些包含“空格”或者其他“特殊”字符的文件名时,需要特别注意细节。绝大多数脚本都会犯错,即使是那些经验丰富的作者(比如我)编写的脚本,因为太容易写错了,只添加引号是不够的
  • 有许多所谓“正确”和“错误”的做法。你应该用 which 还是 command?该用 $@ 还是 $*,是不是得加引号?你是该用 cmd $arg 还是 cmd "$arg"?等等等等。
  • 你没法在变量里存储空字节(0x00);shell 脚本处理二进制数据很麻烦。
  • 虽然你可以非常快速地写出有用的东西,但实现更复杂的算法则要痛苦许多,即使用 ksh/zsh/bash 扩展也是如此。我上面那个解析 HTML 的脚本临时用用是可以的,但你真的不会想在生产环境中使用这种脚本。
  • 很难写出跨平台的通用型 shell 脚本。/bin/sh 可能是 dash 或者 bash,不同的 shell 有不同的运行方式。外部工具如 grepsed 等,不一定能支持同样的参数。你能确定你的脚本可以适用于 Linux、macOS 和 Windows 的所有版本吗(无论是过去、现在还是将来)?
  • 调试 shell 脚本会很难,特别是你眼中的语法可能会很快变得记不清了,并不是所有人都熟悉 shell 编程的语境。
  • 处理错误会很棘手(检查 $? 或是 set -e),排查一些超过“出了个小错”级别的复杂错误几乎是不可能的。
  • 除非你使用了 set -u,变量未定义将不会报错,而这会导致一些“搞笑事件”,比如 rm -r ~/$undefined 会删除用户的整个家目录(瞅瞅 Github 上的这个悲剧)。
  • 所有东西都是字符串。一些 shell 引入了数组,能用,但是语法非常丑陋和费解。带分数的数字运算仍然难以应付,并且依赖像 bcdc 这样的外部工具($(( .. )) 这种方式只能对付一下整数)。

反馈

你可以发邮件到 martin@arp242.net,或者在 GitHub 上创建 issue 来向我反馈,提问等。


via: https://arp242.net/weblog/shell-scripting-trap.html

作者:Martin Tournoij 选题:lujun9972 译者:jdh8383 校对:wxy

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

增强边缘计算的安全性

$
0
0

边缘计算环境带来的安全风险迫使公司必须特别关注它的安全措施。

说数据安全是高管们和董事会最关注的问题已经是陈词滥调了。但问题是:数据安全问题不会自己消失。

骇客和攻击者一直在寻找利用缺陷的新方法。就像公司开始使用人工智能和机器学习等新兴技术来自动化地保护他们的组织一样,那些不良分子们也在使用这些技术来达成他们的目的。

简而言之,安全问题是一定不能忽视的。现在,随着越来越多的公司开始使用边缘计算,如何保护这些边缘计算环境,需要有新的安全考量。

边缘计算的风险更高

正如 Network World 的一篇文章所说,边缘计算的安全架构应该将重点放在物理安全上。这并不是说要忽视保护传输过程中的数据。而是说,实际的物理环境和物理设备更加值得关注。

例如,边缘计算的硬件设备通常位于较大的公司或者广阔空间中,有时候是在很容易进入的共享办公室和公共区域里。从表面上看,这节省了成本,能更快地访问到相关的数据,而不必在后端的数据中心和前端的设备之间往返。

但是,如果没有任何级别的访问控制,这台设备就会暴露在恶意操作和简单人为错误的双重风险之下。想象一下办公室的清洁工意外地关掉了设备,以及随之而来的停机所造成的后果。

另一个风险是 “影子边缘 IT”。有时候非 IT 人员会部署一个边缘设备来快速启动项目,却没有及时通知 IT 部门这个设备正在连接到网络。例如,零售商店可能会主动安装他们自己的数字标牌,或者,销售团队会将物联网传感器应用到电视中,并在销售演示中实时地部署它们。

在这种情况下,IT 部门很少甚至完全看不到这些边缘设备,这就使得网络可能暴露在外。

保护边缘计算环境

部署微型数据中心(MDC)是规避上述风险的一个简单方法。

“在历史上,大多数这些[边缘]环境都是不受控制的,”施耐德电气安全能源部门的首席技术官和创新高级副总裁 Kevin Brown 说。“它们可能是第 1 级,但很可能是第 0 级类型的设计 —— 它们就像开放的配线柜。它们现在需要像微型数据中心一样的对待。你管理它需要像管理关键任务数据中心一样”

单说听起来的感觉,这个解决方案是一个安全、独立的机箱,它包括在室内和室外运行程序所需的所有存储空间、处理性能和网络资源。它同样包含必要的电源、冷却、安全和管理工具。

而它最重要的是高级别的安全性。这个装置是封闭的,有上锁的门,可以防止非法入侵。通过合适的供应商,DMC 可以进行定制,包括用于远程数字化管理的监控摄像头、传感器和监控技术。

随着越来越多的公司开始利用边缘计算的优势,他们必须利用安全解决方案的优势来保护他们的数据和边缘环境。

在 APC.com 上了解保护你的边缘计算环境的最佳方案。


via: https://www.networkworld.com/article/3388130/enhanced-security-at-the-edge.html#tk.rss_all

作者:Anne Taylor 选题:lujun9972 译者:hopefully2333 校对:wxy

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

喜欢 Netflix 么?你应该感谢 FreeBSD

$
0
0

Netflix 是世界上最受欢迎的流媒体服务之一。对,你已经知道了。但你可能不知道的是 Netflix 使用 FreeBSD 向你提供内容。

是的。Netflix 依靠 FreeBSD 来构建其内部内容交付网络(CDN)。

CDN 是一组位于世界各地的服务器。它主要用于向终端用户分发像图像和视频这样的“大文件”。

Netflix 没有选择商业 CDN 服务,而是建立了自己的内部 CDN,名为 Open Connect

Open Connect 使用自定义硬件:Open Connect Appliance。你可以在下面的图片中看到它。它可以每秒处理 40Gb 的数据,存储容量为 248 TB。

Netflix’s Open Connect Appliance runs FreeBSD

Netflix 免费为合格的互联网服务提供商(ISP) 提供 Open Connect Appliance。通过这种方式,大量的 Netflix 流量得到了本地化,ISP 可以更高效地提供 Netflix 内容。

Open Connect Appliance 运行在 FreeBSD 操作系统上,并且几乎完全运行开源软件

Open Connect 使用最新版 FreeBSD

你或许会觉得 Netflix 会在这样一个关键基础设施上使用 FreeBSD 的稳定版本,但 Netflix 会跟踪 FreeBSD 最新/当前版本。Netflix 表示,跟踪“最新版”可以让他们“保持前瞻性,专注于创新”。

以下是 Netflix 跟踪最新版 FreeBSD 的好处:

  • 更快的功能迭代
  • 更快地使用 FreeBSD 的新功能
  • 更快的 bug 修复
  • 实现协作
  • 尽量减少合并冲突
  • 摊销合并“成本”

运行 FreeBSD “最新版” 可以让我们非常高效地向用户分发大量数据,同时保持高速的功能开发。

Netflix

请记得,甚至谷歌也使用 Debian 测试版而不是 Debian 稳定版。也许这些企业更喜欢最先进的功能。

与谷歌一样,Netflix 也计划向上游提供代码。这应该有助于 FreeBSD 和其他基于 FreeBSD 的 BSD 发行版。

那么 Netflix 用 FreeBSD 实现了什么?以下是一些统计数据:

使用 FreeBSD 和商业硬件,我们在 16 核 2.6 GHz CPU 上使用约 55% 的 CPU,实现了 90 Gb/s 的 TLS 加密连接。

Netflix

如果你想了解更多关于 Netflix 和 FreeBSD 的信息,可以参考 FOSDEM 的这个演示文稿。你还可以在这里观看演示文稿的视频。

目前,大型企业主要依靠 Linux 来实现其服务器基础架构,但 Netflix 已经信任了 BSD。这对 BSD 社区来说是一件好事,因为如果像 Netflix 这样的行业领导者重视 BSD,那么其他人也可以跟上。你怎么看?


via: https://itsfoss.com/netflix-freebsd-cdn/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

小白观察:已经 14 岁的 Scientific Linux 将停止开发

$
0
0

Big News

已经 14 岁的 Scientific Linux 将停止开发

Scientific Linux 是极少数专注于科学的GNU / Linux 发行版之一,是由费米实验室和其他的研究机构基于 Red Hat Enterprise Linux 开发的针对于科学实验场景下的 Linux 发行版本,主要收录了一些上游产品不会收录的软件包,比如 R 语言等。现在,差不多 14 年后,那些努力维护的人们决定是时候休息了,不再发布新版本的 Scientific Linux。【Softpedia】

Scientific Linux 在过去网络、资源不足的情况下,是一个好的解决方案,但如今各方面的资源都很充沛,我们可以有更好的方案来解决这个问题。

Quick News

QEMU 4.0.0 发布 几乎可以模拟任何硬件设备的模拟器

QEMU 是一个纯软件实现的通用模拟器和虚拟机,它有三种模式,几乎可以模拟任何硬件设备:

  • 完整系统模拟:可在任何支持的硬件架构上运行任何操作系统
  • 用户模式模拟:运行另一个 Linux/BSD 程序
  • 虚拟化:接近本机性能运行 KVM 和 Xen 虚拟机。

【cnbeta】

深度学习可以帮助我们解决自杀的问题

纽约大学的一项最新研究表明,借助自然语言处理技术,可以实现通过收听录音来分析退伍军人的创伤后应激障碍,从而解决退伍军人自杀的问题。【The Next Web】

MongoDB 收购了移动端数据库解决方案 Realm

Realm 是一个非常好用的移动端数据库解决方案,开发者可以使用 Realm 来替代 SQLite。 Realm 发布了文章说明了其被 MongoDB 收购的信息。【Realm Blog】

Facebook 的马克·扎克伯格启动了他自己的 Podcast

马克·扎克伯格启动了他自己的 Podcast:Tech & Society with Mark Zuckerberg。 在这个播客中,马克·扎克伯格会分享会他和一些其他的人士的一些讨论。【Engadget】

每日安全资讯:除华硕外至少还有 6 家公司受到“影锤”行动攻击

$
0
0

在深入调查后卡巴斯基表示,华硕并非是影锤ShadowHammer攻击行动的唯一受害者,至少还有6家其他组织被攻击者渗透。除了华硕之外,卡巴斯基表示还有来自泰国的游戏发行商 Electronics Extreme、网页&IT 基础服务公司 Innovative Extremist、韩国游戏公司 Zepetto,另外还有来自韩国的一家视频游戏开发商、一家综合控股公司和一家制药公司。 

影锤攻击行动在最初是在华硕的升级服务中发现的新型供应链攻击方式。华硕电脑一般都默认预装了华硕的 Live Update Utility 软件,用于更新华硕电脑专用的驱动、软件、BIOS 和补丁等,用户在使用该软件更新时可能会安装植入后门程序的软件更新包。黑客疑似入侵控制了华硕的更新服务,篡改使用合法证书签署的安装包,在官方给用户推送的升级软件包中加入了恶意代码。

来源:cnBeta.COM

更多资讯

GitHub 公开 Bilibili 寄来的 DMCA 删除通知

根据 GitHub 的透明政策,当一个代码库应版权所有者的要求移除,它会公开对方发来的 DMCA 删除通知。本周早些时候,匿名人士公布了Bilibili 网站后台工程源代码,Bilibili 迅速发出 DMCA 通知删除该代码库。现在,GitHub 公开了 Bilibili 寄来的 DMCA 删除通知。

这个通知引人注目之处在于它非常的不正式。Bilibili 是一个在美国上市的中国知名网站,但它的通知一点不像是一个正式的法律文件,它的开头是“Hello Dear Github:”,然后是“We Are:”,最后一句是“求求你们帮助我们吧,还加了三个感叹号(Please help us!!!)”,就像它的源代码一样,它的通知也在社交网络上引发了广泛热议。

来源: solidot.org

详情: http://t.cn/EajnbX6 

腾讯安全提醒:暴风影音等数千款 APP 遭恶意 SDK 嵌入

4 月 24 日消息,公众号“腾讯安全联合实验室”称,近日,腾讯安全反诈骗实验室追踪到一款恶意 SDK 子包,该恶意子包已“潜伏”在掌通家园、暴风影音、天天看、塔读文学等数千款移动应用中,潜在可能影响上千万用户。

来源: 快科技

详情: http://t.cn/EajnfU3 

这个黑客靠猜测私钥 成功窃取了 4.5 万个 ETH

4 月 23 日,分析机构 Independent Security Evaluators 发布的一份报告称,一名“区块链强盗”通过成功猜测安全性较弱的私钥,成功窃取了近 4.5 万个 ETH。

来源: 新浪财经综合

详情: http://t.cn/EajnJgS 

日媒:日本企业至少 268 万份客户信息可能外泄

中新网 4 月 24 日电,据日本共同社 24 日统计报道,由于遭受网络攻击,2018 年日本企业发生外泄或可能外泄的个人信息至少达到268万份。据悉,日本酒店和大学的信息外泄情况严重。

来源: 中国新闻网

详情: http://t.cn/EajnS0N 

(信息来源于网络,安华金和搜集整理)

如何识别 Linux 上的文件分身

$
0
0

Linux 系统上的一些文件可能出现在多个位置。按照本文指示查找并识别这些“同卵双胞胎”,还可以了解为什么硬链接会如此有利。

Archana Jarajapu \(CC BY 2.0\)

识别使用同一个磁盘空间的文件依赖于利用文件使用相同的 inode 这一事实。这种数据结构存储除了文件名和内容之外的所有信息。如果两个或多个文件具有不同的名称和文件系统位置,但共享一个 inode,则它们还共享内容、所有权、权限等。

这些文件通常被称为“硬链接”,不像符号链接(即软链接)那样仅仅通过包含它们的名称指向其他文件,符号链接很容易在文件列表中通过第一个位置的 l 和引用文件的 -> 符号识别出来。

$ ls -l my*
-rw-r--r-- 4 shs shs   228 Apr 12 19:37 myfile
lrwxrwxrwx 1 shs shs     6 Apr 15 11:18 myref -> myfile
-rw-r--r-- 4 shs shs   228 Apr 12 19:37 mytwin

在单个目录中的硬链接并不是很明显,但它仍然非常容易找到。如果使用 ls -i 命令列出文件并按 inode 编号排序,则可以非常容易地挑选出硬链接。在这种类型的 ls 输出中,第一列显示 inode 编号。

$ ls -i | sort -n | more
 ...
 788000 myfile  <==
 788000 mytwin  <==
 801865 Name_Labels.pdf
 786692 never leave home angry
 920242 NFCU_Docs
 800247 nmap-notes

扫描输出,查找相同的 inode 编号,任何匹配都会告诉你想知道的内容。

另一方面,如果你只是想知道某个特定文件是否是另一个文件的硬链接,那么有一种方法比浏览数百个文件的列表更简单,即 find 命令的 -samefile 选项将帮助你完成工作。

$ find . -samefile myfile
./myfile
./save/mycopy
./mytwin

注意,提供给 find 命令的起始位置决定文件系统会扫描多少来进行匹配。在上面的示例中,我们正在查看当前目录和子目录。

使用 find-ls 选项添加输出的详细信息可能更有说服力:

$ find . -samefile myfile -ls
 788000    4 -rw-r--r--   4 shs    shs      228 Apr 12 19:37 ./myfile
 788000    4 -rw-r--r--   4 shs    shs      228 Apr 12 19:37 ./save/mycopy
 788000    4 -rw-r--r--   4 shs    shs      228 Apr 12 19:37 ./mytwin

第一列显示 inode 编号,然后我们会看到文件权限、链接、所有者、文件大小、日期信息以及引用相同磁盘内容的文件的名称。注意,在这种情况下,链接字段是 “4” 而不是我们可能期望的 “3”。这告诉我们还有另一个指向同一个 inode 的链接(但不在我们的搜索范围内)。

如果你想在一个目录中查找所有硬链接的实例,可以尝试以下的脚本来创建列表并为你查找副本:

#!/bin/bash

# seaches for files sharing inodes

prev=""

# list files by inode
ls -i | sort -n > /tmp/$0

# search through file for duplicate inode #s
while read line
do
    inode=`echo $line | awk '{print $1}'`
    if [ "$inode" == "$prev" ]; then
        grep $inode /tmp/$0
    fi
    prev=$inode
done < /tmp/$0

# clean up
rm /tmp/$0
$ ./findHardLinks
 788000 myfile
 788000 mytwin

你还可以使用 find 命令按 inode 编号查找文件,如命令中所示。但是,此搜索可能涉及多个文件系统,因此可能会得到错误的结果。因为相同的 inode 编号可能会在另一个文件系统中使用,代表另一个文件。如果是这种情况,文件的其他详细信息将不相同。

$ find / -inum 788000 -ls 2> /dev/null
 788000   4 -rw-r--r--   4 shs   shs    228 Apr 12 19:37 /tmp/mycopy
 788000   4 -rw-r--r--   4 shs   shs    228 Apr 12 19:37 /home/shs/myfile
 788000   4 -rw-r--r--   4 shs   shs    228 Apr 12 19:37 /home/shs/save/mycopy
 788000   4 -rw-r--r--   4 shs   shs    228 Apr 12 19:37 /home/shs/mytwin

注意,错误输出被重定向到 /dev/null,这样我们就不必查看所有 &ldquoermission denied” 错误,否则这些错误将显示在我们不允许查看的其他目录中。

此外,扫描包含相同内容但不共享 inode 的文件(即,简单的文本拷贝)将花费更多的时间和精力。


via: https://www.networkworld.com/article/3387961/how-to-identify-duplicate-files-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:MjSeven 校对:wxy

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

初级:如何在 Linux 中 zip 压缩文件和文件夹

$
0
0

本文向你展示了如何在 Ubuntu 和其他 Linux 发行版中创建一个 zip 文件夹。终端和 GUI 方法都有。

zip 是最流行的归档文件格式之一。使用 zip,你可以将多个文件压缩到一个文件中。这不仅节省了磁盘空间,还节省了网络带宽。这就是为什么你几乎一直会看到 zip 文件的原因。

作为普通用户,大多数情况下你会在 Linux 中解压缩文件夹。但是如何在 Linux 中压缩文件夹?本文可以帮助你回答这个问题。

先决条件:验证是否安装了 zip

通常 zip 已经安装,但验证下也没坏处。你可以运行以下命令来安装 zipunzip。如果它尚未安装,它将立即安装。

sudo apt install zip unzip

现在你知道你的系统有 zip 支持,你可以继续了解如何在 Linux 中压缩一个目录。

在 Linux 命令行中压缩文件夹

zip 命令的语法非常简单。

zip [option] output_file_name input1 input2

虽然有几个选项,但我不希望你将它们混淆。如果你只想要将一堆文件变成一个 zip 文件夹,请使用如下命令:

zip -r output_file.zip file1 folder1

-r 选项将递归目录并压缩其内容。输出文件中的 .zip 扩展名是可选的,因为默认情况下会添加 .zip。

你应该会在 zip 操作期间看到要添加到压缩文件夹中的文件。

zip -r myzip abhi-1.txt abhi-2.txt sample_directory
  adding: abhi-1.txt (stored 0%)
  adding: abhi-2.txt (stored 0%)
  adding: sample_directory/ (stored 0%)
  adding: sample_directory/newfile.txt (stored 0%)
  adding: sample_directory/agatha.txt (deflated 41%)

你可以使用 -e 选项在 Linux 中创建密码保护的 zip 文件夹

你并不是只能通过终端创建 zip 归档文件。你也可以用图形方式做到这一点。下面是如何做的!

在 Ubuntu Linux 中使用 GUI 压缩文件夹

虽然我在这里使用 Ubuntu,但在使用 GNOME 或其他桌面环境的其他发行版中,方法应该基本相同。

如果要在 Linux 桌面中压缩文件或文件夹,只需点击几下即可。

进入到你想将文件(和文件夹)压缩到一个 zip 文件夹的所在文件夹。

在这里,选择文件和文件夹。现在,右键单击并选择“压缩”。你也可以对单个文件执行相同操作。

Select the files, right click and click compress

现在,你可以使用 zip、tar xz 或 7z 格式创建压缩归档文件。如果你好奇,这三个都是各种压缩算法,你可以使用它们来压缩文件。

输入一个你想要的名字,并点击“创建”。

Create archive file

这不会花很长时间,你会同一目录中看到一个归档文件。

好了,就是这些。你已经成功地在 Linux 中创建了一个 zip 文件夹。

我希望这篇文章能帮助你了解 zip 文件。请随时分享你的建议。


via: https://itsfoss.com/linux-zip-folder/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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


中国首个个人主导的 Apache 孵化项目 SkyWalking 成功毕业

$
0
0

2019 年 4 月 24 日(北美时间),Apache 软件基金会宣布,Apache SkyWalking 毕业,成为 Apache 软件基金会顶级项目。

Apache SkyWalking 是一款应用性能监控(APM)工具,对微服务、云原生和容器化应用提供自动化、高性能的监控方案。项目于 2015 年创建,并于 2017 年 12 月进入 Apache 孵化器。

“今天对于 SkyWalking 项目和 SkyWalking 社区是意义非凡的一天。我们要特别感谢 SkyWalking 的 Apache 孵化器导师,项目贡献者和 Apache 孵化器帮助我们成为顶级项目”,Apache SkyWalking 项目 VP 吴晟说,” SkyWalking 最初只是为了帮助新人理解分布式追踪,但随着项目社区的变大和变强,我们成功的加入 Apache 孵化器。通过遵循 Apache 的社区建立模式,现在我们有一个非常活跃并多元化的社区。有超过 70 家公司公开宣布在使用 SkyWalking,项目有来自于数十家公司的超过 100 位的源码贡献者。”

前此已有 7 个源自中国的顶级项目列队欢迎新伙伴,堪称八仙过海(Apache CarbonDataEagleGriffinHAWQKylinRocketMQServiceComb ),后面目前还有 6 个源自中国的孵化项目正在努力化蛹为蝶(Apache brpcDorisDubboEChartsSharding-SphereWeex )。

值得特别关注的是,Apache SkyWalking 和其它由企业主导的开源项目不同,它是由吴晟创始并吸引许多个人及企业贡献者参与形成的项目社区。这为本土开源项目及社区的发展提供了一种崭新的可能性与成功典范。

Apache SkyWalking 提供了分布式追踪,服务网格Service Mesh遥感数据分析,指标聚合和可视化等多种能力。项目覆盖范围,从一个单纯的分布式追踪系统,扩展为一个可观测性分析平台observability analysis platform和应用性能监控管理系统。

它包括以下主要功能:

  • 基于分布式追踪的 APM 系统,满足 100% 分布式追踪和数据采集,同时对被监控系统造成极小的压力
  • 云原生友好,支持通过以 Istio 和 Envoy 为核心的服务网格来观测和监控分布式系统
  • 多语言自动探针,包括 Java、.NET、NodeJS
  • 运维简单,不需要使用大数据平台即可监控大型分布式系统
  • 包含展示 Trace、指标和拓扑图在内的可视化界面

Apache SkyWalking 的公开案例已经包含几十家公司,包括:华为、阿里巴巴、腾讯微众银行、东方航空、招商银行、汽车之家、科大讯飞、贝壳、我爱我家、途虎养车、普元、国金证券、Daocloud、当当网、瓜子二手车、永辉超市、有赞、tetrate.io、tuya.com。

为一个已有系统建立分布式追踪解决方案时,探针代码植入毫无疑问是最耗时的工作。我曾有机会早期参与 SkyWalking 的编码,在那时,我就看到了 SkyWalking 的解决方案的价值。当我知道他们在寻找 Apache 孵化器导师时,我对项目会加入 Apache 感到非常激动,以及我非常的吃惊 SkyWalking 社区的成熟程度。在加入孵化器之前,它已经是一个非常类似 Apache 模式的社区。如同当年的 Apache Kylin 一样,SkyWalking 不仅仅是 Apache 孵化器过程的模范项目,它更是成为了 Apache Way 的在中国的推广大使,很好的诠释了如何通过 Apache Way 来构建强大的开源项目。祝贺 SkyWalking 毕业成为 Apache 顶级项目。

—Mick Semb Wever,Apache 基金会成员,SkyWalking 孵化器导师

SkyWalking 是在开源分布式追踪项目中,唯一把可用性和用户体验最为关注核心的项目,而这些被大多数开源项目所忽略,使得分布式追踪和 APM 更易用并更好运维是项目的核心目标,同时也是 Apache SkyWalking 值得时刻关注的重要原因。

—Jonah Kowal,Kentik CTO,前 Gartner VP Research

无论在中国和全球,Apache SkyWalking 在传播现代云原生可观察性技术上做了很多的工作。我们很高兴的看到 Apache SkyWalking 毕业成为顶级项目,希望看到项目社区的持续增长,以及包括 Kubernetes , Envoy , Jaeger 在内的 CNCF 项目的更多合作。

—Chris Aniczszyk , CNCF 基金会 CTO 和 COO

我经常听用户提到,可观察性是他们从服务网格 Service Mesh 中获得最重要特性。通过 Apache SkyWalking 与 Istio 的集成,SkyWalking 将自己的领域从语言探针扩展到 Service Mesh,帮助用户理解自己系统的行为。两个项目的集成已经非常成功,我期待用户使用 Apache SkyWalking 和 Istio,管理和监控自己的部署环境。

—Zack Butcher,Istio 核心贡献者

微众银行是中国首家私人银行,由腾讯发起创立。公司使用了分布式和基于开源的系统架构。我们开发了基于 RocketMQ 的 WeMQ 消息总线,并在大量的场景中,使用基于消息的实现模式,如消息交换,发布订阅,请求响应模式,并和其它消息服务相兼容。消息模式成为了业务实现中的核心技术。然后,随着多种的消息服务的使用,我们意识到,我们需要一种覆盖全局的可视化追踪系统,并对分布式消息系统有良好的支撑,来帮助我们针对系统性能。我们相信 SkyWalking 能够胜任这项挑战。

—Eason Chen,微众银行技术专家,Apache RocketMQ 贡献者,OpenMessaging TSC 成员

我很高兴的看到 SkyWalking 晋升为 Apache 顶级项目。Apache SkyWalking 被集成在中国东方航空微服务支撑平台中,SkyWalking 提供了大量使用特性,以及包括拓扑和 trace 展现在内的可视化能力,帮助我们理解分布式系统。我希望开源社区能够为 Apache SkyWalking 贡献更多的插件,并增强在多语言下的能力。

—毛烈,东方航空,架构师

我在2017年开始关注 SkyWalking,在过去的两年中,它成长的非常快,社区也非常活跃。这个项目被大量的公司采用,并吸引了很多的开源开发者。Apache SkyWalking 使应用性能监控更简单和更方便。我相信它将因为他的多元化社区,变得更加强大。祝福它。

—司冬雪,云智慧,高级研发工程师

作为 SkyWalking 的早期用户,早在当当网时,我们就使用了 SkyWalking 。那时 SkyWalking 还没有进入 Apache 孵化器,我非常高兴看到它一步一步的完善功能和社区,并最终成为 Apache 的顶级项目。十分值得同为 Apache 孵化项目的 ShardingSphere 学习。希望未来在数据库领域的可观察性方面进一步合作,一起打造更好的开源生态。

—张亮,京东架构师,Apache ShardingSphere(Incubating) PPMC 成员,前当当网架构师

恭喜 SkyWalking 晋级为 Apache 顶级项目!基于 SkyWalking 优雅的设计和良好的性能,完美解决了我们链路跟踪和监控的问题。感谢开源社区为我们带来这么棒的产品,愿这个项目越来越好。

—周宇淇,国金证券佣金宝,中间件开发负责人

在帮助企业客户从传统应用架构向微服务架构转型的过程中,微服务治理平台其中很重要一环是可观察性,能够获取微服务、中间件等组件之间以及微服务内部的调用关系,并以此为基础生成统计数据,包括微服务对外提供服务的 SLA 等。我们调研了很多类似的开源技术,最终选择了 SkyWalking 作为 DaoCloud 微服务治理平台的核心组件,原因是它的开放性,可扩展性,性能,代码质量,活跃的社区以及和 Istio 的前瞻性集成。

—王天青,DaoCloud 首席架构师

祝贺 SkyWalking 毕业成为 Apache 顶级项目,它使我们能够管理和观察大规模分布式系统,并帮助我们改进微服务设计。

—徐年刚,永辉云计算联合创始人

“SkyWalking 正在努力成为一个全球范围的顶级开源项目”,Apache SkyWalking 项目 VP,吴晟补充道,”我们欢迎大家通过邮件列表,GitHub,Slack channel 参与,通过各大会议、项目官网和官方文档,了解项目。”

Apache SkyWalking 近期活动包括:

  • 5月11日 SkyWalking DevCon
  • 6月21日-23日 GIAC 中国深圳 
  • 6月25日-26日 KubeCon & CloudNativeCon 中国上海  
  • 9月9日-13日 ApacheCon 北美
  • 10月18日-19日 DevOps Stage 乌克兰基辅

可用性和监督

Apache SkyWalking 软件是在 Apache License v2.0 下发布的,由活跃的贡献者自主选择并组建的团队监督。项目管理委员会(PMC)负责指导项目的日常运营,包括社区发展和产品发布。有关下载,文档以及参与 Apache SkyWalking 的方法请访问:

Mercurial 版本控制入门

$
0
0

了解 Mercurial 的基础知识,它是一个用 Python 写的分布式版本控制系统。

Mercurial 是一个用 Python 编写的分布式版本控制系统。因为它是用高级语言编写的,所以你可以用 Python 函数编写一个 Mercurial 扩展。

官方文档中说明了几种安装 Mercurial 的方法。我最喜欢的一种方法不在里面:使用 pip。这是开发本地扩展的最合适方式!

目前,Mercurial 仅支持 Python 2.7,因此你需要创建一个 Python 2.7 虚拟环境:

python2 -m virtualenv mercurial-env
./mercurial-env/bin/pip install mercurial

为了让命令简短一些,以及满足人们对化学幽默的渴望,该命令称之为 hg

$ source mercurial-env/bin/activate
(mercurial-env)$ mkdir test-dir
(mercurial-env)$ cd test-dir
(mercurial-env)$ hg init
(mercurial-env)$ hg status
(mercurial-env)$

由于还没有任何文件,因此状态为空。添加几个文件:

(mercurial-env)$ echo 1 > one
(mercurial-env)$ echo 2 > two
(mercurial-env)$ hg status
? one
? two
(mercurial-env)$ hg addremove
adding one
adding two
(mercurial-env)$ hg commit -m 'Adding stuff'
(mercurial-env)$ hg log
changeset: 0:1f1befb5d1e9
tag: tip
user: Moshe Zadka <[moshez@zadka.club][4]>
date: Fri Mar 29 12:42:43 2019 -0700
summary: Adding stuff

addremove 命令很有用:它将任何未被忽略的新文件添加到托管文件列表中,并移除任何已删除的文件。

如我所说,Mercurial 扩展用 Python 写成,它们只是常规的 Python 模块。

这是一个简短的 Mercurial 扩展示例:

from mercurial import registrar
from mercurial.i18n import _

cmdtable = {}
command = registrar.command(cmdtable)

@command('say-hello',
[('w', 'whom', '', _('Whom to greet'))])
def say_hello(ui, repo, `opts):
ui.write("hello ", opts['whom'], "\n")

简单的测试方法是将它手动加入虚拟环境中的文件中:

`$ vi ../mercurial-env/lib/python2.7/site-packages/hello_ext.py`

然后你需要启用扩展。你可以仅在当前仓库中启用它:

$ cat >> .hg/hgrc
[extensions]
hello_ext =

现在,问候有了:

(mercurial-env)$ hg say-hello --whom world
hello world

大多数扩展会做更多有用的东西,甚至可能与 Mercurial 有关。 repo 对象是 mercurial.hg.repository 的对象。

有关 Mercurial API 的更多信息,请参阅官方文档。并访问官方仓库获取更多示例和灵感。


via: https://opensource.com/article/19/4/getting-started-mercurial

作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy

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

每日安全资讯:黑客掌控数万个 GPS 应用账号,甚至可远程关闭汽车引擎

$
0
0

援引外媒 Motherboard 报道,一名黑客成功入侵了两款 GPS 定位追踪应用,从而允许让他监控数万辆汽车的位置,甚至能够关闭部分汽车的引擎。这名叫做 L&M 的黑客成功入侵了 7000 多个 iTrack 账号以及超过 20,000 个 ProTrack 账户,这两款应用被用于监控和管理车队的。该黑客可以跟踪南非,摩洛哥,印度和菲律宾等少数国家的车辆。

根据部分 GPS 定位追踪设备厂商的设定,如果车辆停靠或者车速低于每小时 12 英里就可以进行远程关闭汽车引擎,而黑客在成功入侵之后可以操控擅自关闭这些汽车引擎。通过对 ProTrack 和 iTrack 的 Android 应用程序进行逆向工程,L&M 表示所有客户在注册时都会获得默认密码 123456。

随后他使用应用的 API 强行调取了数百万用户名称,然后使用定制的脚本使用这些用户名和默认秘密进行登陆。这允许他控制了数万个使用默认密码的账号,并提取了相关信息。

根据 L&M 提交给 Motherboard 的用户数据样本来看,黑客从 ProTrack 和 iTrack 客户那里搜集了大量信息,包括他们所使用的 GPS 跟踪设备的名称、型号、设备的唯一 ID 号(技术上称为 IMEI 号码)、用户名、真实姓名、电话号码、电子邮件地址和物理地址。

L&M 表示他的攻击目标是公司,而不是客户。正是这些公司的疏忽导致客户存在安全风险,它们只是想要牟利,而并不想要保护他们的客户。L&M 表示:“我绝对可以在全球范围内造成大规模的交通事故。我已经控制了上万辆汽车,只要我点击我就可以关闭他们的汽车引擎。”但是 L&M 表示从未关闭过汽车引擎,因为他认为这样太危险了。

虽然黑客没有证明他能够关闭汽车引擎,但是 Concox(ProTrack GPS 和 iTrack 的 GPS 设备制造商之一)的发言人向Motherboard 确认如果车辆低于每小时 20 公里(大约每小时12英里),可以远程关闭汽车引擎。根据黑客提供的截图,这些应用程序具有“停止引擎”的功能。

来源:cnBeta.COM

更多资讯

安全漏洞允许攻击者从高通芯片窃取私钥

高通芯片组被广泛用于智能手机和平板,但这些芯片组的一个安全漏洞将允许攻击者从被称为 Qualcomm Secure Execution Environment(QSEE)的芯片安全域窃取私钥和加密密钥。

来源: solidot.org

详情: http://t.cn/Ea3nsCb 

Mac 恶意软件威胁在 2019 年一季度上涨超 60%,广告软件涨幅更甚

根据 Malwarebytes 新发布的报告,针对 Mac 用户的恶意软件威胁,已经在短短 3 个月内出现了大幅增长。与 2018 年四季度相比,今年一季度检出的恶意软件威胁增加了 60% 以上。与此同时,广告软件的涨幅,更是飙过了 200% 。

Malwarebytes 在新一季的《网络犯罪策略与技术报告》中指出,针对消费者的威胁数量在下降,基于恶意软件的加密和勒索软件的数量也在上一季显著减少,整体恶意软件的检出量也下降。

来源: cnBeta.COM
详情: http://t.cn/Ea3mPzY 

FTC 将可能针对隐私丑闻对 Facebook 开出高达 50 亿美元罚单

据外媒报道,在过去一年多的时间里 Facebook 一直在处理公司与隐私相关的丑闻,而这给这家社交网络公司造成了严重的经济损失。当地时间周三,Facebook 公布了 2019 年第一季度业绩报告。报告中,这家公司披露,美国联邦贸易委员会(FTC)将可能会被处以数十亿美元的罚款。

来源: cnBeta.COM

详情: http://t.cn/Ea3mzSr 

(信息来源于网络,安华金和搜集整理)

小白观察:微软正在考虑放弃其 Windows 密码过期策略

$
0
0

Quick News

微软正在考虑放弃其 Windows 密码过期策略 

微软考虑在 Windows 废除要求用户定期更改其登录密码的策略,以让用户养成使用更加鲁棒的密码。微软表示,现有的密码更改政策是“非常低价值的古老而过时的缓解”,该公司不“觉得它有用”。

定期密码到期只是针对密码(或散列)在其有效时间内被盗并且被未经授权使用的概率而制定的策略。如果密码永远不会被盗,则无需使密码过期。如果你有证据证明密码被盗,你应该立即采取行动,而不是等待到期以解决问题。【TechCrunch】

Godaddy 关闭了超过了 15000 个 Spam 子域名

Godaddy 和 安全公司 Palo Alto Networks 联合,处理了超过 15000 个子域名,这些子域名过去被用于虚假营销。【Wired】

微软将比我们想象的更快在 macOS 上发布基于 Chrome 内核的 Edge

根据德国媒体 Windows United 报道,在 Windows 2016 上访问新的 Edge 浏览器的官网时,会提醒暂时不支持该系统,并提示目前仅支持 Windows 和 macOS ,由此推断出微软应该很快放出 macOS 下基于 Chrome 内核的 Edge 浏览器。【Windows United】

AWS 进入香港云计算市场

亚马逊在本周四开放了新的 Region —— 香港 ,从今天开始,用户可以使用 AWS 的香港服务。【ZDNet】

除了阿里云的香港、腾讯云的香港,目前我们在香港云服务器上有了新的选择。对于国内开发者来说,是一大利好。

Sensu 监控入门

$
0
0

这个开源解决方案可以简单而有效地监控你的云基础设施。

Sensu 是一个开源的基础设施和应用程序监控解决方案,它可以监控服务器、相关服务和应用程序健康状况,并通过第三方集成发送警报和通知。Sensu 用 Ruby 编写,可以使用 RabbitMQRedis 来处理消息,它使用 Redis 来存储数据。

如果你想以一种简单而有效的方式监控云基础设施,Sensu 是一个不错的选择。它可以与你的组织已经使用的许多现代 DevOps 组件集成,比如 SlackHipChatIRC,它甚至可以用 PagerDuty 发送移动或寻呼机的警报。

Sensu 的模块化架构意味着每个组件都可以安装在同一台服务器上或者在完全独立的机器上。

结构

Sensu 的主要通信机制是 Transport。每个 Sensu 组件必须连接到 Transport 才能相互发送消息。Transport 可以使用 RabbitMQ(在生产环境中推荐使用)或 Redis。

Sensu 服务器处理事件数据并采取行动。它注册客户端并使用过滤器、增变器和处理程序检查结果和监视事件。服务器向客户端发布检查说明,Sensu API 提供 RESTful API,提供对监控数据和核心功能的访问。

Sensu 客户端执行 Sensu 服务器安排的检查或本地检查定义。Sensu 使用数据存储(Redis)来保存所有的持久数据。最后,Uchiwa 是与 Sensu API 进行通信的 Web 界面。

安装 Sensu

条件

  • 一个 Linux 系统作为服务器节点(本文使用了 CentOS 7)
  • 要监控的一台或多台 Linux 机器(客户机)

服务器侧

Sensu 需要安装 Redis。要安装 Redis,启用 EPEL 仓库:

$ sudo yum install epel-release -y

然后安装 Redis:

$ sudo yum install redis -y

修改 /etc/redis.conf 来禁用保护模式,监听每个地址并设置密码:

$ sudo sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf
$ sudo sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
$ sudo sed -i 's/^# requirepass foobared/requirepass password123/g' /etc/redis.conf

启用并启动 Redis 服务:

$ sudo systemctl enable redis
$ sudo systemctl start redis

Redis 现在已经安装并准备好被 Sensu 使用。

现在让我们来安装 Sensu。

首先,配置 Sensu 仓库并安装软件包:

$ sudo tee /etc/yum.repos.d/sensu.repo << EOF
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF

$ sudo yum install sensu uchiwa -y

让我们为 Sensu 创建最简单的配置文件:

$ sudo tee /etc/sensu/conf.d/api.json << EOF
{
  "api": {
        "host": "127.0.0.1",
        "port": 4567
  }
}
EOF

然后,配置 sensu-api 在本地主机上使用端口 4567 监听:

$ sudo tee /etc/sensu/conf.d/redis.json << EOF
{
  "redis": {
        "host": "<IP of server>",
        "port": 6379,
        "password": "password123"
  }
}
EOF


$ sudo tee /etc/sensu/conf.d/transport.json << EOF
{
  "transport": {
        "name": "redis"
  }
}
EOF

在这两个文件中,我们将 Sensu 配置为使用 Redis 作为传输机制,还有 Reids 监听的地址。客户端需要直接连接到传输机制。每台客户机都需要这两个文件。

$ sudo tee /etc/sensu/uchiwa.json << EOF
{
   "sensu": [
        {
        "name": "sensu",
        "host": "127.0.0.1",
        "port": 4567
        }
   ],
   "uchiwa": {
        "host": "0.0.0.0",
        "port": 3000
   }
}
EOF

在这个文件中,我们配置 Uchiwa 监听每个地址(0.0.0.0)的端口 3000。我们还配置 Uchiwa 使用 sensu-api(已配置好)。

出于安全原因,更改刚刚创建的配置文件的所有者:

$ sudo chown -R sensu:sensu /etc/sensu

启用并启动 Sensu 服务:

$ sudo systemctl enable sensu-server sensu-api sensu-client
$ sudo systemctl start sensu-server sensu-api sensu-client
$ sudo systemctl enable uchiwa
$ sudo systemctl start uchiwa

尝试访问 Uchiwa 网站:http://<服务器的 IP 地址>:3000

对于生产环境,建议运行 RabbitMQ 集群作为 Transport 而不是 Redis(虽然 Redis 集群也可以用于生产环境),运行多个 Sensu 服务器实例和 API 实例,以实现负载均衡和高可用性。

Sensu 现在安装完成,让我们来配置客户端。

客户端侧

要添加一个新客户端,你需要通过创建 /etc/yum.repos.d/sensu.repo 文件在客户机上启用 Sensu 仓库。

$ sudo tee /etc/yum.repos.d/sensu.repo << EOF
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
gpgcheck=0
enabled=1
EOF

启用仓库后,安装 Sensu:

$ sudo yum install sensu -y

要配置 sensu-client,创建在服务器中相同的 redis.jsontransport.json,还有 client.json 配置文件:

$ sudo tee /etc/sensu/conf.d/client.json << EOF
{
  "client": {
        "name": "rhel-client",
        "environment": "development",
        "subscriptions": [
        "frontend"
        ]
  }
}
EOF

name 字段中,指定一个名称来标识此客户机(通常是主机名)。environment 字段可以帮助你过滤,而 subscriptions 定义了客户机将执行哪些监视检查。

最后,启用并启动服务并签入 Uchiwa,因为客户机会自动注册:

$ sudo systemctl enable sensu-client
$ sudo systemctl start sensu-client

Sensu 检查

Sensu 检查有两个组件:一个插件和一个定义。

Sensu 与 Nagios 检查插件规范兼容,因此无需修改即可使用用于 Nagios 的任何检查。检查是可执行文件,由 Sensu 客户机运行。

检查定义可以让 Sensu 知道如何、在哪以及何时运行插件。

客户端侧

让我们在客户机上安装一个检查插件。请记住,此插件将在客户机上执行。

启用 EPEL 并安装 nagios-plugins-http

$ sudo yum install -y epel-release
$ sudo yum install -y nagios-plugins-http

现在让我们通过手动执行它来了解这个插件。尝试检查客户机上运行的 Web 服务器的状态。它应该会失败,因为我们并没有运行 Web 服务器:

$ /usr/lib64/nagios/plugins/check_http -I 127.0.0.1
connect to address 127.0.0.1 and port 80: Connection refused
HTTP CRITICAL - Unable to open TCP socket

不出所料,它失败了。检查执行的返回值:

$ echo $?
2

Nagios 检查插件规范定义了插件执行的四个返回值:

插件返回码 状态
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN

有了这些信息,我们现在可以在服务器上创建检查定义。

服务器侧

在服务器机器上,创建 /etc/sensu/conf.d/check_http.json 文件:

{
  "checks": {
    "check_http": {
      "command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1",
      "interval": 10,
      "subscribers": [
        "frontend"
      ]
    }
  }
}

command 字段中,使用我们之前测试过的命令。interval 会告诉 Sensu 这个检查的频率,以秒为单位。最后,subscribers 将定义执行检查的客户机。

重新启动 sensu-apisensu-server 并确认新检查在 Uchiwa 中可用。

$ sudo systemctl restart sensu-api sensu-server

接下来

Sensu 是一个功能强大的工具,本文只简要介绍它可以干什么。参阅文档了解更多信息,访问 Sensu 网站了解有关 Sensu 社区的更多信息。


via: https://opensource.com/article/18/8/getting-started-sensu-monitoring-solution

作者:Michael Zamot 选题:lujun9972 译者:MjSeven 校对:wxy

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

Viewing all 9060 articles
Browse latest View live