、Linux守护进程与初始化进程

1. 什么是守护进程

Linux服务器的主要任务就是为本地或远程用户提供各种服务。通常Linux系统上提供服务的程序是由运行在后台的守护进程(Daemon)来执行。一个实际运行中的Linux系统一般会有多个这样的程序在运行。这些后台守护进程在系统开机后就运行了,并且在时刻地监听前台客户地服务请求,一旦客户发出了服务请求,守护进程便为它们提供服务。Windows系统中的守护进程被称为“服务”。

按照服务类型,守护进程可以分为如下两类:

系统守护进程:如crond(周期任务)、rsyslogd(日志服务)、cpus等;

网络守护进程:如sshd、httpd、xinetd(托管)等。

2. 什么是守护进程

系统初始化进程是一个特殊的的守护进程,其PID为1,它是所有其他守护进程的父进程或者祖先进程。也就是说,系统上所有的守护进程都是由系统初始化进程进行管理的(如启动、停止等)。

在Linux的发展历史过程中,使用过3种Linux初始化系统。

SysVinit

为 UNIX System V 系统创建的;

RHEL/CentOS 5及之前的版本一直使用。

Upstart

由Ubuntu创建的;

RHEL/CentOS 6 使用Upstart。

Systemd

先进的初始化系统;

RHEL/CentOS 7使用Systemd。

二、Linux独立启动和超级守护进程

如果用两个比喻来形容两类守护进程的话,一般会用银行的业务处理窗口来类比:

独立启动守护进程:银行里有一种单服务的窗口,像取钱,存钱等窗口,这些窗口边上始终会坐着一个人,如果有人来取钱或存钱,可以直接到相应的窗口去办理,这个处理单一服务的始终存在的人就是独立启动的守护进程。

超级守护进程:银行里还有一种窗口,提供综合服务,像汇款,转账,提款等业务;这种窗口附近也始终坐着一个人(xinet),她可能不提供具体的服务,提供具体服务的人在里面闲着聊天啊,喝茶啊,但是当有人来汇款时他会大声喊一句,小王,有人汇款啦,然后里面管汇款的小王会立马跑过来帮忙办完汇款业务。其他的人继续聊天,喝茶。这些负责具体业务的人我们就称之为超级守护进程。当然可能汇款人会有一些规则,可能不能往北京汇款,他就会提早告诉xinet,所以如果有人来汇款想汇往北京的话,管理员就直接告诉他这个我们这里办不到的,于是就根本不会去喊汇款员了,相当于提供了一层管理机制。

针对这种窗口还存在多线程和单线程的区别:

多线程:将所有用户的要求都提上来,里面的人都别闲着了,都一起干活吧;

单线程:大家都排好队了,一个一个来,里面的人同一时间只有一个人在工作。

三、Linux守护进程运行方式

1. 独立运行(stand-alone)的守护进程

独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进程,包括syslogd和cron等。独立运行的守护进程的工作方式称做stand-alone,它是UNIX传统的C/S模式的访问模式。

2.xinetd模式运行独立的守护进程

从守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这意味着资源浪费。为了解决这个问题,Linux引进了"网络守护进程服务程序"的概念。也就是xinted(extended internet daemon)。xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口的不同,启动不同的网络服务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的守护进程。xinetd无时不在运行并监听它所管理的所有端口上的服务。当某个要连接它管理的某项服务的请求到达时,xinetd就会为该服务启动合适的服务器。

四、Xinetd托管服务简介

Xinetd 托管服务。又名:超级守护进程,可以把一些小服务放到xinetd里进行托管。拖管后的好处就是可以使用xinetd强大的参数来控制这些服务,并且增强安全性。(比如一个小服务没有一些控制功能,但支持xinetd拖管,你就可以拖管并使用xinetd的参数来控制它)。

Xinetd提供类似于inetd + TCP Wrappers的功能,但是更加强大和安全。后面xinetd已经取代了inetd,并且提供了访问控制、加强的日志和资源管理功能。

TCP Wrappers是一个应用层的访问控制程序,其原理是在服务器向外提供的TCP服务上包裹一层安全检测机制。外来的连接请求首先要通过这层安全检测,获得认证之后才能被系统服务接收。TCP Wrappers的功能有两种实现方式:一种是由tcpd守护进程实现的,常被用于inetd + TCP Wrappers的系统中(如FreeBSD等);另一种是通过每种服务程序调用libwrap.so链接库实现的,即libwrap.so库支持的网络服务程序都能使用TCP Wrappers来实现访问控制,常用于xinetd + TCP Wrappers的系统中(如CentOS等)。

在CentOS中,TCP Wrappers一般是默认安装的,若未安装成功,可以使用如下命令安装:

#  yum  –y  install  tcp_wrappers                 --安装tcp_wrappers

五、Xinetd 服务的搭建与配置

1. 配置xinetd的方法

安装xinetd服务

#  yum  -y  install  xinetd*                            --使用yum安装

xinetd服务的主配置文件: /etc/xinetd.conf     --保持默认即可

用于存放被托管的服务的目录:/etc/xinetd.d/

#  systemctl  enable  xinetd.service             --开机启用xinetd服务

查看服务是否开机启动:

#  systemctl  list-unit-files                                --列出各种服务开机是否启动

#  systemctl  list-unit-files  |  grep  xinetd       --列出xinetd服务是否开机启动

#  systemctl  is-enabled  xinetd                       --列出xinetd服务是否开机启动

2. 配置实例

例1:以sshd为例,把sshd拖管到xinetd下

sshd服务也有配置文件,为/etc/ssh/sshd_config;但此配置文件功能有限,可以选择拖管sshd服务,来实现额外的功能。

托管前先关闭ssh本身提供的服务

#  systemctl  stop  sshd.service                    --关闭ssh服务
#  systemctl  disable  sshd.service                --设置为开机不启动(注意:如果你关闭xinetd之后,需要把ssh服务重新启动,不然你不能通过ssh远程连接)

下面开始配置ssh被xinetd托管

#  vim  /etc/xinetd.d/ssh                             --默认是没有这个文件的,需要创建

service ssh                             # 代表被托管服务的名称
{disable = no                    # 是否禁用托管服务,no表示开启托管服务log_on_failure += USERID        # 设置失败时,UID添加到系统登记表socket_type = stream            # socket连接方式,这个是属于本地方式,对ssh无效server_args = --daemon          # 设置服务启动时需要的参数       cps = 25 30                     # 每秒25个入站连接,如果超过限制,则等待30秒。主要用于对付拒绝服务攻击protocol = tcp                  # 代表ssh走的是tcp协议连接wait = no                       # 是否并发,这个参数对ssh无效user = root                     # 以什么用户进行启动server = /usr/sbin/sshd         # 被托管服务的启动脚本server_args = -i                # 启动脚本的参数
}

#  systemctl  restart  xinetd.service    --重新启动xinetd服务

#  lsof  -i:22                                        --ssh的默认端口为22,可以通过/etc/services查看各个服务的端口

--查看22端口的进程,由sshd变为了xinetd就表示你拖管成功了

例2:(上面的例子并没有看出拖管与不拖管的区别)

下面在例1 的基础上加上对IP或网段的访问控制功能,这个是ssh服务本身不具备的功能(除非写iptables)

#  vim  /etc/xinetd.d/ssh

service ssh
{disable = nolog_on_failure += USERIDsocket_type = streamserver_args = --daemoncps = 25 30protocol = tcpwait = nouser = rootserver = /usr/sbin/sshdserver_args = -ionly_from = 192.168.1.0/24              # 表示允许1网段访问no_access = 192.168.1.20 192.168.1.200  # 表示只能1网段访问,但1网段里的20和200这两IP不能访问
}

#  systemctl  restart  xinetd.service    --重新启动xinetd服务

修改后重新启动xinetd服务再去客户端进行测试

#  ifconfig   ens33                              --查看客户端IP

#  ssh  192.168.1.88                           --ssh连接服务器

IP为192.168.1.88的拒绝客户端远程连接。因为在服务器里面做了xinetd托管设置:192.168.1.20的IP不能连接服务器。

例3:在例2 的基础再加一些功能(man xinetd.conf)

1、控制这个服务最多只能3个连接,每个源IP只能1个连接;

2、控制只能9:00到18:00才能ssh连接;

3、指定日志记录到/var/log/xinetd_ssh.log里。

#  vim  /etc/xinetd.d/ssh

service ssh
{disable = nolog_on_failure += USERIDsocket_type = streamserver_args = --daemoncps = 25 30protocol = tcpwait = nouser = rootserver = /usr/sbin/sshdserver_args = -ionly_from = 192.168.1.0/24no_access = 192.168.1.20 192.168.1.200instances = 3                                   # 最大连接数为3per_source = 1                                  # 每个源IP只能有1个连接access_times = 9:00-18:00                       # 只能9:00到18:00才能ssh连接log_type = file /var/log/xinetd_ssh.log         # 指定日志记录到/var/log/xinetd_ssh.log里
}

#  systemctl  restart  xinetd.service    --重新启动xinetd服务

修改好以后大家在客户端进行测试,修改时间,查看log_type指定的路径下是否有xinetd_ssh.log。这里就不一一举列验证了。

例4:修改ssh服务的连接端口

(1)修改ssh服务的连接端口

#  vim  /etc/xinetd.d/ssh

service ssh
{disable = nolog_on_failure += USERIDsocket_type = streamserver_args = --daemoncps = 25 30protocol = tcpwait = nouser = rootserver = /usr/sbin/sshdserver_args = -ionly_from = 192.168.1.0/24no_access = 192.168.1.20 192.168.1.200instances = 3per_source = 1                    access_times = 9:00-18:00log_type = file /var/log/xinetd_ssh.logport = 7722                             # 指定ssh的连接端口为7722
}

(2)将ssh服务的端口改为7722

#  vim  /etc/services                                                                                                   --修改ssh服务端口
   46 ssh             7722/tcp                          # The Secure Shell (SSH) Protocol          --将ssh的tcp端口改为7722

47 ssh             7722/udp                          # The Secure Shell (SSH) Protocol         --将ssh的udp端口改为7722

注意:这个端口7722不能和其他服务的端口相同,可以在/etc/services文件中查找是否有只有ssh的端口为7722。

端口改了以后,客户端访问是要使用ssh 192.168.1.88  -p  7722,但我自己连自己不用加-p 7722,因为我默认就是用7722来连接。这也就是说/etc/services里的端口也决定了你做为客户端去访问别人的默认端口。

重启xinetd服务后通过lsof  -i:7722来查看ssh是否被托管

(3)配置文件改动后需要重启xinetd服务

#  systemctl  restart  xinetd.service              --重新启动xinetd服务

(4)验证以上配置的参数是否生效

服务器:自己连接自己,不需加端口号

客户端:需要加端口号

(5)测试完后将端口改回22

#  vim  /etc/services                                                                                               --修改ssh服务端口
   46 ssh             22/tcp                          # The Secure Shell (SSH) Protocol          --将ssh的tcp端口改回22

47 ssh             22/udp                          # The Secure Shell (SSH) Protocol         --将ssh的udp端口改回22

#  systemctl  restart  xinetd.service                                                                       --重新启动xinetd服务

六、Xinetd 时间同步

由于硬件的原因,机器或多或少的根标准时间对不上,一个月的误差几秒到几分钟不等。对于服务器来说时间不准,会有很多麻烦。那么我们就使用Xinetd搭建时间同步服务器。

#  yum  -y  install  xinetd*                            --使用yum安装

#  vim  /etc/xinetd.d/time-dgram        --udp
  6         disable         = no                                --将yes改为no

#  vim  /etc/xinetd.d/time-stream        --tcp
  6         disable         = no                                --将yes改为no

#  systemctl  restart  xinetd.service                 --重新启动xinetd服务
#  lsof  -i:37

客户端要同步服务器时间,用下面的命令就可以了

#  rdate  -s  192.168.1.88                                --这里写服务器的IP

总结:如果你想实现你公司服务器的所有时间与北京时间一致。可以用一台能上外网的服务器去同步公网上的时间服务器,然后把这台也配置成时间服务器,其它的机器通过内网定时同步就可以了。

本文内容来自《鸟哥的私房菜》
=========================
先來看一看預設的 /etc/xinetd.conf 這個檔案的內容是什麼吧!

[root@linux ~]# vi /etc/xinetd.conf
#
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{instances        = 60              <==同一服務的同時連線數最多可達 60 個log_type         = SYSLOG authpriv <==登錄後,會被紀錄到登錄檔的資訊log_on_success   = HOST PID        <==若成功的登入時,記錄的資訊有哪些?log_on_failure   = HOST            <==若登入失敗,則記錄的資訊又是如何?cps              = 25 30           <==同一秒鐘內最大連線數量為 25 個,若超過 25 個,則該服務會暫時停止 30 秒!
}includedir /etc/xinetd.d <==更多的設定值在 /etc/xinetd.d 那個目錄內

基本上,這個預設參數檔的意義是:『 當某個使用 super daemon 管理的服務啟動時,除非該服務已經設定好管理的項目,否則將以上述 xinetd.conf 內的預設參數帶入。』的意思,也就是說,這僅是預設值, 但我們可以自行指定新的設定值來取代 xinetd.conf 內的預設值啦! 也就是說,這個檔案設定成,在預設的狀態下『: 一個服務最多可達 60 個連線,且同一秒內連接上的連線不可超過 25 個。而若登入的成功與否時, 會分別記錄不同的資訊到登錄檔當中。』這樣說,可以比較清楚了吧? ^_^ 至於更多的參數說明,我們會在底下再強調的!

既然這只是個預設參數檔,那麼自然有更多的服務參數檔案囉~沒錯~而所有的服務參數檔都在 /etc/xinetd.d 裡面,這是因為上表當中的最後一行啊!這樣瞭了吧! ^_^。 那麼每個參數檔案的內容是怎樣呢?一般來說,他是這樣的:

service  <service_name>
{<attribute>   <assign_op>   <value>   <value> ................
}

第一行一定都有個 service ,至於那個 <service_name> 裡面的內容, 則與 /etc/services 有關,因為他可以對照著 /etc/services 內的名稱與 port number 來決定所要啟用的 port 是那個啊!然後相關的參數就在兩個大刮號中間。 attribute 是一些 xinetd 的管理參數, assign_op 則是參數的設定方法。 assign_op 的主要設定形式為:  = : 表示後面的設定參數就是這樣啦!
+= : 表示後面的設定為『在原來的設定裡頭加入新的參數
-+ : 表示後面的設定為『在原來的參數捨棄這裡輸入的參數!』 用途不太相同,敬請留意呦!好了!底下再來說一說那些 attribute 與 value !

attribute
(功能)
assing_op
(允許的動作)
說明與範例
一般設定項目:
disable yes
no
允許該 server 可以執行或者是不能執行!當設定為 yes 表示該服務不能執行! 這個設定是一定要的啦。如果我想要啟動某個服務,那麼這裡就要設定成為: disable = no
socket_type stream
dgram
raw
stream 為連線機制較為可靠的 TCP 封包,若為 UDP 封包則使用 dgram 機制。 raw 代表 server 需要與 IP 直接對談!例如 telnet 使用 TCP ,所以: socket_type = stream
protocol tcp
udp
....
這個東西說的是,連線的狀態使用的是哪一種協定!?各個協定的代號可以參考 /etc/protocols 內容!此外,除非是你自己設定的服務,否則這個可以不用設定啦!
wait yes
no
這就是我們剛剛提到的 Multi-threaded 與 single-threaded 的方式啦!一般來說,我們希望大家的要求都可以同時被啟用,所以可以設定 wait = no
user UID
root
還記得我們在 帳號管理 那一篇提到的 UID 概念嗎?對啦!這個 UID 就是那個 UID 啦!要注意的是,假如你的服務啟動者不要以 root 為主的話,那麼這個地方就可以改變其他的使用者,例如 nobody !這個咚咚也會有安全防護的機制存在!此外,需要注意這個 UID 必須存在於 /etc/passwd 。
group GID 跟 user 的意思相同!只是這個 GID 的使用者也必須存在於 /etc/group 當中!
instances number
UNLIMITED
這個是『在同一時間之內,同一個服務可以允許的連線數目』的意思, 你可以寫入一個『數字』來控制連線數目,也可以使用 UNLIMITED 來告訴系統『沒有上限』囉!例如你在同時段之內僅允許 ftp 連線有 30 個,那麼這裡就可以輸入 30 啦!
nice -19 ~ 19 還記得我們在 程序管理 裡面談到的那個 nice 指令嗎?!對啦!這裡就是這個東西囉!數字越小( 負值 )代表該程序越優先被執行!
server program
完整檔名
這個就是指出這個服務的啟動程式!例如要啟動 telnet 的話,其實就是 in.telnetd 這支程式啦!所以這個時候在這裡輸入 server = /usr/sbin/in.telnetd
server_args program
一些參數
這裡應該輸入的就是你的 server 那裡需要輸入的一些參數啦!例如 in.telnetd 當中,我們還可以加入某些參數!
log_on_success PID
HOST
USERID
EXIT
DURATION
在『成功登入』之後,需要記錄的項目:PID 為紀錄該 server 啟動時候的 process ID , HOST 為遠端主機的 IP、USERID 為登入者的帳號、EXTI 為離開的時候記錄的項目、 DURATION 為該使用者使用此服務多久?
log_on_failure HOST
USERID
ATTEMPT
RECORD
當登入失敗之後被 syslog 登入的項目:HOST為遠端主機的 IP,USERID為登入者帳號、 ATTEMPT為記錄登入失敗者企圖的意圖為何、RECORD為記錄遠端主機的資訊!以及為何本機 server 不能啟動的原因!主要有 login, shell, exec, finger 等指令可以使用在這裡!( 基本上,可以在 /etc/hosts.allow 或 /etc/hosts.deny 書寫內容 )。
進階設定項目:
env 'name=value' 這一個項目可以讓你設定環境變數,環境變數的設定規則可以參考 認識 BASH Shell 。
port number 這裡可以設定不同的服務與對應的 port ,但是請記住你的 port 與服務名稱必須與 /etc/services 內記載的相同才行!
redirect IP_Address port 將 client 端對我們 server 的要求,轉到另一部主機上去!呵呵!這個好玩呦! 例如當有人要使用你的 ftp 時,你可以將他轉到另一部機器上面去!那個 IP_Address 就代表另一部遠端主機的 IP 囉!
includedir directory 表示將某個目錄底下的所有檔案都給他塞進來 xinetd.conf 這個設定裡頭!這東西有用多了, 如此一來我們可以一個一個設定不同的項目!而不需要將所有的服務都寫在 xinetd.conf 當中!你可以在 /etc/xinetd.conf 發現這個設定呦!
安全控管項目:
bind IP_Address 這個是設定『允許使用此一服務的介面卡』的意思!舉個例子來說,你的 Linux 主機上面有兩個 IP ,而你只想要讓 IP1 可以使用此一服務,但 IP2 不能使用此服務,這裡就可以將 IP1 寫入即可!那麼 IP2 就不可以使用此一 server 囉
interface IP_Address 與 bind 相同
only_from 0.0.0.0
192.168.1.0/24
host_name
domain_name
這東西用在安全機制上面,也就是管制『只有這裡面規定的 IP 或者是主機名稱可以登入!』如果是 0.0.0.0 表示所有的 PC 皆可登入,如果是 192.168.1.0/24 則表示為 C class 的網域!亦即由 192.168.1.1 ~ 192.168.1.255 皆可登入!另外,也可以選擇 domain name ,例如 .ev.ncku.edu.tw 就可以允許成大環工系的網域 IP 登入你的主機使用該 server !
no_access 0.0.0.0
192.168.1.0/24
host_name
domain_name
跟 only_from 差不多啦!就是用來管理可否進入你的 Linux 主機啟用你的 server 服務的管理項目! no_access 表示『不可登入』的 PC 囉!
access_times 00:00-12:00
HH:MM-HH:MM
這個項目在設定『該服務 server 啟動的時間』,使用的是 24 小時的設定!例如你的 ftp 要在 8 點到 16 點開放的話,就是: 08:00-16:00。
umask 000
777
022
還記得在 檔案權限 裡面約略提過的 umask 這個東西嗎?呵呵!沒錯!就是那個鬼玩意兒囉! 可以設定使用者建立目錄或者是檔案時候的屬性!系統建議值是 022 。

OK!我們就利用上面這些參數來架構出我們所需要的一些服務的設定吧! 參考看看底下的設定方法囉! 我們說過,使用 super daemon 來管理主機,最大的優點就是多了一道管理的手續, 所以,可以進行比較多的監控動作,像上一個小節我們提到的相關參數當中, 就能夠發現到一些端倪了。在這裡,我們舉個簡單的例子來說明一下整個 super daemon 的管理吧!但是要設定 telnet 的話,就得要安裝 telnet 才行。 在 FC4 的版本上,我們安裝的是 telnet-server-0.17-35 這個套件資料, 請您先以  rpm 的方式 來安裝喔! ^_^


在預設的 /etc/xinetd.d/telnet 內容是這樣的:

[root@linux ~]# vi /etc/xinetd.d/telnet
service telnet
{flags           = REUSE   <==額外的參數使用 REUSE socket_type     = stream  <==使用 TCP 的封包格式wait            = no      <==可以有多個連線同時連進來user            = root    <==啟動者預設為 root server          = /usr/sbin/in.telnetd <==使用的是這支程式!log_on_failure  += USERID <==若登入錯誤,『加計』記錄使用者 IDdisable         = yes     <==此服務預設關閉!
}

其實,主要的參數可以參考上一小節的表格,也可以直接利用『 man xinetd.conf 』來查閱! 不過,如果你對於這樣的設定並不滿意的話,其實還可以手動來修改呢! 因為我們知道, telnet 並不是個十分安全的服務,詳細機制可以參考  伺服器篇 的  遠端連線伺服器 來查閱, 所以,如果你想要更多的安全機制,舉例來說,你想要讓 telnet 在區域網路內與 Internet 上面的連線機制有差異時,例如這樣:

  • 對內部網域開放較多權限的部分:
    假設 Linux 主機有兩張網路卡,對內的這一張 IP 為 192.168.1.100 ,且僅針對 192.168.1.0/24 這個網段提供登入。然後開放所有與 telnet 有關的權限, 包含總連線數量與連線時間等。但是, 192.168.1.120 及 192.168.1.130 兩個 IP 不允許登入;
  • 對外部網域較多限制的設定:
    對外的 IP 假設為 140.116.44.125 ,且僅允許台南的校園網路 (140.116.0.0/16), 以及教育界的主機名稱 (.edu.tw),另外,僅開放早上 1~9 點及 20~24 兩個時段登入而已。 此外,最多容許十個連線進入。

在這樣的規劃情況下,我可以將剛剛上頭的 /etc/xinetd.d/telnet 這個檔案修改成為:

[root@linux ~]# vi /etc/xinetd.d/telnet
# 先針對對內的較為鬆散的限制來設定:
service telnet
{disable         = no                  <==預設就是啟動 telnet 服務bind            = 192.168.1.100       <==只允許經由這個介面卡的封包進來only_from       = 192.168.1.0/24      <==只允許 192.168.0.0/24 這個網段的主機連線進來使用 telnet 的服務no_access       = 192.168.1.{120,130} <==不許這些 PC 登入instances       = UNLIMITED           <==同時允許連線不限制!nice            = 0                   <==使用的優先順序較高flags           = REUSE               <==額外使用的參數socket_type     = stream              <==使用 tcp 封包常用的連線型態wait            = no                  <==不需等待,可以同時允許多個連線user            = root                <==啟動程序的使用者身份server          = /usr/sbin/in.telnetd<==服務啟動的程式server_args     = -a none             <==上面那個程式的參數log_on_failure  += USERID             <==錯誤登入時,要記錄下來的內容
}# 再針對外部的連線來進行限制呢!
service telnet
{disable         = no                  <==預設就是啟動 telnet 服務bind            = 140.116.44.125      <==只允許經由這個介面卡的封包進來only_from       = 140.116.0.0/16      <==只允許 140.116.0.0 ~ 140.116.255.255這個網段連線進來使用 telnet 的服務only_from       = .edu.tw             <==重複設定,只有教務界才能連線!access_times    = 1:00-9:00 20:00-23:59<==每天只有這兩個時段開放服務umask           = 022                 <==建立檔案時的預設屬性設定instances       = 10                  <==同時只允許 10 個連線nice            = 10                  <==使用的優先順序較低flags           = REUSE               <==額外使用的參數socket_type     = stream              <==使用 tcp 封包常用的連線型態wait            = no                  <==不需等待,可以同時允許多個連線user            = root                <==啟動程序的使用者身份server          = /usr/sbin/in.telnetd<==服務啟動的程式server_args     = -a none             <==上面那個程式的參數log_on_failure  += USERID             <==錯誤登入時,要記錄下來的內容
}

在上面這個範例當中,我們用了很多的網路 IP 顯示方式,包括 192.168.1.0/24 , 以及 140.116.0.0/16 ,這代表『 192.168.1.0~192.168.1.255 的所有 IP 』以及 『 140.116.0.0 ~140.116.255.255 所有的 IP 』更詳細的說明,我們會在伺服器篇內詳談的。 用了這個設定值之後,你會發現你的 telnet 針對兩個網段來設計了! 設計完成之後,由於這是 xinetd 的設定檔,所以啟動的方式與觀察的方式為:

# 如果您的 telnet 本來就有啟動的話,那麼會發現有一個連線存在你的系統中
[root@linux ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 0.0.0.0:23      0.0.0.0:*        LISTEN  19255/xinetd
# 看到喔!是 xinetd 的 program name 呢!# 重新修改 /etc/xinetd.d/telnet 之後,重新啟動的方式與觀察為:
[root@linux ~]# /etc/init.d/xinetd restart
[root@linux ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Address  State   PID/Program name
tcp        0      0 140.116.44.125:23  0.0.0.0:*        LISTEN  19281/xinetd
tcp        0      0 192.168.1.100:23   0.0.0.0:*        LISTEN  19281/xinetd
# 有沒有看到兩個介面啊~而且, PID 會是同一個呢!

---------------------
作者:snsdzjlz
来源:CSDN
原文:https://blog.csdn.net/snsdzjlz/article/details/49426167
版权声明:本文为作者原创文章,转载请附上博文链接!

xinetd.d详解相关推荐

  1. vsftpd配置文件详解

      1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用的登陆名为ftp或an ...

  2. Linux系统守护进程详解

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   Linux系统守护进程详解 不要关闭下面这几个服务: acpid, haldaemon, messagebus, klogd, network, ...

  3. [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解

    本篇blog主要讲述了[PXE] linux(centos)PXE无盘服务器搭建,安装,启动及pxe协议详解 , Kickstart (PXE+DHCP+TFTP+HTTP). PXE环境概述 作为中 ...

  4. VSFTP配置参数详解

    文件同步的另一利器FTP Ubuntu下的FTP服务 1. 配置相关服务 启动服务: [root@netseek root]# #rpm –qa | grep vsftpd :查看是否安装vsftpd ...

  5. Linux 高可用(HA)集群之Pacemaker详解

    大纲 说明:本来我不想写这篇博文的,因为前几篇博文都有介绍pacemaker,但是我觉得还是得写一下,试想应该会有博友需要,特别是pacemaker 1.1.8(CentOS 6.4)以后,pacem ...

  6. Centos6上安装cobbler及cobbler常见参数详解

    前言 Cobbler是一个自动化和简化系统安装的工具,通过使用网络引导来控制和启动安装.Cobbler的特性包括存储库镜像.Kickstart模板和连接电源管理系统.使用Cobbler之前需要先了解下 ...

  7. vsftpd配置文件详解 ---配置解说

    vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用 ...

  8. vsftpd配置文件详解[转载]

    vsftpd配置文件详解 1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用 ...

  9. linux应用程序开发数据,《嵌入式linux应用程序开发详解》核心笔记

    [linux快速入门] 自由软件(free software)中的 free 并不是指免费,而是指自由.它赋予使用者四种自由. · 自由之一:有使用软件的自由. · 自由之二:有研究该软件如何运作的自 ...

最新文章

  1. 猫和老鼠服务器维修有问题,猫和老鼠:游戏中大范围的断网掉线问题 玩家:土豆服务器就这样...
  2. asp.net MVC2 初探十一
  3. React组件复用的方式
  4. JenkinsDay18-查看服务器有哪些JOB
  5. 常见算法基础题思路简析(六)-字符串篇
  6. 图像增广——图片旋转任意角度(python实现)
  7. Excel2016如何添加表格边框?分享技巧!怎样在excel加入表格边框?
  8. OpenGL及GLUT---------------函数整理
  9. windows mac谷歌浏览器跨域
  10. 笔记-知识产权与标准化知识-中华人民共和国政府采购法
  11. CHAOS;HEAD 简体中文汉化补丁版 攻略(0.9版)
  12. OpenCV 形态学操作应用——提取水平与垂直线
  13. 面试官:你连RESTful都不知道我怎么敢要你?
  14. 虚幻4地形怎么增加层_虚幻周报20200407 | 在家也要好好工作呀~
  15. 哭的时候没人哄,我学会了坚强
  16. Chino with Rewrite
  17. Java异常:throw 和 throws的区别
  18. 硬盘插到群晖上使用之后再插回Windows就不识别了,记录一次解决过程
  19. 会声会影2021软件如何快速找到最新版下载?
  20. bbddddddddd

热门文章

  1. K_A11_002 基于STM32等单片机驱动DS18B20串口与OLED0.96双显示
  2. 数据可视化 饼图_饼图之外的生活:合适工作的合适可视化效果
  3. 如何在Lyx中添加参考文献,以及生成参考文献目录
  4. 慕课嵌入式开发及应用(第二章.嵌入式硬件构件与底层驱动构件基本规范)
  5. String字符串转JSON对象(JSON的依赖)
  6. python 爬虫模拟点击_爬虫——模拟点击动态页面
  7. C语言switch语句用法总结
  8. ubuntu系统下THETA S 全景相机 通过ROS导出图像
  9. 记录一次es7.8.1报错解决过程 unknown key [column] for create index
  10. 第八次前端培训(JavaScript)