
——Linux基本服务
服务,其实就是运行在操作系统后台的一个或者多个应用程序,为计算机系统或用户提供某项特定的服务。
服务通常是不中断运行的,随时准备接受请求,从而提供某项服务。例如我们日常使用的网页服务,其就是由一个运行在所访问网站的服务器上的httpd服务提供的服务,我们通过在浏览器输入需要访问网站的域名,服务器端的httpd服务就会随时的接收我们发送过来的请求,并响应回给我们的用户。
我们Linux系统绝大多数服务都是网络服务,例如邮件服务、FTP服务、httpd服务等等,网络服务可以使为其他用户、其他计算机提供特定的服务。
一.查看系统有哪些服务。
在/etc/init.d下有所有System v 的服务的运行脚本,所以要看系统有哪些服务只要cd /etc/init.d 然后 ls 就可以了。下面是以ubuntu 12.04 LTS 为例截下的图片。
二.如何启用这些服务
对于Linux的所有的这些服务,我们通过 service 这个命令来进行统一的管理
命令 service 可以调用指定服务的System V脚本,并执行指定的动作具体的用法是:
service 服务名 [start | stop | restart | status]
分别是启动服务、关闭服务和重新启动服务,如果要查看以运行的服务状态,则勇敢status命令。
三.如何查看我系统中服务的运行状态
在 /etc这个目录下,除了我们刚才的 init.d 这个目录,我们还发现还有其它的一些目录,诸如 rc0.d、rc1.d等,这些目录就分别对应了系统的7种启动级别,每个目录里面都存放了许多的文件,每个文件对应着一个特定的服务,并标志有是否开机启动以及启动顺序,例如我们进入到 rc5.d 这个目录
我们如果希望某服务开机就启动,可以通过修改 rc5.d 目录下的链接文件,不过这样做很麻烦,Linux系统提供了一个chkconfig命令可以来设置服务是否开机启动
例如我们通过chkconfig --list命令来查看所有服务的开机启动情况
使用范例:
chkconfig --list #列出所有的系统服务
chkconfig --add httpd #增加httpd服务
chkconfig --del httpd #删除httpd服务
chkconfig --level httpd 2345 on #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list #列出系统所有的服务启动情况
chkconfig --list mysqld #列出mysqld服务设置情况
chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfigmysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
等级说明:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
四.常用服务介绍
1. telnet
telnet 是一条远程登陆命令,整个过程不加密,远不如ssh服务安全,推荐有需求
的同学使用ssh来代替telnet。
2. ssh
ssh可以认为是telnet 的升级版,在telnet 的基础上提供了一些安全服务。如果
我们只是使用最基本的服务的话,ssh服务是很容易配置的。标准的Ubuntu 中并没有自
带ssh服务,需要我们手动安装:
sudo apt-get install ssh
安装完成后ssh默认是开启的,如果没有,使用“sudo service ssh start”来
开启。
在宿主机中下载putty 并运行,可以看到如下界面:
ssh服务默认使用的端口号为22,输入虚拟机IP,选择连接类型为SSH,就可以打开
会话了:
输入用户名和密码登陆成功。
ssh是需要公钥密码支持的,在首次登陆时,由于缺少预密钥和一些其他的基本信息,
所以会提示与远程ssh服务器交换公钥,确认即可。
3. ftp
ftp 服务可以说是三种基本服务中最麻烦的,因为前两种是远程登录,可以说与本地登
录并没有什么区别,登录之后就拥有了登入用户的全部权限;但ftp 服务不同,基于安全
目的,它需要控制登入用户的权限。
所以就在配置过程中出现了一个很经典的错误:
500 vsftpd: refusing to run with writable root inside chroot()
这个问题我们放在后面会说,先来看基本的配置。Ubuntu 没有自带ftp 服务器,所
以需要手动下载:
sudo apt-get install vsftpd
安装完成后,在登录之前,可以先行查看ftp 服务的运行状态:
servicevsftpd status
如果服务正在运行,系统会提示:“vsftpd start/running, process [\\d]”,
否则则会提示“vsftpd stop/waiting”。这个时候就需要手动开启(重启)服务:
sudo service vsftpd start/restart
Linux 下所有的配置文件都放在/etc文件夹下,我们可以在其中找到vsftpd.conf,
这是ftp 服务器的配置文件,我们可以按照自己的需要去掉相应行的注释,来启用相应的
配置。下面是一些推荐的配置,同学们可以把之前的配置文件备份一份,然后用这个把之前
的配置覆盖掉:
listen=YES
anonymous_enable=YES
no_anon_password=YES
local_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ftpd_banner=Welcome to blah FTP service.
deny_email_enable=YES
banned_email_file=/etc/vsftpd.banned_emails
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
然后我们使用ftp localhost指令或者在宿主机中使用相应的ftp 软件登录服务器,
出现一开始提到的那个错误。这是因为服务器不认识我们登陆的用户名。打开
/etc/vsftpd.chroot_list文件(直接用sudo vi 打开,没有则自动新建),我们把
自己的用户名添加进去,就可以成功登陆了。
细心的同学可能发现了,在上面的配置信息中我是允许匿名用户登陆并且开放了较高权
限的(我的虚拟机使用NAT,对比较安全),如果匿名登陆不成功,则需要为匿名用户
分配一个主文件夹。如果/home 下没有ftp 文件夹,则我们可以自己手动新建一个,并输
入以下指令来为ftp 匿名用户指定主文件夹:
sudousermod -d /home/ftp ftp
至此,虚拟机基本的ftp 服务终于配置好了,在共享文件夹出现问题或者其他情况的
时候,我们就可以使用ftp 服务来在虚拟机和宿主机之间传输文件了!
FTP 登陆成功FTP 匿名登陆成功
因为整个过程中出现和解决了各种各样的问题,所以可能会有一些细节的遗漏,希望同
学们在学习的过程中如果出现了问题及时和我联系讨论,共同进步!
