mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-02-06 23:50:16 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
30a3454ea8
@ -0,0 +1,296 @@
|
||||
|
||||
如何在 Linux 系统中防止文件和目录被意外的删除或修改
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2017/02/Prevent-Files-And-Folders-From-Accidental-Deletion-Or-Modification-In-Linux-720x340.jpg)
|
||||
|
||||
有时,我会不小心的按下 `SHIFT+DELETE`来删除我的文件数据。是的,我是个笨蛋,没有再次确认下我实际准备要删除的东西。而且我太笨或者说太懒,没有备份我的文件数据。结果呢?数据丢失了!在一瞬间就丢失了。
|
||||
|
||||
这种事时不时就会发生在我身上。如果你和我一样,有个好消息告诉你。有个简单又有用的命令行工具叫`chattr`(**Ch**ange **Attr**ibute 的缩写),在类 Unix 等发行版中,能够用来防止文件和目录被意外的删除或修改。
|
||||
|
||||
通过给文件或目录添加或删除某些属性,来保证用户不能删除或修改这些文件和目录,不管是有意的还是无意的,甚至 root 用户也不行。听起来很有用,是不是?
|
||||
|
||||
在这篇简短的教程中,我们一起来看看怎么在实际应用中使用 `chattr` 命令,来防止文件和目录被意外删除。
|
||||
|
||||
### Linux中防止文件和目录被意外删除和修改
|
||||
|
||||
默认,`chattr` 命令在大多数现代 Linux 操作系统中是可用的。
|
||||
|
||||
默认语法是:
|
||||
|
||||
```
|
||||
chattr [operator] [switch] [file]
|
||||
```
|
||||
|
||||
`chattr` 具有如下操作符:
|
||||
|
||||
* 操作符 `+`,追加指定属性到文件已存在属性中
|
||||
* 操作符 `-`,删除指定属性
|
||||
* 操作符 `=`,直接设置文件属性为指定属性
|
||||
|
||||
`chattr` 提供不同的属性,也就是 `aAcCdDeijsStTu`。每个字符代表一个特定文件属性。
|
||||
|
||||
* `a` – 只能向文件中添加数据
|
||||
* `A` – 不更新文件或目录的最后访问时间
|
||||
* `c` – 将文件或目录压缩后存放
|
||||
* `C` – 不适用写入时复制机制(CoW)
|
||||
* `d` – 设定文件不能成为 `dump` 程序的备份目标
|
||||
* `D` – 同步目录更新
|
||||
* `e` – extend 格式存储
|
||||
* `i` – 文件或目录不可改变
|
||||
* `j` – 设定此参数使得当通过 `mount` 参数:`data=ordered` 或者 `data=writeback` 挂载的文件系统,文件在写入时会先被记录在日志中
|
||||
* `P` – project 层次结构
|
||||
* `s` – 安全删除文件或目录
|
||||
* `S` – 即时更新文件或目录
|
||||
* `t` – 不进行尾部合并
|
||||
* `T` – 顶层目录层次结构
|
||||
* `u` – 不可删除
|
||||
|
||||
在本教程中,我们将讨论两个属性的使用,即 `a`、`i` ,这个两个属性可以用于防止文件和目录的被删除。这是我们今天的主题,对吧?来开始吧!
|
||||
|
||||
### 防止文件被意外删除和修改
|
||||
|
||||
我先在我的当前目录创建一个`file.txt`文件。
|
||||
|
||||
```
|
||||
$ touch file.txt
|
||||
```
|
||||
|
||||
现在,我将给文件应用 `i` 属性,让文件不可改变。就是说你不能删除或修改这个文件,就算你是文件的拥有者和 root 用户也不行。
|
||||
|
||||
```
|
||||
$ sudo chattr +i file.txt
|
||||
```
|
||||
|
||||
使用`lsattr`命令检查文件已有属性:
|
||||
|
||||
```
|
||||
$ lsattr file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
----i---------e---- file.txt
|
||||
```
|
||||
|
||||
现在,试着用普通用户去删除文件:
|
||||
|
||||
```
|
||||
$ rm file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 不能删除文件,非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
我来试试 `sudo` 特权:
|
||||
|
||||
```
|
||||
$ sudo rm file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 不能删除文件,非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
我们试试追加写内容到这个文本文件:
|
||||
|
||||
```
|
||||
$ echo 'Hello World!' >> file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 非法操作
|
||||
bash: file.txt: Operation not permitted
|
||||
```
|
||||
|
||||
试试 `sudo` 特权:
|
||||
|
||||
```
|
||||
$ sudo echo 'Hello World!' >> file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 非法操作
|
||||
bash: file.txt: Operation not permitted
|
||||
```
|
||||
|
||||
你应该注意到了,我们不能删除或修改这个文件,甚至 root 用户或者文件所有者也不行。
|
||||
|
||||
要撤销属性,使用 `-i` 即可。
|
||||
|
||||
```
|
||||
$ sudo chattr -i file.txt
|
||||
```
|
||||
|
||||
现在,这不可改变属性已经被删除掉了。你现在可以删除或修改这个文件了。
|
||||
|
||||
```
|
||||
$ rm file.txt
|
||||
```
|
||||
|
||||
类似的,你能够限制目录被意外删除或修改,如下一节所述。
|
||||
|
||||
### 防止目录被意外删除和修改
|
||||
|
||||
创建一个 `dir1` 目录,放入文件 `file.txt`。
|
||||
|
||||
```
|
||||
$ mkdir dir1 && touch dir1/file.txt
|
||||
```
|
||||
|
||||
现在,让目录及其内容(`file.txt` 文件)不可改变:
|
||||
|
||||
```
|
||||
$ sudo chattr -R +i dir1
|
||||
```
|
||||
|
||||
命令中,
|
||||
|
||||
* `-R` – 递归使 `dir1` 目录及其内容不可修改
|
||||
* `+i` – 使目录不可修改
|
||||
|
||||
|
||||
现在,来试试删除这个目录,要么用普通用户,要么用 `sudo` 特权。
|
||||
|
||||
```
|
||||
$ rm -fr dir1
|
||||
$ sudo rm -fr dir1
|
||||
```
|
||||
|
||||
你会看到如下输出:
|
||||
|
||||
```
|
||||
# 不可删除'dir1/file.txt':非法操作
|
||||
rm: cannot remove 'dir1/file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
尝试用 `echo` 命令追加内容到文件,你成功了吗?当然,你做不到。
|
||||
|
||||
撤销此属性,输入:
|
||||
|
||||
```
|
||||
$ sudo chattr -R -i dir1
|
||||
```
|
||||
|
||||
现在你就能想平常一样删除或修改这个目录内容了。
|
||||
|
||||
### 防止文件和目录被意外删除,但允许追加操作
|
||||
|
||||
我们现已知道如何防止文件和目录被意外删除和修改了。接下来,我们将防止文件被删除但仅仅允许文件被追加内容。意思是你不可以编辑修改文件已存在的数据,或者重命名这个文件或者删除这个文件,你仅可以使用追加模式打开这个文件。
|
||||
|
||||
为了设置追加属性到文件或目录,我们像下面这么操作:
|
||||
|
||||
针对文件:
|
||||
|
||||
```
|
||||
$ sudo chattr +a file.txt
|
||||
```
|
||||
|
||||
针对目录:
|
||||
|
||||
```
|
||||
$ sudo chattr -R +a dir1
|
||||
```
|
||||
|
||||
一个文件或目录被设置了 `a` 这个属性就仅仅能够以追加模式打开进行写入。
|
||||
|
||||
添加些内容到这个文件以测试是否有效果。
|
||||
|
||||
```
|
||||
$ echo 'Hello World!' >> file.txt
|
||||
$ echo 'Hello World!' >> dir1/file.txt
|
||||
```
|
||||
|
||||
查看文件内容使用cat命令
|
||||
|
||||
```
|
||||
$ cat file.txt
|
||||
$ cat dir1/file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
Hello World!
|
||||
```
|
||||
|
||||
你将看到你现在可以追加内容。就表示我们可以修改这个文件或目录。
|
||||
|
||||
现在让我们试试删除这个文件或目录。
|
||||
|
||||
```
|
||||
$ rm file.txt
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 不能删除文件'file.txt':非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
让我们试试删除这个目录:
|
||||
|
||||
```
|
||||
$ rm -fr dir1/
|
||||
```
|
||||
|
||||
输出:
|
||||
|
||||
```
|
||||
# 不能删除文件'dir1/file.txt':非法操作
|
||||
rm: cannot remove 'dir1/file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
删除这个属性,执行下面这个命令:
|
||||
|
||||
针对文件:
|
||||
|
||||
```
|
||||
$ sudo chattr -R -a file.txt
|
||||
```
|
||||
|
||||
针对目录:
|
||||
|
||||
```
|
||||
$ sudo chattr -R -a dir1/
|
||||
```
|
||||
|
||||
现在,你可以想平常一样删除或修改这个文件和目录了。
|
||||
|
||||
更多详情,查看 man 页面。
|
||||
|
||||
```
|
||||
man chattr
|
||||
```
|
||||
|
||||
### 总结
|
||||
|
||||
保护数据是系统管理人员的主要工作之一。市场上有众多可用的免费和收费的数据保护软件。幸好,我们已经拥有这个内置命令可以帮助我们去保护数据被意外的删除和修改。在你的 Linux 系统中,`chattr` 可作为保护重要系统文件和数据的附加工具。
|
||||
|
||||
然后,这就是今天所有内容了。希望对大家有所帮助。接下来我将会在这提供其他有用的文章。在那之前,敬请期待。再见!
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/prevent-files-folders-accidental-deletion-modification-linux/
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[yizhuoyan](https://github.com/yizhuoyan)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.ostechnix.com/author/sk/
|
105
published/20170927 Linux directory structure- -lib explained.md
Normal file
105
published/20170927 Linux directory structure- -lib explained.md
Normal file
@ -0,0 +1,105 @@
|
||||
Linux 目录结构:/lib 分析
|
||||
======
|
||||
|
||||
[![linux 目录 lib][1]][1]
|
||||
|
||||
我们在之前的文章中已经分析了其他重要系统目录,比如 `/bin`、`/boot`、`/dev`、 `/etc` 等。可以根据自己的兴趣进入下列链接了解更多信息。本文中,让我们来看看 `/lib` 目录都有些什么。
|
||||
|
||||
- [目录结构分析:/bin 文件夹][2]
|
||||
- [目录结构分析:/boot 文件夹][3]
|
||||
- [目录结构分析:/dev 文件夹][4]
|
||||
- [目录结构分析:/etc 文件夹][5]
|
||||
- [目录结构分析:/lost+found 文件夹][6]
|
||||
- [目录结构分析:/home 文件夹][7]
|
||||
|
||||
### Linux 中,/lib 文件夹是什么?
|
||||
|
||||
`/lib` 文件夹是 **库文件目录** ,包含了所有对系统有用的库文件。简单来说,它是应用程序、命令或进程正确执行所需要的文件。在 `/bin` 或 `/sbin` 目录中的命令的动态库文件正是在此目录中。内核模块同样也在这里。
|
||||
|
||||
以 `pwd` 命令执行为例。执行它需要调用一些库文件。让我们来探索一下 `pwd` 命令执行时都发生了什么。我们需要使用 [strace 命令][8] 找出调用的库文件。
|
||||
|
||||
示例:
|
||||
|
||||
```
|
||||
root@linuxnix:~# strace -e open pwd
|
||||
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
|
||||
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
|
||||
/root
|
||||
+++ exited with 0 +++
|
||||
root@linuxnix:~#
|
||||
```
|
||||
|
||||
如果你注意到的话,会发现我们使用的 `pwd` 命令的执行需要调用两个库文件。
|
||||
|
||||
### Linux 中 /lib 文件夹内部信息
|
||||
|
||||
正如之前所说,这个文件夹包含了目标文件和一些库文件,如果能了解这个文件夹的一些重要子文件,想必是极好的。下面列举的内容是基于我自己的系统,对于你的来说,可能会有所不同。
|
||||
|
||||
```
|
||||
root@linuxnix:/lib# find . -maxdepth 1 -type d
|
||||
./firmware
|
||||
./modprobe.d
|
||||
./xtables
|
||||
./apparmor
|
||||
./terminfo
|
||||
./plymouth
|
||||
./init
|
||||
./lsb
|
||||
./recovery-mode
|
||||
./resolvconf
|
||||
./crda
|
||||
./modules
|
||||
./hdparm
|
||||
./udev
|
||||
./ufw
|
||||
./ifupdown
|
||||
./systemd
|
||||
./modules-load.d
|
||||
```
|
||||
|
||||
`/lib/firmware` - 这个文件夹包含了一些硬件、<ruby>固件<rt>Firmware</rt></ruby>代码。
|
||||
|
||||
> **硬件和固件之间有什么不同?**
|
||||
|
||||
> 为了使硬件正常运行,很多设备软件由两部分软件组成。加载到实际硬件的代码部分就是固件,用于在固件和内核之间通讯的软件被称为驱动程序。这样一来,内核就可以直接与硬件通讯,并确保硬件完成内核指派的工作。
|
||||
|
||||
`/lib/modprobe.d` - modprobe 命令的配置目录。
|
||||
|
||||
`/lib/modules` - 所有的可加载内核模块都存储在这个目录下。如果你有多个内核,你会在这个目录下看到代表美国内核的目录。
|
||||
|
||||
`/lib/hdparm` - 包含 SATA/IDE 硬盘正确运行的参数。
|
||||
|
||||
`/lib/udev` - 用户空间 /dev 是 Linux 内核设备管理器。这个文件夹包含了所有的 udev 相关的文件和文件夹,例如 `rules.d` 包含了 udev 规范文件。
|
||||
|
||||
### /lib 的姊妹文件夹:/lib32 和 /lib64
|
||||
|
||||
这两个文件夹包含了特殊结构的库文件。它们几乎和 `/lib` 文件夹一样,除了架构级别的差异。
|
||||
|
||||
### Linux 其他的库文件
|
||||
|
||||
`/usr/lib` - 所有软件的库都安装在这里。但是不包含系统默认库文件和内核库文件。
|
||||
|
||||
`/usr/local/lib` - 放置额外的系统文件。这些库能够用于各种应用。
|
||||
|
||||
`/var/lib` - 存储动态数据的库和文件,例如 rpm/dpkg 数据和游戏记录。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxnix.com/linux-directory-structure-lib-explained/
|
||||
|
||||
作者:[Surendra Anne][a]
|
||||
译者:[CYLeft](https://github.com/CYLeft)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linuxnix.com/author/surendra/
|
||||
[1]:https://www.linuxnix.com/wp-content/uploads/2017/09/The-lib-folder-explained.png
|
||||
[2]:https://www.linuxnix.com/linux-directory-structure-explained-bin-folder/
|
||||
[3]:https://www.linuxnix.com/linux-directory-structure-explained-boot-folder/
|
||||
[4]:https://www.linuxnix.com/linux-directory-structure-explained-dev-folder/
|
||||
[5]:https://www.linuxnix.com/linux-directory-structure-explainedetc-folder/
|
||||
[6]:https://www.linuxnix.com/lostfound-directory-linuxunix/
|
||||
[7]:https://www.linuxnix.com/linux-directory-structure-home-root-folders/
|
||||
[8]:https://www.linuxnix.com/10-strace-command-examples-linuxunix/
|
93
published/20171123 Why microservices are a security issue.md
Normal file
93
published/20171123 Why microservices are a security issue.md
Normal file
@ -0,0 +1,93 @@
|
||||
为什么微服务是一个安全问题
|
||||
============================================================
|
||||
|
||||
> 你可能并不想把所有的遗留应用全部分解为微服务,或许你可以考虑从安全功能开始。
|
||||
|
||||
![Why microservices are a security issue](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003601_05_mech_osyearbook2016_security_cc.png?itok=3V07Lpko)
|
||||
|
||||
Image by : Opensource.com
|
||||
|
||||
我为了给这篇文章起个标题,使出 “洪荒之力”,也很担心这会变成标题党。如果你点击它,是因为它激起了你的好奇,那么我表示抱歉 ^[注1][5] 。我当然是希望你留下来阅读的 ^[注2][6] :我有很多有趣的观点以及很多 ^[注3][7] 脚注。我不是故意提出微服务会导致安全问题——尽管如同很多组件一样都有安全问题。当然,这些微服务是那些安全方面的人员的趣向所在。进一步地说,我认为对于那些担心安全的人来说,它们是优秀的架构。
|
||||
|
||||
为什么这样说?这是个好问题,对于我们这些有[系统安全][16] 经验的人来说,此时这个世界才是一个有趣的地方。我们看到随着带宽便宜了并且延迟降低了,分布式系统在增长。加上部署到云愈加便利,越来越多的架构师们开始意识到应用是可以分解的,不只是分成多个层,并且层内还能分为多个组件。当然,均衡负载可以用于让一个层内的各个组件协同工作,但是将不同的服务输出为各种小组件的能力导致了微服务在设计、实施和部署方面的增长。
|
||||
|
||||
所以,[到底什么是微服务呢][23]?我同意[维基百科的定义][24],尽管没有提及安全性方面的内容^[注4][17] 。 我喜欢微服务的一点是,经过精心设计,其符合 Peter H. Salus 描述的 [UNIX 哲学][25] 的前俩点:
|
||||
|
||||
1. 程序应该只做一件事,并尽可能把它做好。
|
||||
2. 让程序能够互相协同工作。
|
||||
3. 应该让程序处理文本数据流,因为这是一个通用的接口。
|
||||
|
||||
三者中最后一个有点不太相关,因为 UNIX 哲学通常被用来指代独立应用,它常有一个实例化的命令。但是,它确实包含了微服务的基本要求之一:必须具有“定义明确”的接口。
|
||||
|
||||
这里的“定义明确”,我指的不仅仅是可外部访问的 API 的方法描述,也指正常的微服务输入输出操作——以及,如果有的话,还有其副作用。就像我之前的文章描述的,“[良好的系统架构的五个特征][18]”,如果你能够去设计一个系统,数据和主体描述是至关重要的。在此,在我们的微服务描述上,我们要去看看为什么这些是如此重要。因为对我来说,微服务架构的关键定义是可分解性。如果你要分解 ^[注5][8] 你的架构,你必须非常、非常地清楚每个细节(“组件”)要做什么。
|
||||
|
||||
在这里,就要开始考虑安全了。特定组件的准确描述可以让你:
|
||||
|
||||
* 审查您的设计
|
||||
* 确保您的实现符合描述
|
||||
* 提出可重用测试单元来审查功能
|
||||
* 跟踪实施中的错误并纠正错误
|
||||
* 测试意料之外的产出
|
||||
* 监视不当行为
|
||||
* 审核未来可能的实际行为
|
||||
|
||||
现在,这些微服务能用在一个大型架构里了吗?是的。但如果实体是在更复杂的配置中彼此链接或组合在一起,它们会随之越来越难。当你让一小部分可以彼此配合工作时,确保正确的实施和行为是非常、非常容易的。并且如果你不能确定单个组件正在做它们应该作的,那么确保其衍生出来的复杂系统的正确行为及不正确行为就困难的多了。
|
||||
|
||||
而且还不止于此。如我已经在许多[以往场合][19]提过的,写足够安全的代码是困难的^[注7][9] ,证实它应该做的更加困难。因此,有理由限制有特定安全要求的代码——密码检测、加密、加密密钥管理、授权等等——将它们变成小而定义明确的代码块。然后你就可以执行我上面提及所有工作,以确保正确完成。
|
||||
|
||||
还有,我们都知道并不是每个人都擅长于编写与安全相关的代码。通过分解你的体系架构,将安全敏感的代码限制到定义明确的组件中,你就可以把你最棒的安全人员放到这方面,并限制了 J.佛系.码奴 ^[注8][10] 绕过或降级一些关键的安全控制措施的危险。
|
||||
|
||||
它可以作为学习的机会:它对于设计/实现/测试/监视的兄弟们都是好的,而且给他们说:“听、读、标记、学习,并且引为己用 ^[注9][11] 。这是应该做的。”
|
||||
|
||||
是否应该将所有遗留应用程序分解为微服务? 不一定。 但是考虑到其带来的好处,你可以考虑从安全入手。
|
||||
|
||||
* * *
|
||||
|
||||
- 注1、有一点——有读者总是好的。
|
||||
- 注2、这是我写下文章的意义。
|
||||
- 注3、可能没那么有趣。
|
||||
- 注4、在我写这篇文章时。我或你们中的一个可能会去编辑改变它。
|
||||
- 注5、这很有趣,听起来想一个园艺术语。并不是说我很喜欢园艺,但仍然... ^[注6][12]
|
||||
- 注6、有意思的是,我最先写的 “如果你要分解你的架构....” 听起来想是一个 IT 主题的谋杀电影标题。
|
||||
- 注7、长期读者可能会记得提到的优秀电影 “The Thick of It”
|
||||
- 注8、其他的什么人:请随便选择。
|
||||
- 注9、不是加密<ruby>摘要<rt>digest</rt></ruby>:我不认同原作者的想法。
|
||||
|
||||
这篇文章最初出在[爱丽丝、伊娃与鲍伯](https://zh.wikipedia.org/zh-hans/%E6%84%9B%E9%BA%97%E7%B5%B2%E8%88%87%E9%AE%91%E4%BC%AF)——一个安全博客上,并被许可转载。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/11/microservices-are-security-issue
|
||||
|
||||
作者:[Mike Bursell][a]
|
||||
译者:[erlinux](https://itxdm.me)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/mikecamel
|
||||
[1]:https://blog.openshift.com/microservices-how-to-explain-them-to-your-ceo/?intcmp=7016000000127cYAAQ&amp;amp;amp;amp;amp;amp;amp;src=microservices_resource_menu1
|
||||
[2]:https://www.openshift.com/promotions/microservices.html?intcmp=7016000000127cYAAQ&amp;amp;amp;amp;amp;amp;amp;src=microservices_resource_menu2
|
||||
[3]:https://opensource.com/business/16/11/secured-devops-microservices?src=microservices_resource_menu3
|
||||
[4]:https://opensource.com/article/17/11/microservices-are-security-issue?rate=GDH4xOWsgYsVnWbjEIoAcT_92b8gum8XmgR6U0T04oM
|
||||
[5]:https://opensource.com/article/17/11/microservices-are-security-issue#1
|
||||
[6]:https://opensource.com/article/17/11/microservices-are-security-issue#2
|
||||
[7]:https://opensource.com/article/17/11/microservices-are-security-issue#3
|
||||
[8]:https://opensource.com/article/17/11/microservices-are-security-issue#5
|
||||
[9]:https://opensource.com/article/17/11/microservices-are-security-issue#7
|
||||
[10]:https://opensource.com/article/17/11/microservices-are-security-issue#8
|
||||
[11]:https://opensource.com/article/17/11/microservices-are-security-issue#9
|
||||
[12]:https://opensource.com/article/17/11/microservices-are-security-issue#6
|
||||
[13]:https://aliceevebob.com/2017/10/31/why-microservices-are-a-security-issue/
|
||||
[14]:https://opensource.com/user/105961/feed
|
||||
[15]:https://opensource.com/tags/security
|
||||
[16]:https://aliceevebob.com/2017/03/14/systems-security-why-it-matters/
|
||||
[17]:https://opensource.com/article/17/11/microservices-are-security-issue#4
|
||||
[18]:https://opensource.com/article/17/10/systems-architect
|
||||
[19]:https://opensource.com/users/mikecamel
|
||||
[20]:https://opensource.com/users/mikecamel
|
||||
[21]:https://opensource.com/users/mikecamel
|
||||
[22]:https://opensource.com/article/17/11/microservices-are-security-issue#comments
|
||||
[23]:https://opensource.com/resources/what-are-microservices
|
||||
[24]:https://en.wikipedia.org/wiki/Microservices
|
||||
[25]:https://en.wikipedia.org/wiki/Unix_philosophy
|
@ -1,103 +0,0 @@
|
||||
translating----geekpi
|
||||
|
||||
How To Resume Partially Transferred Files Over SSH Using Rsync
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2016/02/Resume-Partially-Transferred-Files-Over-SSH-Using-Rsync.png)
|
||||
|
||||
There are chances that the large files which are being copied over SSH using SCP command might be interrupted or cancelled or broken due to various reasons such as power failure or network failure or user intervention. The other day I was copying the Ubuntu 16.04 ISO file to my remote system. Unfortunately, the power is gone, and the network connection is dropped immediately. The result? The copy process is terminated! This is just a simple example. The Ubuntu ISO is not so big, and I could restart the copy process as soon as the power is restored. But in production environment, you might not want to do it while you're transferring large files.
|
||||
|
||||
Also, you can't always resume the aborted process using **scp** command. Because, If you do, It will simply overwrite the existing files. What would you do in such situations? No worries! This is where **Rsync** utility comes in handy! Rsync can help you to resume the interrupted copy or download process where you left it off. For those wondering, Rsync is a fast, versatile file copying utility that can be used to copy and transfer files or folders to and from remote and local systems.
|
||||
|
||||
It offers a large number of options that control every aspect of its behavior and permit very flexible specification of the set of files to be copied. It is famous for its delta-transfer algorithm, which reduces the amount of data sent over the network by sending only the differences between the source files and the existing files in the destination. Rsync is widely used for backups and mirroring and as an improved copy command for everyday use.
|
||||
|
||||
Just like SCP, rsync will also copy files over SSH. In case you wanted to download or transfer a big files and folders over SSH, I recommend you to use rsync utility. Be mindful that the **rsync utility should be installed on both sides** (remote and local systems) in order to resume partially transferred files.
|
||||
|
||||
### Resume Partially Transferred Files Using Rsync
|
||||
|
||||
Well, let me show you an example. I am going to copy Ubuntu 16.04 ISO from my local system to remote system with command:
|
||||
|
||||
```
|
||||
$ scp Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
Here,
|
||||
|
||||
* **sk** is my remote system 's username
|
||||
* **192.168.43.2** is the IP address of the remote machine.
|
||||
|
||||
|
||||
|
||||
Now, I terminated it by pressing **CTRL+c**.
|
||||
|
||||
**Sample output:**
|
||||
|
||||
```
|
||||
sk@192.168.43.2's password:
|
||||
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c
|
||||
```
|
||||
|
||||
[![][1]][2]
|
||||
|
||||
As you see in the above output, I terminated the copy process when it reached 26%.
|
||||
|
||||
If I re-run the above command, it will simply overwrite the existing file. In other words, the copy process will not resume where I left it off.
|
||||
|
||||
In order to resume the copy process, we can use **rsync** command as shown below.
|
||||
|
||||
```
|
||||
$ rsync -P -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
**Sample output:**
|
||||
```
|
||||
sk@192.168.1.103's password:
|
||||
sending incremental file list
|
||||
ubuntu-16.04-desktop-amd64.iso
|
||||
380.56M 26% 41.05MB/s 0:00:25
|
||||
```
|
||||
|
||||
[![][1]][4]
|
||||
|
||||
See? Now, the copying process is resumed where we left it off earlier. You also can use "-partial" instead of parameter "-P" like below.
|
||||
```
|
||||
$ rsync --partial -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
Here, the parameter "-partial" or "-P" tells the rsync command to keep the partial downloaded file and resumes the process.
|
||||
|
||||
Alternatively, we can use the following commands as well to resume partially transferred files over SSH.
|
||||
|
||||
```
|
||||
$ rsync -avP Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
Or,
|
||||
|
||||
```
|
||||
rsync -av --partial Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
That's it. You know now how to resume the cancelled, interrupted, and partially downloaded files using rsync command. As you can see, it is not so difficult either. If rsync is installed on both systems, we can easily resume the copy process as described above.
|
||||
|
||||
If you find this tutorial helpful, please share it on your social, professional networks and support OSTechNix. More good stuffs to come. Stay tuned!
|
||||
|
||||
Cheers!
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/how-to-resume-partially-downloaded-or-transferred-files-using-rsync/
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[译者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/
|
||||
[1]:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[2]:http://www.ostechnix.com/wp-content/uploads/2016/02/scp.png ()
|
||||
[3]:/cdn-cgi/l/email-protection
|
||||
[4]:http://www.ostechnix.com/wp-content/uploads/2016/02/rsync.png ()
|
@ -1,3 +1,5 @@
|
||||
translating----geekpi
|
||||
|
||||
How to start developing on Java in Fedora
|
||||
======
|
||||
|
||||
|
@ -1,300 +0,0 @@
|
||||
|
||||
Linux系统中防止文件和目录被意外的删除或修改
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2017/02/Prevent-Files-And-Folders-From-Accidental-Deletion-Or-Modification-In-Linux-720x340.jpg)
|
||||
|
||||
有时,我会不小心的按下`SHIFT+DELETE`来删除我的文件数据。是的,我是个笨蛋,不会再次确认下我实际准备要删除的东西。而且我太笨或者说太懒,没有备份我的文件数据。结果呢?数据丢失了!在一瞬间就丢失了。
|
||||
|
||||
这种事时不时就会发生在我身上。如果你和我一样,有个好消息告诉你。有个简单又有用的命令行工具叫**“chattr”**(**Ch** ange **Attr** ibute的缩写 ),在类Unix等发行版中,能够用来防止文件和目录被意外的删除或修改。
|
||||
|
||||
通过给文件或目录添加或删除某些属性,来保证用户不能删除或修改这些文件和目录,不管是有意的还是无意的,甚至root用户也不行。听起来很有用,是不是?
|
||||
|
||||
|
||||
在这篇简短的教程中,我们一起来看看怎么在实际应用中使用chattr命令,来防止文件和目录被意外删除。
|
||||
|
||||
|
||||
### Linux中防止文件和目录被意外删除和修改
|
||||
|
||||
默认,Chattr命令在大多数现代Linux操作系统中是可用的。
|
||||
|
||||
默认语法是:
|
||||
|
||||
```
|
||||
chattr [operator] [switch] [file]
|
||||
|
||||
```
|
||||
|
||||
|
||||
chattr 具有如下操作符:
|
||||
|
||||
|
||||
* 操作符**‘+’**追加指定属性到文件已存在属性中
|
||||
* 操作符**‘-‘**删除指定属性
|
||||
* 操作符**‘=’**直接设置文件属性为指定属性
|
||||
|
||||
Chattr 提供不同的属性,也就是-**aAcCdDeijsStTu**。每个字符代表一个特定文件属性。
|
||||
* **a** – 只能向文件中添加数据,而不能删除(appened only),
|
||||
* **A** – 不更新文件或目录的最后存取时间(no atime updates),
|
||||
* **c** – 将文件或目录压缩后存放(compressed),
|
||||
* **C** – 不适用写入时复制机制(no copy on write),
|
||||
* **d** – 设定文件不能成为dump程序的备份目标(no dump),
|
||||
* **D** – 同步目录更新(synchronous directory updates),
|
||||
* **e** – extend格式存储(extent format),
|
||||
* **i** – 文件或目录不可改变(immutable),
|
||||
* **j** – 设定此参数使得当通过mount参数:data=ordered 或者 data=writeback挂载的文件系统,文件在写入时会先被记录在journal中。(data journalling),
|
||||
* **P** – project层次结构(project hierarchy),
|
||||
* **s** – 保密性删除文件或目录(secure deletion),
|
||||
* **S** – 即时更新文件或目录(synchronous updates),
|
||||
* **t** – 不进行尾部合并(no tail-merging),
|
||||
* **T** – 顶层目录层次结构(top of directory hierarchy),
|
||||
* **u** – 不可删除(undeletable).
|
||||
|
||||
在本教程中,我们将讨论两个属性的使用,即**a** , **i** ,这个两个属性可以用于防止文件和目录的被删除。这是我们今天的主题,对吧?来开始吧!
|
||||
|
||||
### 防止文件被意外删除和修改
|
||||
|
||||
我先在我的当前目录创建一个**file.txt**文件。
|
||||
```
|
||||
$ touch file.txt
|
||||
|
||||
```
|
||||
现在,我将给文件应用**“i”**属性,让文件不可改变。就是说你不能删除或修改这个文件,就算你是文件的拥有者和root用户也不行。
|
||||
```
|
||||
$ sudo chattr +i file.txt
|
||||
```
|
||||
|
||||
使用`lsattr`命令检查文件已有属性
|
||||
```
|
||||
$ lsattr file.txt
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
----i---------e---- file.txt
|
||||
```
|
||||
|
||||
现在,试着用普通用户去删除文件
|
||||
```
|
||||
$ rm file.txt
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#不能删除文件,非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
我来试试sudo特权:
|
||||
```
|
||||
$ sudo rm file.txt
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#不能删除文件,非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
```
|
||||
|
||||
我们试试追加写内容到这个文本文件
|
||||
```
|
||||
$ echo 'Hello World!' >> file.txt
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#非法操作
|
||||
bash: file.txt: Operation not permitted
|
||||
```
|
||||
|
||||
试试 **sudo** 特权:
|
||||
```
|
||||
$ sudo echo 'Hello World!' >> file.txt
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#非法操作
|
||||
bash: file.txt: Operation not permitted
|
||||
|
||||
```
|
||||
你应该注意到了,我们不能删除或修改这个文件,甚至root用户或者文件所有者也不行。
|
||||
|
||||
要撤销属性,使用**“-i”**即可。
|
||||
```
|
||||
$ sudo chattr -i file.txt
|
||||
|
||||
```
|
||||
|
||||
现在,这不可改变属性已经被删除掉了。你现在可以删除或修改这个文件了。
|
||||
```
|
||||
$ rm file.txt
|
||||
|
||||
```
|
||||
|
||||
类似的,你能够限制目录被意外删除或修改,如下一节所述。
|
||||
|
||||
### 防止目录被意外删除和修改
|
||||
|
||||
创建一个dir1目录,放入文件file.txt。
|
||||
```
|
||||
$ mkdir dir1 && touch dir1/file.txt
|
||||
|
||||
```
|
||||
|
||||
现在,让目录及其内容(file.txt文件)不可改变:
|
||||
```
|
||||
$ sudo chattr -R +i dir1
|
||||
|
||||
```
|
||||
|
||||
命令中,
|
||||
|
||||
* **-R** – 递归使dir目录及其内容不可修改
|
||||
* **+i** – 使目录不可修改
|
||||
|
||||
|
||||
|
||||
现在,来试试删除这个目录,要么用普通用户,要么用sudo特权。
|
||||
```
|
||||
$ rm -fr dir1
|
||||
|
||||
$ sudo rm -fr dir1
|
||||
|
||||
```
|
||||
|
||||
你会看到如下输出:
|
||||
```
|
||||
#不可删除'dir1/file.txt':非法操作
|
||||
rm: cannot remove 'dir1/file.txt': Operation not permitted
|
||||
|
||||
```
|
||||
尝试用“echo”命令追加内容到文件,你成功了吗?当然,你做不到。
|
||||
撤销此属性,输入:
|
||||
```
|
||||
$ sudo chattr -R -i dir1
|
||||
|
||||
```
|
||||
|
||||
现在你就能想平常一样删除或修改这个目录内容了。
|
||||
|
||||
### 防止文件和目录被意外删除,但允许追加操作
|
||||
|
||||
我们现已知道如何防止文件和目录被意外删除和修改了。接下来,我们将防止文件被删除但仅仅允许文件被追加内容。意思是你不可以编辑修改文件已存在的数据,或者重命名这个文件或者删除这个文件,你仅可以使用追加模式打开这个文件。
|
||||
|
||||
|
||||
为了设置追加属性到文件或目录,我们像下面这么操作:
|
||||
**针对文件:**
|
||||
```
|
||||
$ sudo chattr +a file.txt
|
||||
|
||||
```
|
||||
|
||||
**针对目录: **
|
||||
```
|
||||
$ sudo chattr -R +a dir1
|
||||
|
||||
```
|
||||
|
||||
一个文件或目录被设置了‘a’这个属性就仅仅能够被追加模式打开进行写入。
|
||||
添加些内容到这个文件以测试是否有效果。
|
||||
```
|
||||
$ echo 'Hello World!' >> file.txt
|
||||
|
||||
$ echo 'Hello World!' >> dir1/file.txt
|
||||
|
||||
```
|
||||
|
||||
|
||||
查看文件内容使用cat命令
|
||||
```
|
||||
$ cat file.txt
|
||||
|
||||
$ cat dir1/file.txt
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
Hello World!
|
||||
|
||||
```
|
||||
|
||||
|
||||
你将看到你现在可以追加内容。就表示我们可以修改这个文件或目录。
|
||||
|
||||
现在让我们试试删除这个文件或目录。
|
||||
```
|
||||
$ rm file.txt
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#不能删除文件'file.txt':非法操作
|
||||
rm: cannot remove 'file.txt': Operation not permitted
|
||||
|
||||
```
|
||||
|
||||
|
||||
让我们试试删除这个目录:
|
||||
```
|
||||
$ rm -fr dir1/
|
||||
|
||||
```
|
||||
|
||||
**输出:**
|
||||
```
|
||||
#不能删除文件'dir1/file.txt':非法操作
|
||||
rm: cannot remove 'dir1/file.txt': Operation not permitted
|
||||
|
||||
```
|
||||
|
||||
|
||||
删除这个属性,执行下面这个命令:
|
||||
**针对文件:**
|
||||
```
|
||||
$ sudo chattr -R -a file.txt
|
||||
|
||||
```
|
||||
|
||||
**针对目录:**
|
||||
```
|
||||
$ sudo chattr -R -a dir1/
|
||||
|
||||
```
|
||||
|
||||
|
||||
现在,你可以想平常一样删除或修改这个文件和目录了。
|
||||
|
||||
更多详情,查看man页面。
|
||||
```
|
||||
man chattr
|
||||
|
||||
```
|
||||
|
||||
### 总结
|
||||
|
||||
|
||||
保护数据是系统管理人员的主要工作之一。市场上有众多可用的免费和收费的数据保护软件。幸好,我们已经拥有这个内置命令可以帮助我们去保护数据被意外的删除和修改。在你的Linux系统中,Chattr可作为保护重要系统文件和数据的附加工具。
|
||||
|
||||
然后,这就是今天所有内容了。希望对大家有所帮助。接下来我将会在这提供其他有用的文章。在那之前,敬请期待OSTechNix。
|
||||
再见!
|
||||
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
来源: https://www.ostechnix.com/prevent-files-folders-accidental-deletion-modification-linux/
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[yizhuoyan](https://github.com/yizhuoyan)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.ostechnix.com/author/sk/
|
@ -1,77 +0,0 @@
|
||||
Linux 目录结构:/lib 分析
|
||||
======
|
||||
[![linux 目录 lib][1]][1]
|
||||
|
||||
我们在之前的文章中已经分析了其他重要系统目录,比如 bin、/boot、/dev、 /etc 等。可以根据自己的兴趣进入下列链接了解更多信息。本文中,让我们来看看 /lib 目录都有些什么。
|
||||
|
||||
[**目录结构分析:/bin 文件夹**][2]
|
||||
|
||||
[**目录结构分析:/boot 文件夹**][3]
|
||||
|
||||
[**目录结构分析:/dev 文件夹**][4]
|
||||
|
||||
[**目录结构分析:/etc 文件夹**][5]
|
||||
|
||||
[**目录结构分析:/lost+found 文件夹**][6]
|
||||
|
||||
[**目录结构分析:/home 文件夹**][7]
|
||||
|
||||
### Linux 中,/lib 文件夹是什么?
|
||||
|
||||
lib 文件夹是 **库文件目录** ,包含了所有对系统有用的库文件。简单来说,它是应用程序、命令或进程正确执行所需要的文件。指令在 /bin 或 /sbin 目录,而动态库文件正是在此目录中。内核模块同样也在这里。
|
||||
|
||||
以 pwd 命令执行为例。正确执行,需要调用一些库文件。让我们来探索一下 pwd 命令执行时都发生了什么。我们需要使用 [strace 命令][8] 找出调用的库文件。
|
||||
|
||||
示例:
|
||||
|
||||
如果你在观察的话,会发现我们使用的 pwd 命令仅进行了内核调用,命令正确执行需要调用两个库文件。
|
||||
|
||||
Linux 中 /lib 文件夹内部信息
|
||||
|
||||
正如之前所说,这个文件夹包含了目标文件和一些库文件,如果能了解这个文件夹的一些重要子文件,想必是极好的。下面列举的内容是基于我自己的系统,对于你的来说,可能会有所不同。
|
||||
|
||||
**/lib/firmware** - 这个文件夹包含了一些硬件、固件(Firmware)代码。
|
||||
|
||||
### 硬件和固件(Firmware)之间有什么不同?
|
||||
|
||||
为了使硬件合法运行,很多设备软件有两部分软件组成。加载了一个代码片段的切实硬件就是固件,固件与内核交流的软件,被称为驱动。这样一来,确保被指派工作的硬件完成内核直接与硬件交流的工作。
|
||||
|
||||
**/lib/modprobe.d** - 自动处理可载入模块命令配置目录
|
||||
|
||||
**/lib/modules** - 所有可加载的内核模块都存储在这个目录下。如果你有多个内核,那这个目录下有且不仅有一个文件夹,其中每一个都代表一个内核。
|
||||
|
||||
**/lib/hdparm** - 包含 SATA/IDE 硬盘正确运行的参数。
|
||||
|
||||
**/lib/udev** - Userspace /dev,是 Linux 内核设备管理器。这个文件夹包含了所有的 udev,类似 rules.d 这样描述特殊规则的相关文件/文件夹。
|
||||
|
||||
### /lib 的姊妹文件夹:/lib32 和 /lib64
|
||||
|
||||
这两个文件夹包含了特殊结构的库文件。它们几乎和 /lib 文件夹一样,除了架构级别的差异。
|
||||
|
||||
### Linux 其他的库文件
|
||||
|
||||
**/usr/lib** - 所有软件的库都安装在这里。但是不包含系统默认库文件和内核库文件。
|
||||
|
||||
**/usr/local/lib** - 放置额外的系统文件。不同应用都可以调用。
|
||||
|
||||
**/var/lib** - rpm/dpkg 数据和游戏缓存类似的动态库/文件都存储在这里。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linuxnix.com/linux-directory-structure-lib-explained/
|
||||
|
||||
作者:[Surendra Anne][a]
|
||||
译者:[CYLeft](https://github.com/CYLeft)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.linuxnix.com/author/surendra/
|
||||
[1]:https://www.linuxnix.com/wp-content/uploads/2017/09/The-lib-folder-explained.png
|
||||
[2]:https://www.linuxnix.com/linux-directory-structure-explained-bin-folder/
|
||||
[3]:https://www.linuxnix.com/linux-directory-structure-explained-boot-folder/
|
||||
[4]:https://www.linuxnix.com/linux-directory-structure-explained-dev-folder/
|
||||
[5]:https://www.linuxnix.com/linux-directory-structure-explainedetc-folder/
|
||||
[6]:https://www.linuxnix.com/lostfound-directory-linuxunix/
|
||||
[7]:https://www.linuxnix.com/linux-directory-structure-home-root-folders/
|
||||
[8]:https://www.linuxnix.com/10-strace-command-examples-linuxunix/
|
@ -1,111 +0,0 @@
|
||||
为什么微服务是一个安全问题
|
||||
============================================================
|
||||
|
||||
### 你可能并不想把所有的遗留应用全部分解为微服务,或许你可以考虑开始一段安全之旅。
|
||||
|
||||
![Why microservices are a security issue](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/rh_003601_05_mech_osyearbook20 16_security_cc.png?itok=3V07Lpko)
|
||||
|
||||
Image by : Opensource.com
|
||||
|
||||
我为这篇文章起个标题,使出 “洪荒之力”,也很担心这会遇到 “好奇心点击”。如果你点击它,是因为激起了你的好奇,那么(我)表示抱歉。[1][5] 我是希望你留下来的 [2][6]:这里有有趣的观点以及很多 [3][7] 注解。我不是故意提出微服务会导致安全问题——尽管如同很多组件一样(都有安全问题)。当然,这些微服务是那些涉及安全(人员)的趣向所在,最佳对象。
|
||||
|
||||
为什么这样说?好(问题),对于我们这些有[系统安全][16] (的人来说),此时这个世界才是一个有趣的地方。我们看到分布式系统的增长,带宽便宜了并且延迟低了。加上
|
||||
"轻松上云"(部署到云的便利性在增加),越来越多的架构师们开始意识到应用是可以分解的。他们可以分解应用程序而不只是多个层,并且层内还能分为多个组件。当然均衡负载,对一个层次内的各个组件协同一个任务有帮助。但是增长揭露不同的服务作为小附件已经导致架构的增长,以及实施微服务的部署。
|
||||
|
||||
更多关于微服务
|
||||
|
||||
* [如何向你的 CEO 首席执行官 解释微服务][1]
|
||||
|
||||
* [免费电子书:微服务与面向服务的体系架构][2]
|
||||
|
||||
* [为微服务的 DevOps 保驾护航][3]
|
||||
|
||||
所以,[什么是微服务][23]?我同意[维基百科的定义][24],尽管有趣的关于安全性没有提起。[4][17]我喜欢微服务的一点是,精心设计符合 Peter H. Salus 描述的 [UNIX 哲学][25] 的前俩点:
|
||||
|
||||
1. 程序应该只关注一个目标,并尽可能把它做好。
|
||||
2. 让程序能够互相协同工作。
|
||||
3. 应该让程序处理文本数据流,因为这是一个通用的接口。
|
||||
|
||||
三者中最后一个小小的不相关,因为 UNIX 哲学 通常被用来指代独立应用,它常有一个命令实例化。但是,它确实包含了微服务的基本要求之一:必须具有定义 "明确" 的接口。
|
||||
|
||||
明确下,我指的不仅仅是很多外部 API 访问的方法,还有正常的微服务输入输出操作——以及,如果有任何副作用。就像我之前的文章描述的,“[五个特征良好的系统架构][18]”,如果你能设计一个系统,数据和描述主体是至关重要的。这里,在我们的微服务描述上,我们得到查看为什么这些是很重要的。因为对我来说,微服务架构的关键未来定义是可分解性。如果你要分解 [5][8] 你的架构,你必须非常非常非常的清楚 "bits"
|
||||
组件要做什么。
|
||||
|
||||
在这里,安全的要来了。准确描述特定组件应该做什么以允许你:
|
||||
|
||||
* 查看您的样图
|
||||
* 确保您的实现符合描述
|
||||
* 提出可重用测试单元来审查功能
|
||||
* 跟踪实施中的错误并纠正错误
|
||||
* 测试意料外的产出
|
||||
* 监视不当行为
|
||||
* 审核未来可能的真实行为
|
||||
|
||||
现在,这些东西(微服务)可能都在一个大架构里了吗?是的。但如果实体是在更复杂的配置中链接或组合在一起,他们会随着越来越难。为确保正确的实施和贯彻,当你有小块一起工作。以及如果你不能确定单个组件正在做他们应正在工作的,那么衍生出复杂系统运行状况和不正确行为就困难的多了。
|
||||
|
||||
不管怎样,它不止于此。由于我已经在许多[以往场合][19]提过,写足够安全的代码是困难的,[7][9] 证实它应该做的更加困难。因此,有理由限制特定安全要求的代码——密码检测、加密、加密密钥管理、授权、等等。——变的小,明确的快。然后你可以执行上面提到所有事情,以确定正确完成。
|
||||
|
||||
以及还有更多。我们都知道并不是每个人都擅长于编写与安全相关的代码。通过分解你的体系架构,你得到机会去把最棒的安全人员去限制 J. 随机编码器 [8][10] 会把一些关键的安全控制措施绕过或降级的危险。
|
||||
|
||||
它可以作为学校的机会:它总能够指向 设计/实现/测试/监视元组 并且说:“听,读,标记,学习,内在消化。这是应该做的。[9][11] ”
|
||||
|
||||
是否应该将所有遗留应用程序分解为微服务? 你可能可能不会。 但是考虑到所有的好处,你可以考虑从安全功能开始。
|
||||
|
||||
* * *
|
||||
|
||||
1、有一点——有读者总是好的。
|
||||
|
||||
2、我知道他们的意义:我写下了他们。
|
||||
|
||||
3、可能不那么使人着迷。
|
||||
|
||||
4、在写这篇文章时。我或你们中的一个可能会去编辑改变它。
|
||||
|
||||
5、这很有趣,听起来想一个园艺术语。并不是说我很喜欢园艺,但仍然... [6][12]
|
||||
|
||||
6、有趣地,我首先写了 “如果你要分解你的架构....” 这听起来想是一个 IT 主题的谋杀电影标题。
|
||||
|
||||
7、定期的读者可能会记得提到的优秀电影 “The Thick of It”
|
||||
|
||||
8、其他存在的常规人物:请随便选择。
|
||||
|
||||
9、不是加密摘要:我不认同原作者的想法。
|
||||
|
||||
这篇文章最初出在[爱丽丝与鲍伯](https://zh.wikipedia.org/zh-hans/%E6%84%9B%E9%BA%97%E7%B5%B2%E8%88%87%E9%AE%91%E4%BC%AF)——一个安全博客上,并被许可转载。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/17/11/microservices-are-security-issue
|
||||
|
||||
作者:[Mike Bursell ][a]
|
||||
译者:[erlinux](https://itxdm.me)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://opensource.com/users/mikecamel
|
||||
[1]:https://blog.openshift.com/microservices-how-to-explain-them-to-your-ceo/?intcmp=7016000000127cYAAQ&amp;amp;amp;amp;amp;amp;amp;src=microservices_resource_menu1
|
||||
[2]:https://www.openshift.com/promotions/microservices.html?intcmp=7016000000127cYAAQ&amp;amp;amp;amp;amp;amp;amp;src=microservices_resource_menu2
|
||||
[3]:https://opensource.com/business/16/11/secured-devops-microservices?src=microservices_resource_menu3
|
||||
[4]:https://opensource.com/article/17/11/microservices-are-security-issue?rate=GDH4xOWsgYsVnWbjEIoAcT_92b8gum8XmgR6U0T04oM
|
||||
[5]:https://opensource.com/article/17/11/microservices-are-security-issue#1
|
||||
[6]:https://opensource.com/article/17/11/microservices-are-security-issue#2
|
||||
[7]:https://opensource.com/article/17/11/microservices-are-security-issue#3
|
||||
[8]:https://opensource.com/article/17/11/microservices-are-security-issue#5
|
||||
[9]:https://opensource.com/article/17/11/microservices-are-security-issue#7
|
||||
[10]:https://opensource.com/article/17/11/microservices-are-security-issue#8
|
||||
[11]:https://opensource.com/article/17/11/microservices-are-security-issue#9
|
||||
[12]:https://opensource.com/article/17/11/microservices-are-security-issue#6
|
||||
[13]:https://aliceevebob.com/2017/10/31/why-microservices-are-a-security-issue/
|
||||
[14]:https://opensource.com/user/105961/feed
|
||||
[15]:https://opensource.com/tags/security
|
||||
[16]:https://aliceevebob.com/2017/03/14/systems-security-why-it-matters/
|
||||
[17]:https://opensource.com/article/17/11/microservices-are-security-issue#4
|
||||
[18]:https://opensource.com/article/17/10/systems-architect
|
||||
[19]:https://opensource.com/users/mikecamel
|
||||
[20]:https://opensource.com/users/mikecamel
|
||||
[21]:https://opensource.com/users/mikecamel
|
||||
[22]:https://opensource.com/article/17/11/microservices-are-security-issue#comments
|
||||
[23]:https://opensource.com/resources/what-are-microservices
|
||||
[24]:https://en.wikipedia.org/wiki/Microservices
|
||||
[25]:https://en.wikipedia.org/wiki/Unix_philosophy
|
@ -0,0 +1,101 @@
|
||||
如何使用 Rsync 通过 SSH 恢复部分传输的文件
|
||||
======
|
||||
|
||||
![](https://www.ostechnix.com/wp-content/uploads/2016/02/Resume-Partially-Transferred-Files-Over-SSH-Using-Rsync.png)
|
||||
|
||||
由于诸如电源故障、网络故障或用户干预等各种原因,使用 SCP 命令通过 SSH 复制的大型文件可能会中断,取消或损坏。有一天,我将 Ubuntu 16.04 ISO 文件复制到我的远程系统。不幸的是断电了,网络连接立即丢失。结果么?复制过程终止!这只是一个简单的例子。Ubuntu ISO 并不是那么大,一旦电源恢复,我就可以重新启动复制过程。但在生产环境中,当你在传输大型文件时,你可能并不希望这样做。
|
||||
|
||||
而且,你不能总是使用 **scp** 命令恢复被中止的进度。因为,如果你这样做,它只会覆盖现有的文件。这时你会怎么做?别担心!这是 **Rsync** 派上用场的地方!Rsync 可以帮助你恢复中断的复制或下载过程。对于那些好奇的人,Rsync 是一个快速、多功能的文件复制程序,可用于复制和传输远程和本地系统中的文件或文件夹。
|
||||
|
||||
它提供了大量控制其行为的每个方面的选项,并允许非常灵活地指定要复制的一组文件。它以增量传输算法而闻名,它通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。 Rsync 广泛用于备份和镜像,以及日常使用中改进的复制命令。
|
||||
|
||||
就像 SCP 一样,rsync 也会通过 SSH 复制文件。如果你想通过 SSH 下载或传输大文件和文件夹,我建议您使用 rsync。请注意,**应该在两边都安装 rsync**(远程和本地系统)来恢复部分传输的文件。
|
||||
|
||||
### 使用 Rsync 恢复部分传输的文件
|
||||
|
||||
好吧,让我给你看一个例子。我将使用命令将 Ubuntu 16.04 ISO 从本地系统复制到远程系统:
|
||||
|
||||
```
|
||||
$ scp Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
这里,
|
||||
|
||||
* **sk**是我的远程系统的用户名
|
||||
* **192.168.43.2** 是远程机器的 IP 地址。
|
||||
|
||||
|
||||
|
||||
现在,我按下 **CTRL+c** 结束它。
|
||||
|
||||
**示例输出:**
|
||||
|
||||
```
|
||||
sk@192.168.43.2's password:
|
||||
ubuntu-16.04-desktop-amd64.iso 26% 372MB 26.2MB/s 00:39 ETA^c
|
||||
```
|
||||
|
||||
[![][1]][2]
|
||||
|
||||
正如你在上面的输出中看到的,当它达到 26% 时,我终止了复制过程。
|
||||
|
||||
如果我重新运行上面的命令,它只会覆盖现有的文件。换句话说,复制过程不会在我断开的地方恢复。
|
||||
|
||||
为了恢复复制过程,我们可以使用 **rsync** 命令,如下所示。
|
||||
|
||||
```
|
||||
$ rsync -P -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
**示例输出:**
|
||||
```
|
||||
sk@192.168.1.103's password:
|
||||
sending incremental file list
|
||||
ubuntu-16.04-desktop-amd64.iso
|
||||
380.56M 26% 41.05MB/s 0:00:25
|
||||
```
|
||||
|
||||
[![][1]][4]
|
||||
|
||||
看见了吗?现在,复制过程在我们之前断开的地方恢复了。你也可以像下面那样使用 “-partial” 而不是 “-P” 参数。
|
||||
```
|
||||
$ rsync --partial -rsh=ssh Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
这里,参数 “-partial” 或 “-P” 告诉 rsync 命令保留部分下载的文件并恢复进度。
|
||||
|
||||
或者,我们也可以使用以下命令通过 SSH 恢复部分传输的文件。
|
||||
|
||||
```
|
||||
$ rsync -avP Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
或者,
|
||||
|
||||
```
|
||||
rsync -av --partial Soft_Backup/OS\ Images/Linux/ubuntu-16.04-desktop-amd64.iso sk@192.168.43.2:/home/sk/
|
||||
```
|
||||
|
||||
就是这样了。你现在知道如何使用 rsync 命令恢复取消、中断和部分下载的文件。正如你所看到的,它也不是那么难。如果两个系统都安装了 rsync,我们可以轻松地通过上面描述的那样恢复复制进度。
|
||||
|
||||
如果你觉得本教程有帮助,请在你的社交、专业网络上分享,并支持 OSTechNix。还有更多的好东西。敬请关注!
|
||||
|
||||
干杯!
|
||||
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.ostechnix.com/how-to-resume-partially-downloaded-or-transferred-files-using-rsync/
|
||||
|
||||
作者:[SK][a]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]:https://www.ostechnix.com/author/sk/
|
||||
[1]:data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
|
||||
[2]:http://www.ostechnix.com/wp-content/uploads/2016/02/scp.png ()
|
||||
[3]:/cdn-cgi/l/email-protection
|
||||
[4]:http://www.ostechnix.com/wp-content/uploads/2016/02/rsync.png ()
|
Loading…
Reference in New Issue
Block a user