Linux自有服务
自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的服务(内置)。
一、运行模式
运行模式也可以称之为运行级别。
在linux中存在一个进程:init (initialize,初始化),进程id是1。
查看进程:#ps -ef|grep init

该进程存在一个对应的配置文件:inittab(系统运行级别配置文件,位置/etc/inittab)
文件的主要内容:

根据上述的描述,可以得知,Centos6.5中存在7中运行级别/模式。
0 — 表示关机级别(不要将默认的运行级别设置成这个值)
1 — 单用户模式
2 — 多用户模式,不带NFS(Network File Syetem)没网
3 — 多用户模式,完全的多用户模式(不带桌面的,纯命令行模式)
4 — 没有被使用的模式(被保留模式)
5 — X11,完整的图形化界面模式
6 — 表示重启级别(不要将默认的运行级别设置成这个值)
与该级别相关的几个命令:
#init 0 表示关机
#init 3 表示切换到不带桌面的模式
#init 5 切换到图形界面
#init 6 重启电脑
注意:init指令需要超级管理员的权限,普通用户无法执行。
这些命令其实都是调用的init进程,将数字(运行级别)传递给进程,进程去读配置文件执行对应的操作。
①切换到纯命令行模式下(临时切换,重启之后又恢复)
#init 3

切换之后需要输入用户名和密码,在输入密码的时候没有“*”提示输入,只要自己确认输入的密码没有错误,按下回车即可。
②回到桌面模式
#init 5
③设置模式永久为命令行模式

将/etc/inittab文件中的initdefault值设置成3,然后重启操作系统。
CentOS7设置永久命令行模式:
systemctl get-default 查看当前模式
systemctl set-default graphical.target 修改启动模式为图形界面,
systemctl set-default multi-user.target 修改为命令行
二、用户与用户组管理(重点)
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个惟一的用户名和各自的密码。
用户在登录时键入正确的用户名和密码后,就能够进入系统和自己的主目录。
要想实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的添加、删除、修改以及用户密码的管理。
用户组的管理。
注意三个文件:
/etc/passwd 存储用户的关键信息
/etc/group 存储用户组的关键信息
/etc/shadow 存储用户的密码信息
1、用户管理
①添加用户
常用语法:#useradd 选项 用户名
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-c comment:添加注释
案例:创建用户zhangsan,不带任何选项

验证是否成功:
- a. 验证/etc/passwd的最后一行,查看是否有zhangsan的信息;
- b. 验证是否存在家目录(在Centos下创建好用户之后随之产生一个同名家目录);
扩展:认识passwd文件

用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell
- 用户名:创建新用户名称,后期登录的时候需要输入;
- 密码:此密码位置一般情况都是“x”,表示密码的占位;
- 用户ID:用户的识别符;
- 用户组ID:该用户所属的主组ID;
- 注释:解释该用户是做什么用的;
- 家目录:用户登录进入系统之后默认的位置;
- 解释器shell:等待用户进入系统之后,用户输入指令之后,该解释器会收集用户输入的指令,传递给内核处理;
注意:在不添加选项的时候,执行useradd之后会执行一系列的操作
- a. 创建同名的家目录;
- b. 创建同名的用户组;
案例:添加选项,创建用户lisi,让lisi属于501主组,附加组500,自选靓号666。



注意:查看用户的主组可以查看passwd文件,查看附加组可以查看group文件。
②修改用户
常用语法:#usermod 选项 用户名
Usermod:user modify,用户修改
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-l:修改用户名
案例:修改zhangsan用户主组为500,附加组改为501
#usermod -g 500 -G 501 zhangsan
案例:修改zhangsan用户用户名,改为wangerma
#usermod -l 新的用户名 旧的用户名
#usermod -l wangerma zhangsan
③设置密码
Linux不允许没有密码的用户登录到系统,因此前面创建的用户目前都处于锁定状态,需要设置密码之后才能登录计算机。
常用语法:#passwd 用户名
案例:设置wangerma用户的密码

在设置密码的时候也是没有任何输入提示的,放心输入,确保两次输入的密码一致,按下回车即可。
也可以使用弱密码,但是不建议,否则会看到以下的提示:

设置密码之后shadow文件中的体现:能够看出lisi用户没有密码的。

在设置用户密码之后可以登录帐号,例如此处需要登录wangerma
切换用户命令
#su [用户名] (switch user)
如果用户名不指定则表示切换到root用户。

切换用户需要注意的事项:
- 从root往普通用户切换不需要密码,但是反之则需要root密码;
- 切换用户之后前后的工作路径是不变的;
- 普通用户没有办法访问root用户家目录,但是反之则可以;
④删除用户
常用语法:#userdel 选项 用户名
Userdel:user delete(用户删除)
常用选项:
-r:表示删除用户的同时,删除其家目录;
案例:删除wangerma用户

注意:已经登录的wangerma用户删除的时候提示删除失败,但是没有登录的lisi用户可以正常删除。
解决办法:简单粗暴,kill对应用户的全部进程

提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。
2、用户组管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

文件结构:
用户组名:密码:用户组ID:组内用户名
- 密码:X表示占位符,虽然用户组可以设置密码,但是绝大部分的情况下不设置密码;
- 组内用户名:表示附加组是该组的用户名称;
①用户组添加
常用语法:#groupadd 选项 用户组名
常用选项:
-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
案例:使用groupadd指令创建一个新的用户组,命名为Administrators

②用户组编辑
常用语法:#groupmod 选项 用户组名
常用选项:
-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字
-n:类似于用户修改“-l”,表示设置新的用户组的名称
案例:修改Administrators用户组,将组ID从502改成520,将名称改为admins

③用户组删除
常用语法:#groupdel 用户组名

注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。

三、网络设置
首先知道网卡配置文件位置:/etc/sysconfig/network-scripts

在目录中网卡的配置文件命名格式:ifcfg-网卡名称

ONBOOT:是否开机启动
BOOTPROTO:ip地址分配方式,DHCP表示动态主机分配协议
HWADDR:硬件地址,MAC地址
如果后续需要重启网卡怎么去操作呢?
#service network restart

在有的分支版本中可能没有service命令来快速操作服务,但是有一个共性的目录:/etc/init.d
这个目录中放着很多服务的快捷方式。
此处重启网卡命令还可以使用:
#/etc/init.d/network restart

扩展1:如果修改网卡的配置文件,但是配置文件的目录层次很深,此时可以在浅的目录中创建一个快捷方式(软连接),方便以后去查找
#ln -s 原始文件的路径 快捷方式的路径

通过ls -l可以列出如下的效果:

其中,文件类型位置的“l”表示其类型为link(连接类型),后面的“->”指向的是原始文件路径。
扩展2:如何去重启单个网卡?
停止某个网卡:#ifdown 网卡名
开启某个网卡:#ifup 网卡名
例如:需要停止-启动(重启)eth0网卡,则可以输入
#ifdown eth0
#ifup eth0
提示:在实际工作的时候不要随意禁网卡。
四、ssh服务(重点)
ssh(secure shell,安全外壳协议),该协议有2个常用的作用:远程连接协议、远程文件传输协议。
协议使用端口号:默认是22
可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:
#/etc/ssh/ssh_config

端口号可以修改,但是得注意2个事项:
- a. 注意范围,端口范围是从0-65535;(65535:16位2进制最大值)
- b. 不能使用别的服务已经占用的端口;
服务启动/停止/重启
#service sshd start/stop/restart
#/etc/init.d/sshd start/stop/restart

1、远程终端
终端工具主要帮助运维人员连接远程的服务器,常见终端工具有:Xshell、secureCRT、Putty等。以putty为例:
①获取服务器ip地址,可以通过ifconfig命令进行查看,然后顺手测试ip的连接相通性

②打开putty,输入相关的信息

③在弹出key确认的时候点击“是”,以后不会再提示

上图翻译:
|
服务器的主机密钥没有缓存在注册表中。您不能保证服务器就是您认为的计算机。 服务器的rsa2密钥指纹是:ssh-rsa 2048 8f:26:75:e3:45:43: ec: ea:5f:62:65: cc:74:3f:34:3c如果您信任此主机,请单击Yes将密钥添加到PuTTY的缓存中并继续连接。 如果您只想继续连接一次,而不向缓存添加密钥,请单击No。 如果您不信任此主机,请单击“取消”以放弃连接。 |
④输入登录信息

2、SSH服务文件传输
可视化的界面传输工具:Filezilla
安装好之后可以查看到桌面图标:

①选择“文件”- “站点管理器(Ctrl + S)”

②点击“文件”菜单下方的“▽”选择需要连接的服务器,连接好之后的效果

③从本地windows上传文件到linux中方式
支持直接拖拽文件,也可以右键本地需要上传的文件,然后点选“上传”即可

④下载linux文件到本地
支持服务器文件直接拖拽到本地,也可以在右侧窗口选择需要下载的文件,右键,点选“下载”。
扩展3:通过命令行工具来传输文件/文件夹
工具:PSCP.exe(是命令行工具,必须通过cmd命令行打开),为了使用方便可以将其放到环境变量目录中
如果不清楚哪些路径是环境变量路径,只需要将其放到C:/Windows目录下即可。

用法:
- a. pscp 选项 用户名@linux主机地址:资源路径 windows本地的地址 (下载到win)
- b. pscp 选项 资源路径 用户名@linux主机地址:远程路径(上传到linux)
- c. pscp 选项 -ls 用户名@linux主机地址 (列出远程路径下结构)
①下载到本地windows
要求将远程linux服务器下的/etc整个目录下载到本地E:\tmp下
#pscp -r root@192.168.21.128:/etc E:\tmp
在CMD中输入之后输入密码


②上传文件到linux
将“E:\coursedocs\运维学科\北京运维01期\01-基础班\20180329_Linux自有服务”所有的内容传输到linux下root用户的家目录
#pscp -r “E:\coursedocs\运维学科\北京运维01期\01-基础班\20180329_Linux自有服务” root@192.168.21.128:/root

PSCP命令尽量掌握,因为将来如果是linux于linux之间传输文件,我们就没办法使用可视化工具了,只能使用“SCP命令”(Linux的SCP命令和上面的PSCP命令使用方法一样)
自有服务,即不需要用户独立去安装的软件的服务,而是当系统安装好之后就可以直接使用的服务(内置)。
五、设置主机名
回顾:
#hostname
#hostname -f FQDN(全限定域名)
①临时设置主机名(立竿见影),需要切换用户使之生效
#hostname 设置的主机名

②永久设置主机名(需要重启)
先找到一个文件
/etc/sysconfig/network 【主机名的配置文件】

修改其中的HOSTNAME为自己需要设置的永久主机名

③修改linux服务器的hosts文件,将yunwei指向本地(设置FQDN)
Hosts文件的位置:/etc/hosts

问题:不设置FQDN会怎么样?
①很多开源服务器软件(例如Apache)则无法启动,或出现报错;
②方便记忆,看到主机名对其作用有一个初步判断;
③如果不设置则会影响本地的域名的解析(本地访问);
六、chkconfig开机启动
作用:相当于windows下“安全卫士”、“电脑管家”之类的安全辅助工具提供“开机启动项”的一个管理服务。
在linux下不是所有的软件安装完成之后都有开机启动服务,有的可能需要自己去添加。除此之外还可以查看和删除。
①开机启动服务查询
#chkconfig --list

其中0-6表示各个启动级别
例如:以httpd为例,其3级别为关闭(off),则表示其在3启动形式下默认开机不启动
5对应的也是关闭,则表示其在桌面环境下也是开机不启动。
再例如:kdump服务,在2,3,4,5的级别下默认开机启动的,其他级别下默认开机不启动
②删除服务
#chkconfig --del 服务名
例如删除httpd服务

③添加开机启动服务
#chkconfig --add 服务名 【必须要保证服务正常运行,才可以添加】

④设置服务在某个级别下开机启动/不启动【重点命令】
#chkconfig --level 连在一起的启动级别 服务名on/off
案例:设置httpd服务在3,5级别下默认开机启动

案例:设置httpd服务在5的级别下默认开机不启动

七、ntp服务(时间同步)
作用:ntp主要是用于对计算机的时间同步管理操作。
时间是对服务器来说是很重要的,一般很多网站都需要读取服务器时间来记录相关信息,如果时间不准,则可能造成很大的影响。
例如:当前虚拟机里的linux时间就是不准确的

同时服务器时间方式有2个:一次性同步(手动同步)、通过服务自动同步。
上游的概念:

①一次性同步时间(简单)
#ntpdate 时间服务器的域名或ip地址
Ip地址查看可以访问:http://www.ntp.org.cn/pool.php

②设置时间同步服务
服务名:ntpd
启动ntpd服务
#service ntpd start 或者 /etc/init.d/ntpd start

设置ntpd服务开机启动:
# chkconfig --list|grep ntpd
# chkconfig --level 35 ntpd on

八、防火墙服务
防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。

防火墙选择让请求通过,从而保证网络安全性。
在当前的centos6.5中防火墙有一个名称:iptables 【7.x中默认使用的是firewalld】
①查看iptables是否开机启动

②iptables服务启动/重启/关闭
#service iptables start/restart/stop
/etc/init.d/iptables start /restart/stop
③查看iptables的状态(规则)
]# service iptables status
如果iptables没有启动,则提示服务没启动,如果已经启动,则显示防火墙的相关的规则信息

④查看规则的命令
#iptables -L -n
含义:
-L:表示列出规则
-n:表示将单词表达形式改成数字形式显示
⑤简单设置防火墙规则
例如,需要允许3306 端口通过防火墙,则规则可以用以下的命令来设置
Linux防火墙默认拦截3306端口
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
#iptables -I INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
Iptables:主命令
-I:表示将规则放到最前面
-A:add,添加规则(最后)
INPUT:进站请求【出站output】
-p:protocol,指定协议(icmp/tcp/udp)
--dport:指定端口号
-j:指定行为结果,允许(accept)/禁止(reject)/丢弃(drop)

添加完成之后需要保存操作:
/etc/init.d/iptables save

测试80端口访问:

CentOS7以及redHat7查看修改防火墙办法:
以root用户登录:
1.查看防火墙状态。
systemctl status firewalld
2.临时关闭防火墙命令。重启电脑后,防火墙自动起来。
systemctl stop firewalld
3.永久关闭防火墙命令。重启后,防火墙不会自动启动。
systemctl disable firewalld
九、rpm管理(重点)
作用:rpm的作用类似于windows上的电脑管家中“软件管理”、安全卫士里面“软件管家”等产品,主要作用是对linux服务器上的软件包进行对应管理操作,管理分为:查询、卸载、安装。
①查询某个软件的安装情况
#rpm -qa|grep 关键词
选项:
-q:查询,query
-a:全部,all
案例:查询linux上是否安装firefox

案例:查询是否安装qq

②卸载某个软件
#rpm -e 软件的名称

火狐卸载的时候是没有依赖关系的,所以可以直接卸载。
但是在卸载Apache的时候提示无法卸载:

当存在依赖关系的时候又不想去解决这个问题的时候可以:
#rpm -e 软件包名 --nodeps

③软件的安装
要想装软件,和windows下一样,先得找到安装包。
软件包的获得方式:
- a. 去官网去下载;
- b. 不介意老版本的话,可以从光盘(或者镜像文件)中读取;
此处以光盘文件为例:
查看块状设备的信息:
#lsblk (list block devices) 查看块状设备的信息

Name:名称
Size:设备大小
Type:类型
MountPoint:挂载点(类似windows下盘符)
扩展:光盘的挂载和解挂
- a. 解挂操作
命令:umount
语法:#umount 当前设备的挂载点(路径)

此时,相当于U盘在windows上已经被弹出了,但是没有拔下电脑USB接口。
- b. 挂载光盘
命令:mount
语法:#mount 设备原始地址 要挂载的位置路径
设备原始地址:地址统一都在/dev下,然后根据大小确定具体name值,拼凑在一起组成原始地址,例如当前:“/dev/sr0”
要挂载的位置路径:挂载目录一般都在mnt下,也可以在mnt下建目录,此处以“/mnt/dvd”为例

安装软件的命令:
#rpm -ivh 软件包完整名称
选项:
-i:install,安装
-v:显示进度条
-h:表示以“#”形式显示进度条

十、cron/crontab计划任务(重点)
作用:操作系统不可能24小时都有人在操作,有些时候想在指定的时间点去执行任务(例如:每天夜里2点去重新启动Apache),此时不可能真有人每天夜里2点去执行命令,此时可以交给计划任务程序去执行操作。
语法:#crontab 选项
常用选项:
-l:list,列出指定用户的计划任务列表
-e:edit,编辑指定用户的计划任务列表
-u:user,指定的用户名,如果不指定,则表示当前用户
-r:remove,删除指定用户的计划任务列表
①列出

②编辑计划任务(重点)
计划任务的规则语法格式,以行为单位,一行则为一个计划:
分 时 日 月 周 需要执行的命令
例如:如果想要每天的0点0分执行reboot指令,则可以写成
0 0 * * * reboot
取值范围:
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四个符号:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成:1-7
/:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6
问题1:每月1、10、22日的4:45重启network服务
45 4 1,10,22 * * service network restart
问题2:每周六、周日的1:10重启network服务
10 1 * * 6,0 service network restart
问题3:每天18:00至23:00之间每隔30分钟重启network服务
*/30 18-23 * * * service network restart
问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
3,15 8-11 */2 * * reboot
案例:真实测试案例,每1分钟往root家目录中的RT.txt中输入当前的时间信息,为了看到效果使用追加输出
计划任务:*/1 * * * * ls ~>> /root/RT.txt
实操:
|
[root@localhost ~]# crontab -e #执行该命令会进入“vim”编辑页面,我们可以将上述任务输入进去,然后保存退出,然后查看任务列表,就会看到我们新建的定时任务 no crontab for root - using an empty one crontab: installing new crontab [root@localhost ~]# crontab -l */1 * * * * ls ~ >> /root/RT.txt
[root@localhost ~]# |
验证是否真的执行:

Crontab权限问题:本身是任何用户都可以创建自己的计划任务。
每个用户创建任务之后,都会生成一个自动生成一个自己的crontab文件,一般位于/var/spool/cron目录下
|
root@localhost cron]# pwd /var/spool/cron [root@localhost cron]# ll 总用量 4 -rw-------. 1 root root 34 5月 21 21:05 root [root@localhost cron]# cat root */1 * * * * ls ~ >> /root/RT.txt |
如果你用命令crontab -r 就会删除当前用户的crontab文件,对应的定时任务也会取消:
|
[root@localhost cron]# crontab -r [root@localhost cron]# crontab -l no crontab for root [root@localhost cron]# ll 总用量 0 [root@localhost cron]# |
但是超级管理员可以通过配置来设置某些用户不允许设置计划任务 :
配置文件位于(黑名单):
/etc/cron.deny 里面写用户名,一行一个


还有一个配置文件:(白名单)
/etc/cron.allow (本身不存在,自己创建)
注意:白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务。

浙公网安备 33010602011771号