Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
wxy 2018-02-16 21:25:54 +08:00
commit 15cb498fee
5 changed files with 180 additions and 158 deletions

View File

@ -1,11 +1,11 @@
我是被 root@notty 黑了吗?
我是被 root@notty 黑了吗?
======
当你在 `ps aux` 的输出中看到 `sshdroot@notty` 时会觉得很奇怪吧,`notty` 算是哪门子的主机,是不是黑客计算机的名字啊。不过不用担心; `notty` 仅仅是表示 `no tty` 而已。
当你在 `ps aux` 的输出中看到 `sshdroot@notty` 时会觉得很奇怪吧,`notty` 算是哪门子的主机,是不是黑客计算机的名字啊。不过不用担心`notty` 仅仅是表示 没有 tty 而已。
当你在本地登陆 linux 机器时,登陆终端会在进程列表中显示为 `tty`( 比如。tty7)。若你通过 ssh 登陆一台远程服务器,则会看到类似 `root@pts/0` 这样的东西。
当你在本地登录 Linux 机器时,登录终端会在进程列表中显示为 `tty` 比如tty7。若你通过 ssh 登录一台远程服务器,则会看到类似 `root@pts/0` 这样的东西。
而若某个连接是由 sftp 或者是由 scp 拷贝文件而创建的,则该连接会会显示成 no tty (notty)
而若某个连接是由 sftp 或者是由 scp 拷贝文件而创建的,则该连接会会显示成没有 tty notty
如果你仍然想知道服务器上发生了什么事情,可以检查 `ps auxf` 的输出来查看进程树,或者运行 `netstat -vatn` 来检查所有的 TCP 连接。
@ -15,7 +15,7 @@ via: http://www.sysadminworld.com/2011/ps-aux-shows-sshd-rootnotty/
作者:[sysadminworld][a]
译者:[lujun9972](https://github.com/lujun9972)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -0,0 +1,135 @@
如何在 Linux/Unix 之上绑定 ntpd 到特定的 IP 地址
======
默认的情况下,我们的 ntpd/NTP 服务器会监听所有的端口或者 IP 地址,也就是:`0.0.0.0:123`。 怎么才可以在一个 Linux 或是 FreeBSD Unix 服务器上,确保只监听特定的 IP 地址,比如 `localhost` 或者是 `192.168.1.1:123`
NTP 是<ruby>网络时间协议<rt>Network Time Protocol</rt></ruby>的首字母简写这是一个用来同步两台电脑之间时间的协议。ntpd 是一个操作系统守护进程,可以设置并且保证系统的时间与互联网标准时间服务器同步。
[![如何在 Linux 和 Unix 服务器,防止 NTPD 监听 0.0.0.0:123 并将其绑定到特定的 IP 地址][1]][1]
NTP 使用 `/etc/directory` 之下的 `ntp.conf` 作为配置文件。
### /etc/ntp.conf 之中的端口指令
你可以通过设置端口命令来防止 ntpd 监听 `0.0.0.0:123`,语法如下:
```
interface listen IPv4|IPv6|all
interface ignore IPv4|IPv6|all
interface drop IPv4|IPv6|all
```
上面的配置可以使 `ntpd` 监听那个地址或者不出来任何请求而直接丢弃。`ignore` 会防止打开匹配的地址,`drop` 会导致 ntpd 打开该地址并丢弃所有接收到的包,而不做任何检查。举个例子,如果要忽略所有端口之上的监听,加入下面的语句到 `/etc/ntp.conf`
```
interface ignore wildcard
```
如果只监听 127.0.0.1 和 192.168.1.1 则是这样:
```
interface listen 127.0.0.1
interface listen 192.168.1.1
```
这是我 FreeBSD 云服务器上的样例 `/etc/ntp.conf` 文件:
```
$ egrep -v '^#|$^' /etc/ntp.conf
```
样例输出为:
```
tos minclock 3 maxclock 6
pool 0.freebsd.pool.ntp.org iburst
restrict default limited kod nomodify notrap noquery nopeer
restrict -6 default limited kod nomodify notrap noquery nopeer
restrict source limited kod nomodify notrap noquery
restrict 127.0.0.1
restrict -6 ::1
leapfile "/var/db/ntpd.leap-seconds.list"
interface ignore wildcard
interface listen 172.16.3.1
interface listen 10.105.28.1
```
### 重启 ntpd
在 FreeBSD Unix 之上重新加载/重启 ntpd
```
$ sudo /etc/rc.d/ntpd restart
```
或者 [在 Debian 和 Ubuntu Linux 之上使用下面的命令][2]
```
$ sudo systemctl restart ntp
```
或者 [在 CentOS/RHEL 7/Fedora Linux 之上使用下面的命令][2]
```
$ sudo systemctl restart ntpd
```
### 校验
使用 `netstat``ss` 命令来检查 ntpd 只绑定到了特定的 IP 地址:
```
$ netstat -tulpn | grep :123
```
或是:
```
$ ss -tulpn | grep :123
```
样例输出:
```
udp 0 0 10.105.28.1:123 0.0.0.0:* -
udp 0 0 172.16.3.1:123 0.0.0.0:* -
```
[在 FreeBSD Unix 服务器上使用 sockstat 命令][3]
```
$ sudo sockstat
$ sudo sockstat -4
$ sudo sockstat -4 | grep :123
```
样例输出:
```
root ntpd 59914 22 udp4 127.0.0.1:123 *:*
root ntpd 59914 24 udp4 127.0.1.1:123 *:*
```
---
作者是 nixCraft 的创始人并且是一位经验丰富的系统管理员、DevOps 工程师,也是一名 Linux 操作系统和 Unix shell 脚本的训练师。他为全球不同行业,包括 IT、教育业、安全防护、空间研究和非营利性组织的客户工作。关注他的 [Twitter][4], [Facebook][5], [Google+][6]。
--------------------------------------------------------------------------------
via: https://www.cyberciti.biz/faq/how-to-bind-ntpd-to-specific-ip-addresses-on-linuxunix/
作者:[Vivek Gite][a]
译者:[Drshu](https://github.com/Drshu)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.cyberciti.biz
[1]:https://www.cyberciti.biz/media/new/faq/2017/10/how-to-prevent-ntpd-to-listen-on-all-interfaces-on-linux-unix-box.jpg
[2]:https://www.cyberciti.biz/faq/restarting-ntp-service-on-linux/
[3]:https://www.cyberciti.biz/faq/freebsd-unix-find-the-process-pid-listening-on-a-certain-port-commands/
[4]:https://twitter.com/nixcraft
[5]:https://facebook.com/nixcraft
[6]:https://plus.google.com/+CybercitiBiz

View File

@ -7,7 +7,7 @@
### 要求
* 了解标准的 Unix / Linux 权限系统
* 了解标准的 Unix / Linux 权限系统
### 难度
@ -15,55 +15,49 @@
### 约定
* **#** \- 要求直接以 root 用户或使用 `sudo` 命令执行指定的命令
* **$** \- 用普通的非特权用户来执行指定的命令
* `#` - 要求直接以 root 用户或使用 `sudo` 命令执行指定的命令
* `$` - 用普通的非特权用户来执行指定的命令
### 介绍
通常,在类 Unix 操作系统上,文件和目录的所有权是基于文件创建者的默认 `uid`user-id`gid`group-id的。启动一个进程时也是同样的情况它以启动它的用户的 uid 和 gid 运行,并具有相应的权限。这种行为可以通过使用特殊的权限进行改变。
通常,在类 Unix 操作系统上,文件和目录的所有权是基于文件创建者的默认 `uid`user-id`gid`group-id的。启动一个进程时也是同样的情况它以启动它的用户的 `uid``gid` 运行,并具有相应的权限。这种行为可以通过使用特殊的权限进行改变。
### setuid 位
当使用 setuid 位时,之前描述的行为会有所变化,所以当一个可执行文件启动时,它不会以启动它的用户的权限运行,而是以该文件所有者的权限运行。所以,如果在一个可执行文件上设置了 setuid 位,并且该文件由 root 拥有,当一个普通用户启动它时,它将以 root 权限运行。显然,如果 setuid 位使用不当的话,会带来潜在的安全风险。
当使用 setuid (设置用户 ID位时,之前描述的行为会有所变化,所以当一个可执行文件启动时,它不会以启动它的用户的权限运行,而是**以该文件所有者的权限运行**。所以,如果在一个可执行文件上设置了 setuid 位,并且该文件由 root 拥有,当一个普通用户启动它时,它将以 root 权限运行。显然,如果 setuid 位使用不当的话,会带来潜在的安全风险。
使用 setuid 权限的可执行文件的例子是 `passwd`,我们可以使用该程序更改登录密码。我们可以通过使用 `ls` 命令来验证:
```
ls -l /bin/passwd
-rwsr-xr-x. 1 root root 27768 Feb 11 2017 /bin/passwd
```
如何识别 `setuid` 位呢?相信您在上面命令的输出已经注意到,`setuid` 位是用 `s` 来表示的,代替了可执行位的 `x`。小写的 `s` 意味着可执行位已经被设置,否则你会看到一个大写的 `S`。大写的 `S` 发生于当设置了 `setuid``setgid` 位、但没有设置可执行位 `x` 时。它用于提醒用户这个矛盾的设置:如果可执行位未设置,则 `setuid``setgid` 位均不起作用。setuid 位对目录没有影响。
### setgid 位
`setuid` 位不同,`setgid` 位对文件和目录都有影响。在第一个例子中,具有 `setgid` 位设置的文件在执行时,不是以启动它的用户所属组的权限运行,而是以拥有该文件的组运行。换句话说,进程的 gid 与文件的 gid 相同。
`setuid` 位不同,`setgid` (设置组 ID位对文件和目录都有影响。在第一个例子中,具有 `setgid` 位设置的文件在执行时,不是以启动它的用户所属组的权限运行,而是**以拥有该文件的组运行**。换句话说,进程的 `gid` 与文件的 `gid` 相同。
当在一个目录上使用时,`setgid` 位与一般的行为不同,它使得在所述目录内创建的文件,不属于创建者所属的组,而是属于父目录所属的组。这个功能通常用于文件共享(目录所属组中的所有用户都可以修改文件)。就像 setuid 一样setgid 位很容易识别(我们用 test 目录举例):
```
ls -ld test
drwxrwsr-x. 2 egdoc egdoc 4096 Nov 1 17:25 test
```
这次 `s` 出现在组权限的可执行位上。
### sticky 位
Sticky 位的工作方式有所不同:它对文件没有影响,但当它在目录上使用时,所述目录中的所有文件只能由其所有者删除或移动。一个典型的例子是 `/tmp` 目录,通常系统中的所有用户都对这个目录有写权限。所以,设置 sticky 位使用户不能删除其他用户的文件:
sticky (粘连)位的工作方式有所不同:它对文件没有影响,但当它在目录上使用时,所述目录中的所有文件只能由其所有者删除或移动。一个典型的例子是 `/tmp` 目录,通常系统中的所有用户都对这个目录有写权限。所以,设置 sticky 位使用户不能删除其他用户的文件:
```
$ ls -ld /tmp
drwxrwxrwt. 14 root root 300 Nov 1 16:48 /tmp
```
在上面的例子中,目录所有者、组和其他用户对该目录具有完全的权限(读、写和执行)。Sticky 位在可执行位上用 `t` 来标识。同样,小写的 `t` 表示可执行权限 `x`也被设置了,否则你会看到一个大写字母 `T`
在上面的例子中,目录所有者、组和其他用户对该目录具有完全的权限(读、写和执行)。sticky 位在可执行位上用 `t` 来标识。同样,小写的 `t` 表示可执行权限 `x`也被设置了,否则你会看到一个大写字母 `T`
### 如何设置特殊权限位
@ -87,7 +81,7 @@ $ chmod g+s test
$ chmod u+s file
```
要设置 Sticky 位,可运行:
要设置 sticky 位,可运行:
```
$ chmod o+t test
@ -101,7 +95,7 @@ via: https://linuxconfig.org/how-to-use-special-permissions-the-setuid-setgid-an
作者:[Egidio Docile][a]
译者:[jessie-pang](https://github.com/jessie-pang)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,41 +1,53 @@
用示例讲解 Linux Gunzip 命令
用示例讲解 Linux gunzip 命令
======
我们已经讨论过[ Linux 下 **gzip** 命令的用法 ][1]。对于初学者来说gzip 工具主要用于压缩或者展文件。解压时,在 gzip 命令后添加 -d 选项,使用示例如下:
我们已经讨论过 [Linux 下 gzip 命令的用法][1]。对于初学者来说,`gzip` 工具主要用于压缩或者展文件。解压时,在 `gzip` 命令后添加 `-d` 选项即可,使用示例如下:
```
gzip -d [compressed-file-name]
```
不过,在解压或扩展 gzip 创建的压缩文件时,有另一款完全不同的工具可供使用。谈及的这款工具就是 **gunzip**。在本文中,我们会使用一些简单、易于理解的例子来解释 gunzip 命令的用法。文中所有示例及指南都在 Ubuntu 16.04 环境下测试。
不过,在解压或扩展 gzip 创建的压缩文件时,有另一款完全不同的工具可供使用。谈及的这款工具就是 `gunzip`。在本文中,我们会使用一些简单、易于理解的例子来解释 `gunzip` 命令的用法。文中所有示例及指南都在 Ubuntu 16.04 环境下测试。
### Linux gunzip 命令
我们现在知道压缩文件可以用 'gzip -d' 或 gunzip 命令解压。基本的 gunzip 语法为:
我们现在知道压缩文件可以用 `gzip -d``gunzip` 命令解压。基本的 `gunzip` 语法为:
```
gunzip [compressed-file-name]
```
以下的 Q&A 例子将更清晰地展示 gunzip 工具如何工作:
以下的 Q&A 例子将更清晰地展示 `gunzip` 工具如何工作:
### Q1. 如何使用 gunzip 解压压缩文件?
解压命令非常简单,仅仅需要将压缩文件名称作为参数传递到 gunzip 命令后。
解压命令非常简单,仅仅需要将压缩文件名称作为参数传递到 `gunzip` 命令后。
```
gunzip [archive-name]
```
比如:
```
gunzip file1.gz
```
[![如何使用 gunzip 解压压缩文件?][2]][3]
### Q2. 如何让 gunzip 不删除原始压缩文件?
正如你已注意到的那样gunzip 命令解压后会删除原始压缩文件。如果你想保留原始压缩文件,可以使用 **-c** 选项。
正如你已注意到的那样,`gunzip` 命令解压后会删除原始压缩文件。如果你想保留原始压缩文件,可以使用 `-c` 选项。
```
gunzip -c [archive-name] > [outputfile-name]
```
比如:
```
gunzip -c file1.gz > file1
```
[![如何让 gunzip 不删除原始压缩文件?][4]][5]
@ -43,26 +55,30 @@ gunzip -c file1.gz > file1
### Q3. 如何用 gunzip 解压文件到其他路径?
在 Q&A 中我们已经讨论过 **-c** 选项的用法。 使用 gunzip 解压文件到工作目录外的其他路径,仅需要在重定向操作符后添加目标目录的绝对路径即可。
在 Q&A 中我们已经讨论过 `-c` 选项的用法。 使用 gunzip 解压文件到工作目录外的其他路径,仅需要在重定向操作符后添加目标目录的绝对路径即可。
```
gunzip -c [compressed-file] > [/complete/path/to/dest/dir/filename]
```
示例如下:
```
gunzip -c file1.gz > /home/himanshu/file1
```
### 更多信息
以下从 gzip/gunzip man page 中摘录的细节,对于想了解更多的人会有所助益。
```
gunzip 用命令行列出文件,并且替换每个以正确的幻数开头,后缀名为.gz-gz.z-z或 _z (忽略) 的压缩文件,删除原始文件。 gunzip 也可识别一些特殊扩展名的压缩文件,如 .tgz 和 .taz 分别是 .tar.gz 和 .tar.Z 的缩写。在压缩时gzip 在必要情况下使用 .tgz 作为扩展名,而不是只截取为 .tar 作为后缀。
以下从 gzip/gunzip 的 man 页中摘录的细节,对于想了解更多的人会有所助益。
gunzip 目前可以解压 gzipzipcompresscompress -Hpack 产生的文件。gunzip 自动检测输入文件格式。在使用前两种压缩格式时gunzip 会检验 32 位循环冗余校验码CRC。对于 pack 包gunzip 会检验压缩长度。标准压缩格式设计上不允许相容性检测。不过 gunzip 有时可以检测出坏的 .Z 文件。如果你解压 .Z 文件时出错,不要因为标准解压没报错就认为 .Z 文件一定是正确的。这通常意味着标准解压过程不检测它的输入而是直接产生一个错误的输出。SCO compress -H 格式lzh 压缩方法)不包括 CRC 校验码,但也允许一些相容性检查。
> `gunzip` 在命令行接受一系列的文件,并且将每个文件内容以正确的魔法数开始,且后缀名为 `.gz`、`-gz`、`.z`、`-z` 或 `_z` (忽略大小写)的压缩文件,用未压缩的文件替换它,并删除其原扩展名。 `gunzip` 也可识别一些特殊扩展名的压缩文件,如 `.tgz``.taz` 分别是 `.tar.gz``.tar.Z` 的缩写。在压缩时,`gzip` 在必要情况下使用 `.tgz` 作为扩展名,而不是只截取掉 `.tar` 后缀。
> `gunzip` 目前可以解压 `gzip`、`zip`、`compress`、`compress -H``pack`)产生的文件。`gunzip` 自动检测输入文件格式。在使用前两种压缩格式时,`gunzip` 会检验 32 位循环冗余校验码CRC。对于 pack 包,`gunzip` 会检验压缩长度。标准压缩格式在设计上不允许相容性检测。不过 `gunzip` 有时可以检测出坏的 `.Z` 文件。如果你解压 `.Z` 文件时出错,不要因为标准解压没报错就认为 `.Z` 文件一定是正确的。这通常意味着标准解压过程不检测它的输入而是直接产生一个错误的输出。SCO 的 `compress -H` 格式lzh 压缩方法)不包括 CRC 校验码,但也允许一些相容性检查。
```
### 结语
到目前为止提到的 gunzip 基本用法,并不需要过多的学习曲线。我们已包含了一个初学者开始使用它所必须了解的几乎全部知识。想要了解更多的用法,去看 [man page][6] 吧。
到目前为止提到的 `gunzip` 基本用法,并不需要过多的学习曲线。我们已包含了一个初学者开始使用它所必须了解的几乎全部知识。想要了解更多的用法,去看 [man 页面][6] 吧。
--------------------------------------------------------------------------------
@ -71,7 +87,7 @@ via: https://www.howtoforge.com/linux-gunzip-command/
作者:[Himanshu Arora][a]
译者:[erialin](https://github.com/erialin)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,123 +0,0 @@
如何在 Linux/Unix 之上绑定 ntpd 到特定的 IP 地址
======
默认的情况下,我们的 ntpd/NTP 服务器会监听所有的端口或者 IP 地址也就是0.0.0.0:123。 怎么才可以在一个 Linux 或是 FreeBSD Unix 服务器上,确保只监听特定的 IP 地址,比如 localhost 或者是 192.168.1.1:123
NTP 是网络时间协议的首字母简写这是一个用来同步两台电脑之间时间的协议。ntpd 是一个操作系统守护进程,可以设置并且保证系统的时间与互联网标准时间服务器同步。
[![如何在Linux和Unix服务器防止 NTPD 监听0.0.0.0:123 并将其绑定到特定的 IP 地址][1]][1]
NTP使用 `/etc/directory` 之下的 `ntp.conf`作为配置文件。
## /etc/ntp.conf 之中的端口指令
你可以通过设置端口命令来防止 ntpd 监听 0.0.0.0:123语法如下
```
interface listen IPv4|IPv6|all
interface ignore IPv4|IPv6|all
interface drop IPv4|IPv6|all
```
上面的配置可以使 ntpd 监听或者断开一个网络地址而不需要任何的请求。**这样将会** 举个例子,如果要忽略所有端口之上的监听,加入下面的语句到`/etc/ntp.conf`
The above configures which network addresses ntpd listens or dropped without processing any requests. **The ignore prevents opening matching addresses, drop causes ntpd to open the address and drop all received packets without examination.** For example to ignore listing on all interfaces, add the following in /etc/ntp.conf:
`interface ignore wildcard`
如果只监听 127.0.0.1 和 192.168.1.1 则是这样:
```
interface listen 127.0.0.1
interface listen 192.168.1.1
```
这是我 FreeBSD 云服务器上的样例 /etc/ntp.conf 文件:
`$ egrep -v '^#|$^' /etc/ntp.conf`
样例输出为:
```
tos minclock 3 maxclock 6
pool 0.freebsd.pool.ntp.org iburst
restrict default limited kod nomodify notrap noquery nopeer
restrict -6 default limited kod nomodify notrap noquery nopeer
restrict source limited kod nomodify notrap noquery
restrict 127.0.0.1
restrict -6 ::1
leapfile "/var/db/ntpd.leap-seconds.list"
interface ignore wildcard
interface listen 172.16.3.1
interface listen 10.105.28.1
```
## 重启 ntpd
在 FreeBSD Unix 之上重新加载/重启 ntpd
`$ sudo /etc/rc.d/ntpd restart`
或者 [在Debian和Ubuntu Linux 之上使用下面的命令][2]:
`$ sudo systemctl restart ntp`
或者 [在CentOS/RHEL 7/Fedora Linux 之上使用下面的命令][2]:
`$ sudo systemctl restart ntpd`
## 校验
使用 `netstat``ss` 命令来检查 ntpd只绑定到了特定的 IP 地址:
`$ netstat -tulpn | grep :123`
或是
`$ ss -tulpn | grep :123`
样例输出:
```
udp 0 0 10.105.28.1:123 0.0.0.0:* -
udp 0 0 172.16.3.1:123 0.0.0.0:* -
```
使用
使用 [socksata命令FreeBSD Unix 服务群)][3]:
```
$ sudo sockstat
$ sudo sockstat -4
$ sudo sockstat -4 | grep :123
```
样例输出:
```
root ntpd 59914 22 udp4 127.0.0.1:123 *:*
root ntpd 59914 24 udp4 127.0.1.1:123 *:*
```
## Vivek Gite 投稿
这个作者是 nixCraft 的作者并且是一位经验丰富的系统管理员,也是一名 Linux 操作系统和 Unix shell 脚本的训练师。他为全球不同行业,包括 IT、教育业、安全防护、空间研究和非营利性组织的客户工作。关注他的 [Twitter][4], [Facebook][5], [Google+][6]。
--------------------------------------------------------------------------------
via: https://www.cyberciti.biz/faq/how-to-bind-ntpd-to-specific-ip-addresses-on-linuxunix/
作者:[Vivek Gite][a]
译者:[Drshu](https://github.com/Drshu)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.cyberciti.biz
[1]:https://www.cyberciti.biz/media/new/faq/2017/10/how-to-prevent-ntpd-to-listen-on-all-interfaces-on-linux-unix-box.jpg
[2]:https://www.cyberciti.biz/faq/restarting-ntp-service-on-linux/
[3]:https://www.cyberciti.biz/faq/freebsd-unix-find-the-process-pid-listening-on-a-certain-port-commands/
[4]:https://twitter.com/nixcraft
[5]:https://facebook.com/nixcraft
[6]:https://plus.google.com/+CybercitiBiz