云网牛站
所在位置:首页 > Linux培训 > Linux新人培训第八章:系统服务

Linux新人培训第八章:系统服务

2018-05-07 15:47:59作者:YWNZ稿源:云网牛站整理

本章节主要内容为:NTP、vsftpd、Samba、NFS、Telnet、OpenSSH。

 

注:本Linux新人培训教程以中兴新支点服务器操作系统(CGSL)为例。

 

CGSL 系统为标准服务器版本,为满足大多数用户的需求,系统提供了大量的通用服务和基本功能,本章主要介绍常用服务和系统基本功能的配置和使用。

 

8.1.NTP

NTP(Network Time Protocol)是用来使系统和一个精确的时间源保持时间同步的协议。通常用于局域网上的若干台主机通过互联网与其他的 NTP主机同步时钟,接着再向局域网内其他客户端提供时间同步服务。

CGSLV5 默认 ntp 组件由 Chrony 代替。

Chrony 是网络事件协议的(ntp)的另一种实现,与网络事件协议后台程序(ntpd)不同,它可以更快地且更准确地同步系统时钟。请注意,ntpd 仍包含其中以提供需要运行 NTP 服务的客户使用(需要重新从安装光盘安装)。

注意:Chrony 不能使用本地时间作为时钟源(原 ntpd 可以使用本地时间作为时钟源)。

Chrony 的优势包括:

更快的同步只需要数分钟并非数小时时间,从而最大程度减少了时间和频率的误差,这对于并非全天 24 小时运行的台式计算机或系统而言非常有用。

能够更快地响应时钟频率的快速变化,这对于具备不稳定始终的虚拟机或导致始终频率发生变化的节能技术而言非常有用。

在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响。

在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性。

无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。

8.1.1.Chrony 配置文件

Chrony 服务主要通过/etc/chrony.conf 配置。本节主要介绍该配置文件中的主要影响配置。

8.1.1.1.上级时间服务器

首先用 server 这个参数设定上级时间服务器,语法为:

server IP 地址或域名 [prefer]  

8.1.1.2.权限设置

权限的设定,主要的语法为:

allow IP 地址 mask 子网掩码  

8.1.1.3.driftfile 参数

在与上级时间服务器联系时所花费的时间,记录在 driftfile 参数后面的文件内。语法为:

driftfile 包含路径的文件名  

注意: driftfile 后面接的文件需要使用完整的路径文件名,不能是链接文件,并且文件的权限需要设定成 ntpd 守护进程可以写入。

8.1.2.NTP 配置实例

下面以本地配置一个服务器与客户端为例介绍 CGSL NTP 的配置过程。

8.1.2.1.服务器端配置

1、首先查询 chrony 软件版本

#rpm -q chrony  

chrony-1.29.1-1.el7.x86_64  

如果没有,可以从 CGS L 安装盘上查找,找到后用 rpm 命令安装,示例如下:

# rpm –ivh chrony-1.29.1-1.el7.x86_64.rpm  

2、编辑配置文件

#vi /etc/ chrony.conf  

修改配置文件/etc/chrony.conf,使用 192.168.17.234 为上层时钟源,并对下级客户端 192.168.17 网段开放权限

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool.

server 192.168.17.234 iburst 配置上层时钟源,不能为本机

# Ignore stratum in source selection.

stratumweight 0

# Record the rate at which the system clock gains/losses time.

driftfile /var/lib/chrony/drift 配置drift文件路径

# Enable kernel RTC synchronization.

rtcsync 自动同步系统时间到硬件时间

# In first three updates step the system clock instead of slew

# if the adjustment is larger than 10 seconds.

makestep 10 3

# Allow NTP client access from local network.

#allow 192.168/16

allow 192.168.17/24配置下层客户端的访问权限

# Listen for commands only on localhost.

bindcmdaddress 127.0.0.1

bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.

#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.

commandkey 1

# Generate command key if missing.

generatecommandkey

# Disable logging of client accesses.

noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.

logchange 0.5

logdir /var/log/chrony

#log measurements statistics tracking

3、重启 chrony 服务

# systemctl restart chrony  

4、查看 ntp 服务状态

如果同步正常,显示如下:

Linux新人培训第八章:系统服务

8.1.2.2.客户端配置

1、首先查询 chrony 软件包

#rpm -q chrony  

chrony-1.29.1-1.el7.x86_64  

如果没有可以从 CGS Linux 安装盘上查找,找到后用下面的命令安装:

# rpm –ivh chrony-1.29.1-1.el7.x86_64.rpm  

2、编辑/etc/ chrony.conf,假设上层时钟源为 192.168.17.215,则保留如下内容:

# Use public servers from the pool.ntp.org project.

# Please consider joining the pool.

server 192.168.17.215配置上层时钟源,不能为本机

# Ignore stratum in source selection.

stratumweight 0

# Record the rate at which the system clock gains/losses time.

driftfile /var/lib/chrony/drift配置drift文件路径

# Enable kernel RTC synchronization.

rtcsync自动同步系统时间到硬件时间

# In first three updates step the system clock instead of slew

# if the adjustment is larger than 10 seconds.

makestep 10 3

# Allow NTP client access from local network.

# Listen for commands only on localhost.

bindcmdaddress 127.0.0.1

bindcmdaddress ::1

# Serve time even if not synchronized to any NTP server.

#local stratum 10

keyfile /etc/chrony.keys

# Specify the key used as password for chronyc.

commandkey 1

# Generate command key if missing.

generatecommandkey

# Disable logging of client accesses.

noclientlog

# Send a message to syslog if a clock adjustment is larger than 0.5 seconds.

logchange 0.5

logdir /var/log/chrony

#log measurements statistics tracking

3、重启 chrony 服务:

# systemctl restart chrony  

4、检查 ntp 服务状态

结果如下则同步正常:

Linux新人培训第八章:系统服务

如果输出和上面相似,则说明时间服务器成功,服务启动后,会自动同步时间。

 

8.2.vsftpd

vsftpd 的全称为”Very Secure FTP Daemon”。是 CGSL 中自带的默认 FTP 服务,使用 vsftpd 可以构建一个以安全为重的 FTP 服务器。

8.2.1.vsftpd 配置文件

vsftpd 是通过/etc/vsftpd/vsftpd.conf 文件来进行配置的。本节主要介绍该配置文件中的主要配置。

8.2.1.1.主要参数说明

anonymous_enable=YES  # 允许匿名登录

local_enable=YES  # 允许本地登录

write_enable=YES  # 允许用户上传数据

local_umask=022  # 设置默认的掩码为 022

dirmessage_enable=YES  # 当用户进入某个目录时,会显示该目录需要注意的内容

xferlog_enable=YES  # 默认上传或者下载的日志被记录在/var/log/vsftpd.log 中

connect_from_port_20=YES  # 用 20 端口作为数据传输端口

xferlog_std_format=YES  # 使用标准格式等级上传或者下载记录

listen=YES  # 当设为 yes 时,vsftpd 以 standalon 状态运行,默认开启

pam_service_name=vsftpd  # 列出与 vsftpd 相关的 PAM 文件

userlist_enable=YES

# 当该选项设为 yes 时,启用配置文件/etc/vsftpd/user_list

# 1:若此时没有 userlist_deny=NO,则/etc/vsftpd/user_list 中用户不能访问 ftp

# 2:若存在 userlist_deny=NO,则仅接受/etc/vsftpd/user_list 中存在用户登录 ftp 的请求(前提是这些用户不存在于/etc/vsftpd/ftpusers 中)

#   当为 NO 时,不启用/etc/vsftpd/user_list 配置文件

tcp_wrappers=YES  # 启用 TCP Wrapper 支持

sendport_off_enable=NO  # 不使用 sendport 模式

8.2.1.2.其它常用设置

guest_enable=YES

guest_username=ftp

# guest用户名,即所有非匿名用户将具有 guest 用户身份。

local_root=/var/ftp

anon_root=/var/ftp

# 设定本机用户和匿名用户的主目录

pasv_enable=YES

#port_enable=YES

# port 为主动模式,pasv 为被动模式,两个不能同时使用,必须注释掉一个

pasv_min_port=9000

pasv_max_prot=9200

# 使用被动模式时端口的范围,例为 9000-9200,只有在被动模式下有用

use_localtime=YES

# 使用使用本地时间,如不使用,则使用格林威治时间,建议用 YES

accept_timeout=60

# 被动模式下服务器等待客户端的延时时间 单位为秒

max_clients=0

# 在standalone模式下最大客户连接数

max_pre_ip=0

# 每个客户端的最大连接数

local_max_rate=0

# 本地用户最大传输速率,单位为字节/秒;0 为不限

anon_max_rate=0

# 匿名用户最大传输速率,单位为字节/秒;0 为不限

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

# 锁定用户主目录的设置 如果 chroot_list_enable=YES 时,用户主目录锁定,在 ftp 时切换到主目录是就切换到主目录下,不会访问主目录的上层目录

# /etc/vsftpd/chroot_list 的格式为:用户名  锁定的目录

其他参数可使用命令 man vsftpd.conf 进行查阅。

8.2.2.vsftpd 配置实例

下面以一个实例介绍 vsftpd 服务器的配置。

vsftpd 配置要求如下:

不允许匿名登录;

能使用 root 或 test01 用户登录;

test01 用户需锁定用户主目录为/home/test01

1.首先查询 vsftpd 软件的版本

# rpm -q vsftpd  

vsftpd-3.0.2-9.el7.x86_64  

如果没有可以从 CGS Linux 安装盘上查找,找到后执行 rpm 命令安装,示例如下:

# rpm -ivh vsftpd-3.0.2-9.el7.x86_64.rpm  

2.编辑/etc/vsftpd/vsftpd.conf 文件:

1)将 anonymous_enable=YES 修改为 anonymous_enable=NO

2)在文件末添加:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

3.为了能使 root 用户登录,编辑/etc/vsftpd/ftpuser 和/etc/vsftpd/user_list 文件:

将 root 行用”#”注释掉

4.编辑或新建/etc/vsftpd/chroot_list 文件,加入:

test01  /home/test01  

5.重启 vsftpd 服务:

# systemctl restart vsftpd  

6.使用过程中可能遇到由于 SELinux 会防止某些服务访问用户的主目录的问题,错误提示如:

500 OOPS: cannot change directory:/root  

可执行如下命令关闭 SELinux 解决:

# setenforce 0

 

8.3.Samba

Samba 服务是为 CGSL 系统和 Windows 系统之间提供文件共享功能的一种服务。

8.3.1.Samba 配置文件

Samba 服务的主要配置文件为/etc/samba/smb.conf,如下介绍该配置文件中的基本配置:

[global]  #全局设定

workgroup = MYGROUP

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

security = user

# 设置安全级别,即客户端访问 Samba 服务器的验证方式。

# 此部分中只能设置以下三种参数,参数设置:

# share  不需要提供用户名和密码

# user 只能被授权用户访问,由 Samba Server 负责检查账号和密码的有效性。账号和密码要在本 Samba Server 中建立

# server 依靠其他 Windows 或 Samba Server 来验证用户的账号和密码,是一种代理验证

passdb backend = tdbsam

# 设定 Samba 用户密码的存放方式

# tdbsam:该方式使用一个数据库文件来建立用户数据库,数据库文件名为 passdb.tdb。可以使用#smbpasswd -a [用户名]来建立 Samba 用户。也可以使用 pdbedit 令来建立用户。

# smbpasswd:该方式使用 Samba 提供的工具 smbpasswd 来给系统用户设置一个用于访问 Samba 服务的密码,客户端就用这个密码访问 Samba 共享资源。此方式还要使用一个 smb passwd file = /usr/local/samba/etc/smbpasswd(或/etc/samba/smbpasswd) 参数来指定保存用户名和密码的文件,该文件需要手动建立。

# ldapsam:该方式基于 LADP 的账户管理方式来验证用户,先要建立 LDAP 服务。

# mysql:该方式是将 Samba 服务器的用户名和密码存储到 MySQL 数据库中。

load printers = yes

cups options = raw

[homes]   # 用户个人主目录设置

comment = Home Directories   # 主目录注释

browseable = no   # 是否允许其他用户浏览个人主目录

writable = yes   # 是否允许写主目录

[printers]

comment = All Printers

path = /var/spool/samba

browseable = no

guest ok = no

writable = no

printable = yes

更多参数设置请使用命令 man smb.conf 进行查阅。

8.3.2.Samba 配置实例

通过一个实例介绍 Samba 服务器的配置。

Samba 服务器的配置要求:

共享的目录为/data

只有 root 用户才能访问

可上传和下载

1.CGSL V5 默认安装 Samba 服务端,使用下面命令查询是否正确安装了 Samba:

# rpm -q samba  

samba-4.1.1-31.el7.x86_64  

2.编辑/etc/samba/smb.conf 文件,在文件末尾添加:

[root]

path = /data

writable = yes

valid users = root

3.增加 Samba 服务的 root 账号:

# smbpasswd -a root  

按提示输入密码。

4.启动 Samba 服务:

# systemctl start smb  

5.如果共享目录为 SELinux 所保护的目录,需执行如下命令关闭 SELinux:

# setenforce 0

 

8.4.NFS

NFS (Network File System,网络文件系统),可以通过网络让不同的机器、不同的操作系统彼此共享文件,最早由 Sun 公司开发。它是 CGSL 下常用的文件共享服务。

NFS 服务可以将网络上的 NFS 主机共享的目录挂载到本地,在本地端看来,被挂载的远程主机目录就好像本地目录一样,使用起来非常方便。

8.4.1.NFS 配置文件

NFS 的主要配置文件为/etc/exports,其中包括需要共享的目录(绝对路径),以及访问控制和共享参数。/etc/exports 文件中的一行表示一个共享目录,规范如下:

要共享的目录 可访问的主机(访问权限) 第二个可访问的主机(访问权限) ……  

主机的设置:

具体的IP地址


  如172.16.100.138


  一个网段


  如172.16.100.0/24 或172.16.100.0/255.255.255.0


  具体的主机名


  如host01,需要在hosts或dns中定义并能够解析到


  *


  表示匹配所有可能值

常用的权限参数的设置:

ro

   只读


  rw

  可读可写


  sync

  数据同步写入内存和磁盘中(默认)


  async

  数据先暂存于内存中,而非直接写入磁盘


  root_squash

  将登入NFS主机的root身份映射为匿名用户(默认)


  no_root_squash

   登入NFS主机的root将获得root权限


  all_squash

  将登入NFS主机的所有账号都映射为匿名用户


  anonuid=Num

  将登入者的UID映射为Num


  anongid=Num

  将登入者的GID映射为Num

8.4.2.NFS 配置实例

以下以一个例子介绍 NFS 的配置。

NFS 配置要求:

一台主机(IP:172.16.100.78)要共享的目录为:/data

只有 172.16.100.0/24 和 192.168.1.0/24 这两个网段的主机才能访问

172.16.100.0/24 的用户具有可读可写,以及数据同步权限

172.16.100.0/24 的用户具有只读,以及数据同步权限

1.首先检查下 NFS 软件的版本:

# rpm -q nfs-utils  

nfs-utils-1.3.0-0.el7.x86_64  

如果没有可以从 CGS Linux 安装盘上查找,找到后用下面的命令安装(为 32 位系统为例):

# rpm -ivh nfs-utils-1.3.0-0.el7.x86_64.rpm  

2.编辑/etc/exports 文件,添加如下内容:

/data 172.16.100.0/24(rw,sync) 192.168.1.0/24(ro,sync)  

3.启动 NFS 服务:

# systemctl start nfs  

4.客户端也需启动 NFS 服务,之后才可通过以下命令访问 NFS 服务器:

#mount -t nfs172.16.100.78:/data /mnt

 

8.5.Telnet

Telnet 允许用户登录远程计算机,就像登录本地服务器一样。但是由于它是采用明文传输信息,安全性不好,所以默认情况下 Telnet 服务是关闭的。

8.5.1.Telnet 服务的启动

首先检查下 telnet 软件的版本:

#rpm -q telnet-server  

telnet-server-0.17-59.el7.x86_64  

如果没有可以从 CGS Linux 安装盘上查找,找到后用下面的命令安装:

#rpm -ivh telnet-server-0.17-59.el7.x86_64.rpm  

1.启动 telnet 服务:

# systemctl restart telnet.socket  

2.Telnet 服务默认不允许 root 用户登录,要实现 root 登录,可执行如下命令:

#mv -v /etc/securetty /etc/securetty.bak  

3.启动telnet服务:

#lsof -i:23

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

systemd   1 root   44u  IPv6  38164      0t0  TCP *:telnet (LISTEN)

4.设置随机启动:

# systemctl enable telnet.socket

8.5.3.Telnet 客户端

首先检查 telnet 客户端软件的版本

# # rpm -q telnet  

telnet-0.17-59.el7.x86_64  

如果没有可以从 CGS Linux 安装盘上查找,找到后用下面的命令安装

# rpm -ivh telnet-0.17-59.el7.x86_64.rpm

 

8.6.OpenSSH

SSH(Secure Shell protocol),可以将数据加密后再进行数据传递,因此数据比较安全。OpenSSH 是 SSH 协议的免费开源实现。它用安全、加密的网络连接工具代替了 telnet、ftp、rlogin、rsh 和 rcp 工具。该协议默认使用 RSA 钥匙。

8.6.1.1.sshd 服务配置

CGSL V5 默认已经安装并配置了 OpenSSH,不需要其他手动配置即可直接使用,SSH 相关功能由 sshd 服务提供。查看 sshd 服务状态,使用命令:

# systemctl status sshd  

CGSL V5 默认的 sshd 服务配置文件为/etc/ssh/sshd_config,主要配置如下:

Protocol 2                         # 使用协议版本 2

SyslogFacility AUTHPRIV                           # 日志产生设备

PasswordAuthentication yes                     # 使用口令认证

ChallengeResponseAuthentication no   # 不允许盘问应答方式

GSSAPIAuthentication yes          # 允许使用基于 GSSAPI 的用户认证

GSSAPICleanupCredentials yes

UsePAM yes                         # 使用 PAM 认证

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT

AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE

AcceptEnv XMODIFIERS                            # 登录后设置的环境变量

X11Forwarding yes                                    # 允许 X11 转发

Subsystem  sftp    /usr/libexec/openssh/sftp-server     # sftp 子系统

8.6.1.2.使用 ssh 命令

ssh 命令是 riogin、rsh 和 telnet 命令的安全替换。它允许用户登录远程机器并在其上执行命令。ssh 登录远程机器和使用 telnet 相似。

例如:登录到一个名为 example.test.com 的远程主机,在 Shell 提示下键入下面的命令:

#ssh example.test.com  

第一次使用 ssh 登录远程机器时,会看到和下面相仿的消息:

The authenticity of host ' example.test.com ' can’t be established.

RSA key fingerprint is 94:68:3a:3a:bc:f3:ga:gb:01:sd:b3:07:38:eZ:11:oc

Are you sure you want to continue connecting ( yes / no ) ?

键入 yes 继续,接下来会询问用户在远程主机上的口令,这时系统会将远程主机的密钥加入到用户主目录下的 .ssh/hostkeys 中。正确输入口令后,就会在远程主机的 Shell 提示符下了。

如果登录时没有指定用户名,本地客户机登录远程机器时用的用户名就会被传递给远程机器。如果想指定不同的用户名,使用下面的命令:

#ssh username @ example.test.com  

#ssh -l username example.test.com  

提示:使用 ssh 后需要用“exit”退出登陆。

ssh 命令还可以不经登录而在远程机器上执行命令。它的语法格式是:

#ssh hostname command  

例如,如果想查看远程主机 example.test.com上</usr/share/apps>目录下的内容,在 Shell 提示下键入命令:

#ssh example.test.com ls /usr/share/apps  

正确的输入口令之后,远程机器</usr/share/apps>目录下的内容就会被显示,然后返回到本地 Shell 提示下。

8.6.1.3.使用 scp 命令

scp 命令可以通过安全、加密的连接在机器间传输文件。它的使用与 rcp 相似。

把本地文件传输给远程机器的一般语法是:

#scp localfile username@remotehostname:/remotefile  

localfile 指定本地源文件,username @remotehostname:/remotefile指定远程目标文件。

要把本地文件 filel 传送到用户在 example.test.com 上的主目录中,在 Shell 提示下键入:

#scp filel username@example.test.com:/home/username  

把远程文件传输给本地系统的一般语法是:

#scp username@remotehostname:/remotefile/localfile  

remotefile 指定远程源文件,localfile 指定本地目标文件。

源文件可以由多个文件组成。例如,要把目录/downloads 的内容传输到远程机器 example.test.com 上现存的 uploads 目录,键入下列命令:

#scp /downloads/* username@example.test.com:/uploads/  

8.6.1.4.使用 sftp 命令

sftp 命令是 ftp 命令的安全替换,用来扫开一次安全的 FTP 交互会话。它的使用与 ftp 相似,只不过,它使用安全、加密的连接。

sftp 一般语法是:

#sftp username@hostname  

一旦通过验证,就可以使用一组和 FTP 相似的命令。

提示:请参阅 sftp 手册获取这些命令的列表,通过 man sftp 进入 sftp 手册页。

 

相关主题

想服务器不宕机,你了解Linux“体检”指标吗?

精选文章
热门文章