本文介绍linux 系统服务管理的相关内容,供大家学习参考。
Linux系统服务可以分为三类:
1、由init控制的服务
2、由System V启动脚本启动的服务
3、由xinetd管理的服务
下面介绍这三种系统服务:
一.Init控制的服务
Init的配置文件在/etc/inittab这个文件中。
二.System V服务
经常使用几个配置文件,大多数服务启动一个或多个进程。都是独立启动服务。
在/etc/init.d/下面的脚本都是system V服务。
[root@localhost ~]# cd /etc/init.d/
[root@localhost init.d]# ls
acpid functions kudzu nscd setroubleshoot
anacron gpm libvirtd ntpd single
apmd haldaemon LVM2-monitor pand smartd
atd halt mcstrans pcscd sshd
auditd hidd mdmonitor portmap syslog
autofs hplip mdmpd psacct vmware-tools
avahi-daemon ip6tables messagebus rawdevices vncserver
avahi-dnsconfd ipmi microcode_ctl rdisc vsftpd
bluetooth ipmievd multipathd readahead_early wdaemon
conman iptables named readahead_later winbind
cpuspeed irda netconsole restorecond wpa_supplicant
crond irqbalance netfs rhnsd xend
cups iscsi netplugd rpcgssd xendomains
cups-config-daemon iscsid network rpcidmapd xfs
dnsmasq kdump NetworkManager rpcsvcgssd xinetd
dund killall nfs saslauthd ypbind
firstboot krb524 nfslock sendmail yum-updatesd
[root@localhost init.d]#
在这个里面的所有脚本都是system V的服务。
如果想运行这些服务,可以使用两种方式,
#/etc/init.d/vsftpd restart
[root@localhost ~]#
[root@localhost ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@localhost ~]#
直接使用脚本的方式来运行,还有一种方式,
#service vsftpd restart
[root@localhost ~]#
[root@localhost ~]# service vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@localhost ~]#
使用service命令来调用脚本。
如何控制系统服务呢?
我们一般使用chkconfig工具来管理,
我们可以使用chkconfig工具来定义那个服务运行在那个级别上面。
#chkconfig --list
这条命令会显示系统中所有的系统服务,输出很多。后面可以跟查询的服务。
# Chkconfig --list vsftpd
[root@localhost ~]#
[root@localhost ~]# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#
通过chkconfig工具可以查询到vsftpd这个服务在下次启动的时候在2,3,4,5这四个级别上面是启动的。
如何定义系统服务在下次启动的时候在那个级别启动呢?
现在我们定义vsftpd服务在下次启动的时候在3,5级别启动。
现在我们的vsftpd服务在下次启动的时候就会在3和5的级别启动。
如果我们不加任何级别,直接将vsftpd服务给off。
现在在所有的级别上面,vsftpd服务就off了。
将vsftpd服务直接给on
那么就会在2,3,4,5级别上面启动。因为在0,1,6级别启动没有意义。
这条命令也是我们最长用到的。
我们可以添加服务或者删除服务在chkconfig的管理程序里面。
删除一个服务在chkconfig的管理程序里面,
Vsftpd这个服务就从chkconfig的管理程序里面删除了,通过chkconfig --list命令也查询不到了。
添加一个服务到chkconfig的管理程序里面
OK,vsftpd服务就被成功的添加到了chkconfig的管理程序里面。
注意:service vsftpd restart这条命令是使vsftpd服务在当前生效,下次启动不生效。而chkconfig工具开启的服务是在下次生效。
Chkconfig vsftpd on这条命令一定要敲。
关于/etc/sysconfig下面的文件,
/etc/sysconfig这个目录我们并不陌生了,这个目录下面的所有文件都是全局配置文件。我们很多的服务都在/etc/sysconfig下面有全局的配置文件。
三.Xinetd管理的服务
我们由xinetd管理的服务都在/etc/xinetd/下面。
这个目录下面的服务都是由Xinetd来管理的。
可以看到,在这个目录下面有个telnet。也就是说telnet是由xinetd来管理的。
现在我们打开这个文件来看看。
在telnet的配置文件里面有个disable = yes,是不是关闭这个服务呢,yes。
现在我们将它改成no,不关闭。
那么我们如何重新启动这个服务呢。
使用service telnetd restart来试试,
好像不行,因为telnet不是system V的服务,不可能会调用/etc/init.d下面的脚本。
telnet服务是属于xinetd服务的,我们重启下xinetd服务,试试。
OK,xinetd服务启动成功。
因为xinetd服务也是属于system V服务,所以可以用service来启动。
我们知道telnet的端口号是23,我们来查询这个端口有没有监听。
可以看到,telnet服务的确是监听在23号端口的。并且是由xinetd来管理的。
现在我们来测试一下
同样的,我们也可以使用chkconfig来管理telnet。
关于system V服务和xinetd管理的服务,
System V 占用资源,反应速度快。
Xinted 占用资源少,反应速度慢。
Xinetd的全局配置文件在/etc/xinetd.conf文件,
/etc/xinetd.d/service这个是xinetd服务的配置文件。
以xinetd服务自己定义的为准,如果xinetd服务没有定义的条目,就会继承全局配置文件中定义的条目。
首先来看看全局配置文件,
Enabled = yes or no
开启或者关闭,
Instances = 50
最多可以管理50个请求,
Per_source = 10
每个单一的IP仅可以访问10次,
V6only
是否启用ipv6,
log_on_failure = HOST
当访问我失败,记录主机名。
Log_on_success = PID HOST DURATION EXIT
当访问我成功了,就记录这些信息。
Cps =50 10
当连接到我的计算机上面的用户超过50,就暂停10S。
在来看看xinetd服务的配置文件,
Service telnet
服务的名字
Disable = yes or no
是否开启telnet
Socket_type = stream
类型是TCP
Wait = no
是否等待
User = root
服务的管理者是root
Log_on_failure += USERID
登录失败,记录用户的uid。
下面就是关于xinetd服务的访问控制,
语法:
使用only_from 来定义允许访问,
使用no_access来定义禁止访问。
Only_from代表仅允许那些人来访问,
No_access代表不允许那些人访问。
关于xinetd服务访问控制的主机模式
192.168.0.10 主机
192.168.0.0/24 网段
Station10.example.com. 主机名
.example.com 域名
现在我们来做试验,
现在我们是可以telnet到192.168.0.254上面的。
现在我们对telnet来做访问控制,
我们拒绝192.168.0.10进行telnet到192.168.0.254。
然后重启下xinetd服务,
服务启动成功,测试下,
OK,可以看到,连接就被拒绝了。
那192.168.0.20可以telnet到192.168.0.254上面吗。试试
是可以的,我们只是拒绝了192.168.0.10进行telnet到192.168.0.254。
所以192.168.0.20是可以的。
如果有这样的情况呢?
Only_from 192.168.0.0/24
No_access 192.168.0.20
那么192.168.0.20最终可以访问吗?
我们来尝试一下。
配置OK,重启下服务,
[root@localhost ~]#
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
服务启动成功,测试下,
可以看到,192.168.0.20最终还是不可以telnet到192.168.0.254上面去的。
那么192.168.0.10可以telnet吗?
OK,192.168.0.10是没有问题的,可以telnet到192.168.0.254上面去。
我们允许192.168.0.0/24这个网段里面所有的主机,但是拒绝192.168.0.10这台主机。
这个访问控制还可以支持访问时间的控制。
Access_times = 8:00-12:00
[root@localhost ~]#
[root@localhost ~]# cat /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses
# unencrypted username/password pairs for authentication.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
access_times = 8:00-12:00
}
[root@localhost ~]#
配置就OK,重启下服务,
[root@localhost ~]#
[root@localhost ~]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
服务启动成功,测试下,
192.168.0.10是不可以telnet到192.168.0.254上面去的,因为访问时间限制了。
至此,RHEL5.4系统服务管理的相关知识就介绍完了,希望对大家有所帮助。