Linux系统服务可以分为三类: 下面介绍这三种系统服务:
一.Init控制的服务
二.System V服务 在这个里面的所有脚本都是system V的服务。
如果想运行这些服务,可以使用两种方式,
直接使用脚本的方式来运行,还有一种方式, 如何控制系统服务呢?
我们一般使用chkconfig工具来管理,
这条命令会显示系统中所有的系统服务,输出很多。后面可以跟查询的服务。
通过chkconfig工具可以查询到vsftpd这个服务在下次启动的时候在2,3,4,5这四个级别上面是启动的。
复制代码代码如下:
# chkconfig --level 35 vsftpd on
[root@localhost ~]# [root@localhost ~]# chkconfig --level 35 vsftpd on [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off [root@localhost ~]# 现在我们的vsftpd服务在下次启动的时候就会在3和5的级别启动。 如果我们不加任何级别,直接将vsftpd服务给off。
复制代码代码如下:
#chkconfig vsftpd off
[root@localhost ~]# [root@localhost ~]# chkconfig vsftpd off [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]# 现在在所有的级别上面,vsftpd服务就off了。 将vsftpd服务直接给on
复制代码代码如下:
#chkconfig vsftpd on
[root@localhost ~]# [root@localhost ~]# chkconfig vsftpd on [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost ~]#
那么就会在2,3,4,5级别上面启动。因为在0,1,6级别启动没有意义。 删除一个服务在chkconfig的管理程序里面,
复制代码代码如下:
#chkconig --del vsftpd
[root@localhost ~]# [root@localhost ~]# chkconfig --del vsftpd [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd service vsftpd supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add vsftpd') [root@localhost ~]# Vsftpd这个服务就从chkconfig的管理程序里面删除了,通过chkconfig --list命令也查询不到了。 添加一个服务到chkconfig的管理程序里面
复制代码代码如下:
#chkconfig --add vsftpd
[root@localhost ~]# [root@localhost ~]# chkconfig --add vsftpd [root@localhost ~]# [root@localhost ~]# chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@localhost ~]#
OK,vsftpd服务就被成功的添加到了chkconfig的管理程序里面。 Chkconfig vsftpd on这条命令一定要敲。
关于/etc/sysconfig下面的文件, 三.Xinetd管理的服务 我们由xinetd管理的服务都在/etc/xinetd/下面。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# cd /etc/xinetd.d/ [root@localhost xinetd.d]# ls chargen-dgram discard-stream gssftp rsync time-stream chargen-stream echo-dgram klogin tcpmux-server daytime-dgram echo-stream krb5-telnet telnet daytime-stream eklogin kshell tftp discard-dgram ekrb5-telnet rmcp time-dgram [root@localhost xinetd.d]#
这个目录下面的服务都是由Xinetd来管理的。
复制代码代码如下:
# default: on
# description: The telnet server serves telnet sessions; it uses \ # unencrypted username/password pairs for authentication. service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = yes }
在telnet的配置文件里面有个disable = yes,是不是关闭这个服务呢,yes。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# service telnetd restart telnetd: unrecognized service [root@localhost ~]# 好像不行,因为telnet不是system V的服务,不可能会调用/etc/init.d下面的脚本。 telnet服务是属于xinetd服务的,我们重启下xinetd服务,试试。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] [root@localhost ~]# OK,xinetd服务启动成功。
因为xinetd服务也是属于system V服务,所以可以用service来启动。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# netstat -tulnp | grep 23 tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 14854/xinetd [root@localhost ~]# 可以看到,telnet服务的确是监听在23号端口的。并且是由xinetd来管理的。 现在我们来测试一下
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5xen on an i686 login: user1 Password: Last login: Mon Mar 8 14:22:29 from 192.168.0.2 [user1@localhost ~]$ ls [user1@localhost ~]$ 同样的,我们也可以使用chkconfig来管理telnet。
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# chkconfig telnet on [root@localhost ~]# chkconfig --list telnet telnet on [root@localhost ~]# chkconfig telnet off [root@localhost ~]# chkconfig --list telnet telnet off [root@localhost ~]#
关于system V服务和xinetd管理的服务,
Xinetd的全局配置文件在/etc/xinetd.conf文件, 首先来看看全局配置文件,
复制代码代码如下:
Enabled = yes or no
Instances = 50
Per_source = 10
V6only
log_on_failure = HOST
Log_on_success = PID HOST DURATION EXIT
Cps =50 10
在来看看xinetd服务的配置文件,
Disable = yes or no
Socket_type = stream
Wait = no
User = root
Log_on_failure += USERID
下面就是关于xinetd服务的访问控制,
关于xinetd服务访问控制的主机模式 现在我们来做试验,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.10 root@192.168.0.10's password: Permission denied, please try again. root@192.168.0.10's password: Last login: Mon Mar 8 15:32:07 2010 from 192.168.0.254 [root@localhost ~]# [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5xen on an i686 login: user1 Password: Last login: Mon Mar 8 15:21:50 from 192.168.0.10 [user1@localhost ~]$ 现在我们是可以telnet到192.168.0.254上面的。 现在我们对telnet来做访问控制,
复制代码代码如下:
[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 no_access = 192.168.0.10 } [root@localhost ~]# 我们拒绝192.168.0.10进行telnet到192.168.0.254。 然后重启下xinetd服务,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# service xinetd restart Stopping xinetd: [ OK ] Starting xinetd: [ OK ] 服务启动成功,测试下,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.10 root@192.168.0.10's password: Last login: Mon Mar 8 15:49:20 2010 from 192.168.0.254 [root@localhost ~]# [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Connection closed by foreign host. [root@localhost ~]# OK,可以看到,连接就被拒绝了。 那192.168.0.20可以telnet到192.168.0.254上面吗。试试
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.20 root@192.168.0.20's password: Last login: Mon Mar 8 15:58:27 2010 from 192.168.0.254 [root@localhost ~]# [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5xen on an i686 login: user1 Password: Last login: Mon Mar 8 15:32:35 from 192.168.0.10 [user1@localhost ~]$
是可以的,我们只是拒绝了192.168.0.10进行telnet到192.168.0.254。
如果有这样的情况呢?
复制代码代码如下:
[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 only_from = 192.168.0.0/24 no_access = 192.168.0.20 } [root@localhost ~]#
配置OK,重启下服务, 服务启动成功,测试下,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.20 root@192.168.0.20's password: Last login: Mon Mar 8 16:03:23 2010 from 192.168.0.254 [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Connection closed by foreign host. [root@localhost ~]# 可以看到,192.168.0.20最终还是不可以telnet到192.168.0.254上面去的。 那么192.168.0.10可以telnet吗?
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.10 root@192.168.0.10's password: Last login: Mon Mar 8 16:05:00 2010 from 192.168.0.254 [root@localhost ~]# [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Red Hat Enterprise Linux Server release 5.4 (Tikanga) Kernel 2.6.18-164.el5xen on an i686 login: user1 Password: Last login: Mon Mar 8 16:00:42 from 192.168.0.20 [user1@localhost ~]$ 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 ~]#
配置就OK,重启下服务, 服务启动成功,测试下,
复制代码代码如下:
[root@localhost ~]#
[root@localhost ~]# ssh 192.168.0.10 root@192.168.0.10's password: Last login: Mon Mar 8 16:12:00 2010 from 192.168.0.254 [root@localhost ~]# date Mon Mar 8 16:12:20 CST 2010 [root@localhost ~]# [root@localhost ~]# telnet 192.168.0.254 Trying 192.168.0.254... Connected to 192.168.0.254 (192.168.0.254). Escape character is '^]'. Connection closed by foreign host. [root@localhost ~]# 192.168.0.10是不可以telnet到192.168.0.254上面去的,因为访问时间限制了。 至此,RHEL5.4系统服务管理的相关知识就介绍完了,希望对大家有所帮助。 (责任编辑:IT) |