基础服务
服务DNS 域名解析 端口53(bind)
主要文件
/etc/named.conf #bind的配置文件
/var/named/alvinyuan.zone #你自己编写的zone
/etc/resolv.conf #指定DNS服务器所在的IP地址
安装
yum install -y bind*
#(6:bind 7:unbound)
编写主配置文件:vim /etc/named.conf
listen -on port 53 {any;};
allow -query {any;};
zone "alvinyuan.com" IN {
type master;
file "alvinyuan.zone";
};
zone "110.132.in-addr.arpa" IN {
type master;
file "110.132.zone";
};
数据配置文件名:alvinyuan.zone 与主配置文件一致,110.132.zone是反向解析数据文件
正向解析
vim /var/named/alvinyuan.zone
$TTL 600
@ IN SOA web.alvinyuan.com. root.alvinyuan.com. (
2009050401
3600
600
3600000
1800 )
@ IN NS web.alvinyuan.com.
web IN A 192.168.110.132
www IN A 192.168.110.133
monitor IN A 192.168.110.134
dns中记录的类型
SOA:起始授权记录
NS:域名服务记录
NS web.alvinyuan.com. #指定dns服务器
www A 192.168.110.132 #A代表正向解析
A:ipv4记录
AAAA:ipv6记录
反向解析
vim /var/named/110.132.zone
反向解析
$TTL 600
@ IN SOA web.alvinyuan.com. root.alvinyuan.com. (
2009050401
3600
600
3600000
1800 )
@ IN NS web.alvinyuan.com.
132 IN PTR web.alvinyuan.com.
133 IN PTR www.alvinyuan.com.
134 IN PTR monitor.alvinyuan.com.
指定DNS服务器所在的IP地址
vim /etc/resolv.conf
nameserver 192.168.110.132
重启服务:
systemctl start named
验证:ping 域名,地址自动解析成数据文件的IP
nslookup web.alvinyuan.com
dig web.alvinyuan.com
服务DHCP 动态主机配置协议:端口67
BOOTP:在主板上一段程序单向输出
1:服务器端配置静态IP:
2:yum install -y dhcp
3:改配置:
vim /etc/dhcp/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0 { 网段
rang 192.168.0.100 192.168.0.20; 范围
option routers 192.168.0.1; 网关
option domain-name-server 192.168.0.110; DNS服务器
}
4:启动服务:
service dhcpd start
5:客户端验证:网卡模式仅主机,配置文件改为dhcp,IP和子网#注释掉
6:重启网络服务:
service network restart
7:验证:是否由服务器端分配IP:
ifconfig eth0 | grep Bcast
8:查看网关:
route -n | grep UG
9:查看DNS:
cat /etc/resolv.conf
服务FTP 文本传输协议,实现共享功能:
端口21 是vsftp
工作模式:1主动模式:发数据端口为20
yum install -y vsftpd ftp
cd /etc/vsftpd
mv vsftpd.conf vsftpd.conf.bak #备份配置文件以免修改错误可还原
新建配置文件
cat>>/etc/vsftpd/vsftpd.conf <<_EOF #改配置文件
anonymous_enable=NO
write_enable=YES
chroot_list_enable=YES
use_localtime=YES
local_enable=YES
allow_writeable_chroot=YES
xferlog_enable=YES
local_umask=022
pam_service_name=vsftpd
use_localtime=YES
listen_port=21
chroot_local_user=YES
idle_session_timeout=120
data_connection_timeout=120
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1
chroot_list_file=/etc/vsftpd/chroot_list
_EOF
useradd -g root -M -d /home/vsftpd -s /sbin/nologin ftpuser #创建ftpuser用户
passwd ftpuser #赋予密码
chown -R ftpuser.root /home/vsftpd #给家目录权限
touch /etc/vsftpd/vuser_passwd #创建虚拟用户名密码
创建虚拟用户ftp1和ftp2
cat>>/etc/vsftpd/vuser_passwd<<_EOF
ftp1 #第一行用户名
123456 #第二行密码
ftp2 #用户名
123456 #密码
_EOF
db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db #生成虚拟用户数据文件,如果更改虚拟用户密码需要更改vuser_passwd里的密码,在执行这条命令重置vuser_passwd.db数据文件
chmod 600 /etc/vsftpd/vuser_passwd.db #更改文件权限
mkdir /etc/vsftpd/vuser_conf # 建立虚拟用户个人vsftp的配置文件
cd /etc/vsftpd/vuser_conf # 进入目录
touch ftp1 ftp2
建立虚拟用户配置文件
该文件可修改用户的访问家目录,比如 local_root=/home/vsftpd/ftp1 可修改成local_root=/var/www/html
cd /etc/vsftpd/vuser_conf
cat >>ftp1<<_EOF
local_root=/home/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
_EOF
cd /etc/vsftpd/vuser_conf
cat >>ftp2<<_EOF
local_root=/home/vsftpd/ftp1
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
_EOF
限制只能ftp1和ftp2访问
echo -e "ftp1\nftp2" >/etc/vsftpd/chroot_list
查看目录vsftp目录结构
yum install -y tree
tree /etc/vsftpd #查看目录结构
/etc/vsftpd/
├── chroot_list #CHROOT可以增进系统的安全性,限制使用者能做的事,在这里的用户可以访问
├── ftpusers #黑名单,默认开启黑名单,配置文件写了userlist_deny=YES 则在/etc/vsftpd/user_list和/etc/vsftpd/ftpusers 这两个文件中的用户不能登录
├── user_list #白名单,只有写在user_list中的普通用户才可以登录ftp在白名单上可登录
├── vsftpd.conf #vsftp配置文件
├── vsftpd.conf.bak
├── vsftpd_conf_migrate.sh
├── vuser_conf #虚拟用户配置文件夹
│ ├── ftp1
│ └── ftp2
├── vuser_passwd #虚拟用户账户密码
└── vuser_passwd.db #虚拟用户数据文件
重启服务
setenforce 0 #关闭selinux
systemctl start vsftpd #启动服务
netstat -anplut | grep ftp #查看端口是否是vsftpd占用的
登录
ftp 127.0.0.1
#之后根据提示输入用户名和密码
登录后默认位置:/var/ftp 默认为虚拟用户配置文件中local_root=/home/vsftpd/ftp1 配置的目录
其他
ftp 两种传输方式:
binary 二进制比特流方式传输,速度快(默认)
ASCII 文本方式传输,速度慢一些
切换:ftp > status ftp >ascii
工作模式:
主动模式:发数据端口为20
被动模式:端口随机
两个链接
1命令链接
2数据链接
sftp且限制用户访问目录
通过加密SSH传输处理所有操作。
功能简述:凡是在用户组sftp里的用户,都可以使用sftp服务
使用sftp服务连接上之后,可访问目录为/srv/sftp/username
举个例子:
- 用户test是一个sftp组的用户,那么他通过sftp连接服务器上之后,只能看到/srv/sftp/test目录下的内容
- 用户test2也是一个sftp组的用户,那么他通过sftp连接服务器之后,只能看到/srv/sftp/test2目录下的内容
创建sftp服务用户组,创建sftp服务根目录
groupadd sftp
#此目录及上级目录的所有者(owner)必须为root,权限不高于755,此目录的组最好设定为sftp
mkdir /srv/sftp
chown -R root:sftp /srv/sftp
chmod -R 0755 /srv/sftp
备份sshd配置文件然后编辑
mv /etc/ssh/sshd_config ~/backup/sshd_config_xxx
vim /etc/ssh/sshd_config
#注释掉/etc/ssh/sshd_config文件中的此行代码:
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下代码:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /srv/sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重启sshd服务
systemctl restart sshd
添加有效的sftp用户,且给予用户写权限
创建一个名称为test的sftp帐号
#创建test的家目录:test目录的所有者必须是root,组最好设定为sftp,权限不高于755
mkdir /srv/sftp/test
chmod 0755 /srv/sftp/test
groupadd sftp
chown root:sftp /srv/sftp/test
#添加用户 使用参数 -s/sbin/nologin禁止用户通过命令行登录
useradd -gsftp -d/srv/sftp/test -s/sbin/nologin test
passwd test #赋予test用户密码
关于写权限
#在test目录下创建一个可以写的目录
mkdir /srv/sftp/test/write
chown -R test:sftp /srv/sftp/test/write
这样test用户就可以在自己家目录里的write目录下拥有写入权限了
sftp服务的根目录的所有者必须是root,权限不能超过755(上级目录也必须遵循此规则),sftp的用户目录所有者也必须是root,且最高权限不能超过755.
常用命令
sftp> ls #list directory
sftp> pwd #print working directory on remote host
sftp> lpwd #print working directory on local host
sftp> mkdir abc #create a new directory abc
推送文件至sftp服务端
要将整个目录上传到sftp服务端,请使用put命令。
在客户端找到需要上传的文件夹
put -r /tmp
get -r dir
#下载dir目录以及文件
退出
exit
crontab 计划任务(默认为开启状态)
1:service crond start
crontab -u 设定某个用户的crond服务
-l 列出某个用户cron服务的详细内容
-r 删除某个用户的cron服务
-e 编辑某个用户的cron服务
使用:crontab -u user1 -e 给user1设定一个计划任务
分钟 小时 日 月 周 命令
范围 0-59 0-23 1-31 1-12 0-7 (时间任意用*表示)
配置文件所在位置:
/var/spool/cron 可直接追加
echo '15 6 * * * /bin/echo "welcome">>/var/spool/cron/user1
*/2 * * * * #每两分钟执行
每天零点定期清理大于30天的master-bin 文件
0 0 * * * find /var/lib/mysql -name "master-bin*" -type f -ctime +30 -exec rm -rf {} \; > /dev/null 2>&1