Linux系统服务分类介绍
(附件请点击链接)
linux下的系统服务角色繁多,用法也不尽相同。不过我们可以将其分成三类:
n 由init控制的服务:大多是系统级别的服务
n 由System V 启动脚本启动的服务:常见服务器基本都是这个类型,用户经常使用的
n 由xinetd管理的服务:比如telnet服务
下面我们来看这3类服务的配置文件及使用方式:
1、init进程控制的服务
1) 系统初始进程init 的PID为1 ; pstree 命令用于查看进程树结构
2) init的配置文件 /etc/inittab
可以发现设置系统开机运行级别(0-6)也是通过该文件完成的;
同时该文件还定义了哪些服务运行在哪些级别上,读取哪些文件
3) 如果改动了inittab 文件,可以通过下面命令立即生效
#init q
下面来重点关注下System V 服务:
2、由System V启动脚本启动的服务
1) 查看System V启动脚本目录
2) 控制System V服务
方法1:
#/etc/rc.d/init.d/script {start | stop |restart |reload }
方法2:
#service script { start | stop |restart |reload }
3) System V服务在不同系统运行级别下的默认开关可以不相同,我们可以通过2个工具来控制
方法1:#chkconfig –list 服务名称
可以看到,当前NFS服务在0-6级别都是关闭状态。下面我们让NFS服务在35级别自动运行
方法2: 文本界面工具ntsysv
如果要开启哪些服务,自己定义就好了。
3、Xinetd服务的管理
1) xinetd服务的管理文件都放在 /etc/xinetd.d目录内,我们可以通过编辑相应服务文件来开启或关闭服务
2) 这里我们以telnet服务为例
由于RHEL5默认没有安装telnet,接下来安装telnet先
下面我们去看telnet的配置文件,注意观察文件路径
编辑/etc/xinetd.d/telnet
disable 是控制语句,为yes就是不启动telnet,我们把他改成no
为了使改动生效,最后重启xinetd服务
3) 客户端telnet 测试
出现login对话框,OK;
注意:root用户默认不能登录(出于安全考虑),不过我们可以先以普通用户登录然后切换进管理员用户。
Posted in Linux
|
Tagged init, linux, system V, xinetd, 企顺
|
今天有人问我,如果有四个程序: xinetd, httpd,sshd,syslogd 如何可以查到这4个程序中,支持tcpwrap的程序呢?
据我所知,如果支持tcpwrap就一定有libwrap的库文件参与。那么程序在运行的时候肯定会加载相应的库模块。
而查询加载的模块命令我们用ldd。可是查询的时候如何快速查询是否有libwrap的模块呢?就需要我们写一个简单的shell脚本了。。。呵呵
分解一下: 首先第一步。测试一下 xinetd程序在那里。可以用which命令来定位。
[root@RHEL5 ~]# which xinetd
/usr/sbin/xinetd
得到结果是/usr/sbin/xinetd这个程序,然后利用ldd 查看该程序加载了哪些模块。
[root@RHEL5 ~]# ldd /usr/sbin/xinetd
linux-gate.so.1 => (0x00e7b000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0036f000)
libwrap.so.0 => /usr/lib/libwrap.so.0 (0×00582000) libnsl.so.1 => /lib/libnsl.so.1 (0×00294000)
libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0×00256000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0×00110000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0×00386000)
libdl.so.2 => /lib/libdl.so.2 (0x00a7c000)
libsepol.so.1 => /lib/libsepol.so.1 (0x00d72000)
/lib/ld-linux.so.2 (0x006db000)
我们需要的只是知道黑体显示的那一栏信息。这样我们知道了,xinetd程序是支持tcpwrap的程序。
接着,我们可以做得更好。利用shell脚本的特性。
[root@RHEL5 ~]# ldd $(which xinetd) | grep libwrap
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00c81000)
当然我还需要个循环来逐个显示不同服务对tcpwrap的支持。因此写出个简单的脚本。
#/bin/bash
# 测试程序对tcpwrap的支持。
# yoyojacky2009@gmail.com
for i in sshd syslogd httpd xinetd
do echo $i ; ldd $(which $i) | grep libwrap ;
done
写完后,记得给这个文件赋权:
[root@RHEL5 ~]# chmod +x ceshi.sh
然后执行以下,测试结果如下:
[root@RHEL5 ~]# ./ceshi.sh
sshd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00c6a000)
syslogd
httpd
xinetd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00c7c000)
结果显示,只有xinetd和sshd这两个程序支持tcpwrap功能。大家可以举一反三,通过这种方法查询更多的模块。找到程序中共同的模块,更好地理解linux的工作原理。