Linux-1
CentOS系统初始化
系统初始化:
- 作为一个服务器,有一个必要的设置条件。
- 必须要有一个固定(静态)IP地址,便于程序猿访问服务器,调试bug,便
于用户日常使用。
如何把服务器的IP地址静态化:
- 在终端中输入:setup
- 选择 网络设置
- 选择 设备设置
- 选择 “eth0*******”
- 通过方向键将光标移动到使用DHCP处,敲击空格取消勾选
- 开始配置IP地址、子网掩码、网关、DNS
名称 | 值 |
---|---|
IP | 192.168.123.128 |
子网 | 255.255.255.0 |
网关 | 192.168.123.2 |
主DNS | 114.114.114.114 |
副DNS | 8.8.8.8 |
- 写完之后进行"确定"–>“保存”–>“保存并退出”–>“退出”
将网卡设置为开机自启:
vi /etc/sysconfig/network-scripts/ifcfg-eth0
上述命令中,所提到的内容分别是:
名称 | 意思 |
---|---|
vi | 文本编辑器 |
/etc/ | Linux系统中的所有配置文件目录 |
sysconfig/ | 系统配置文件存放目录 |
network-scripts/ | 网络配置文件存放目录 |
ifcfg-eth0 | 网卡的配置文件 |
- 把光标移动到
ONBOOT=no
,将其的值修改为"yes
": - 按一下键盘上的字母
i
,进入了编辑模式(状态) - 修改完成后,按键盘的ESC键退出编辑模式(状态)
- 再输入一个"冒号"
:
+wq
,表示保存并退出 - 如果修改的文件内容不要想保存,还想退出的话,就输入一个
q!
,这个表示强制退出
至此,完成学习阶段的Linux系统的初始化~
为了兼容起见,修改完静态IP和开机自启之后重启网络服务
service network restart
OR
/etc/init.d/network restart
-
其实,真正的工作环境中,所谓的服务器初始化,通常是不需要开发人员来做的。
-
真正的服务器初始化一般来说指的是,服务器的业务是什么,把相关的软件应用全部都部署完成,才算是初始化完成,而期间会经历N次的重启。
-
一旦服务器初始化完成,非紧急状态不允许服务器重启或关机。
- jdk环境
- 大数据生态圈组件
硬盘(了解)
分区:
名称 | 用途 |
---|---|
主分区 | 用于安装操作系统 |
扩展分区 | 用于存放数据,但是扩展分区不能直接使用,需要创建逻辑分区 |
逻辑分区 | 该分区能够被系统直接识别。 |
名称 | 用途 |
---|---|
MBR | 最多支持4个主分区和2TB的容量显示 |
GPT | 没有主分区的限制,理论上硬盘容量支持18EB |
win7:MBR
win8、win10:GPT
Mac:GPT
在Linux系统中,硬盘的标识:
类型 | 名称 |
---|---|
xvdx(x为a—z): | Xen虚拟机硬盘 |
hdx(x为从a—d): | IDE硬盘 |
sdx(x为a—z): | SCSI,SATA,USB硬盘 |
关于分区的命令:
命令 | 用途 |
---|---|
fdisk | 用于mbr分区表的命令 |
parted | 用于gpt分区表的命令 |
df | 用于查看磁盘的使用情况 |
命令相关提示和目录结构
命令提示符解释:
[root@localhost ~]#
[AlexRomeo@big1903 ~]$
其中各项解释: []中的内容:
名称 | 意思 |
---|---|
root/AlexRomeo | 表示当前登录到系统的用户名 |
@localhost / @big1903 | 表示当前系统的主机名 |
~ | 表示当前用户的所在位,~表示为帐号的家目录 |
# | Linux系统中最高权限的表示符号,一般来说只有root账户具有该权限 |
$ | 普通用户的权限表示符号。 |
- 命令的书写格式:
格式:
命令 选项 参数
命令是必须存在的,选项和参数则不一定写上。
- 不需要选项和参数的命令
ifconfig
setup
- 执行时必须写上参数的命令
ifup eth0
vi /etc/sysconfig/********
命令执行的时候可以同时执行多个选项、多个参数,多个参数之
间必须使用空格的方式来隔开。
如何获取命令的帮助:
man 命令
--help
手册
搜索引擎
目录结构:
项目 | Value |
---|---|
Home(家)目录: | /root,/home/{UserName} |
普通用户可执行文件: | /bin,/usr/bin,/usr/local/bin |
系统管理员可执行文件: | /sbin,/usr/sbin,/usr/local/sbin |
配置文件目录: | /etc |
临时文件目录: | /tmp |
内核和启动文件: | /boot |
服务器数据: | /var , /srv |
系统信息: | /proc,/sys |
共享库: | /lib,/usr/lib,/usr/local/lib |
其它挂载点: | /media,/mnt |
注意:文件或目录名:<=255个字符、区分大小写、不能使用“/”
常见命令(非全部)
与目录操作的相关命令:
命令 | 用途 |
---|---|
pwd | 用于显示当前所处的路径 |
mkdir | 用于创建目录,如果想要一次创建多级目录可以加上 -p 选项来操作(要注意命令与选项、参数之间一定要有空格) |
cd | 用于目录之间的切换。绝对路径:以/开头的路径。相对路径:相对当前位置的路径。“.”表示当前目录“…”表示父目录。“-”表示前一个目录(类似电视遥控器上返回)。“~”表示当前用户home目录 “~用户名”指定用户名对应的。home目录/用户名(例如:cd ~mengxb表示目录就是进入/home/mengxb/) |
ls | 用于显示文件/夹的信息 :-a 显示所有的内容; -l 显示文件的详细信息;-R 递归处理;-d file/dir 表示显示指定的文件信息(需要-l选项配合使用);ll = ls -l |
cp | 用于文件/夹的拷贝, cp [path]/file1 [path]/file2。如果拷贝的是文件夹的话需要使用了-r选项 |
touch | 创建一个空白的文本文件,也可以用来修改文件/夹的时间信息 |
rm | Linux系统中的删除命令,该命令比较危险,能干掉系统。-r 表示递归处理;-f 表示强制执行 |
rmdir | 用于删除文件夹,但只能删除空的文件夹 |
mv | 移动文件或修改文件/夹的名称 |
rename | 批量修改文件名,C语言版 当前系统(CentOS6.5)支持的版本,perl版本 当前系统不支持版本 # 好处是支持正则表达式 |
运行级别
Linux的运行级别
级别 | 含义 |
---|---|
!!0: | 关机 |
!1: | 单用户 |
2: | 无网络的多用户 |
!!!3: | 命令行模式 |
4: | 未用 |
!5: | GUI(图形桌面模式) |
!!!6: | 重启 |
运行级别的切换:
init 运行级别数字
- 提醒:在Linux的命令行界面下,输入密码的地方不会有任何提示。
查看运行级别:
who -r
runlevel
如何进入单用户模式:
- 按键盘的方向键
- 按字母E
- 按字母E
- 输入一个“空格”和“1” ,然后按回车
- 按字母B启动单用户模式
- 出现下图的内容则表示进入了单用户模式,在此模式下输入"
passwd
"即可修改root账户的密码,密码修改完成之后,输入reboot -f
来进行重启。
运行级别的作用:
- 可用于单用户模式下进行密码的修改和系统的修复
- 可以进行重启、关机
修改默认的运行级别:
vi /etc/inittab
修改该文件的最后一行中的内容,将5修改为3
用户、用户组的概念
名称 | 成员 | 作用 |
---|---|---|
用户 | 户主 | 作用是保护用户的隐私 |
用户组 | 户口本成员 | 为团队而设计的概念 |
其他人 | 与用户和用户组无关的所有用户 |
用户及UID
用户 | id规则 |
---|---|
root用户: | 超级管理员,UID是0 |
系统用户: | UID是1-499 |
自定义用户: | UID从500开始 |
用户信息存储位置
信息 | 保存目录 |
---|---|
账户信息存储于 | /etc/passwd |
密码信息存储于 | /etc/shadow |
组信息保存在于 | /etc/group |
- 创建用户的同时,默认还会为用户创建一个同名的组
用户的管理
用户管理:
用户的管理其实就是对用户的创建、修改、删除,密码管理等操作。
创建:
- 语法:
useradd [选项] {UserName}
- 选项
项目 | Value |
---|---|
-c | comment 指定一段注释性描述 #基本不写 |
-d | 目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。 |
-g | 用户组 指定用户所属的用户的主组。 |
-G | 用户组,用户组 指定用户所属的附加组。 |
-s | Shell文件 指定用户的登录Shell。 |
-u | 用户号(UID) 指定用户的用户号 |
- 注:
- UID在系统中,默认情况下是和账户名一一对应的,但可以手动将两个账户修改为同一个UID。
- 如果两个UID相同的话,那么系统就会将它们两个识别为同一个账户,只不过是拥有了不同的帐户名、密码和家目录。
- 其规则是,后者修改为前者的UID,那么就表示后者成为前者。
- 例如,将某一个用户的UID修改为0,则表示该用户修改成了root
案例:
- 创建一个普通用户,其他的属性均为默认。
useradd tom
表示创建一个用户,家目录,用户组,shell程序等均由系统默认设置。
- 创建一个用户,指定该用户的家目录为/big1903/banzhang,指定主组为root
useradd -d /big1903/banzhang -m -g root banzhang
上述命令执行后,用户会被创建,但是该用户的家目录并不会指定成功,因为父级目录(big1903)不存在,-m选项虽然可以创建目录,但是只能创建一级,所以想让上述命令成功执行,那么就需要手动将big1903目录创建出来。
mkdir /big1903
useradd -d /big1903/banzhang -m -g root banzhang
- 创建一个用户jerry,家目录默认,主组是root,附加组是adm,bin 指定UID为600,shell程序为/bin/sh
useradd -g root -G adm,bin -u 600 -s /bin/sh jerry
- 创建成功之后,可以通过id {Username}的形式来查看用户的信息
id jerry
uid=600(jerry) gid=0(root) 组=0(root),1(bin),4(adm)
修改:
- 语法:usermod [选项] {UserName}
- 选项:
选项 | 含义 |
---|---|
-c | comment 指定一段注释性描述 #基本不写 |
-d | 目录 指定用户主目录,如果目录不存在,则同时使用-m选项,可以创建主目录。 |
-g | 用户组 指定用户所属的用户的主组。 |
-G | 用户组,用户组 指定用户所属的附加组。 |
-aG | 用户组,用户组 表示给用户追加附加组 |
-s | Shell文件 指定用户的登录Shell。 |
-u | 用户号(UID) 指定用户的用户号 |
案例:
- 修改用户的附加组(tom账户当前没有附加组)
usermod -G adm,bin tom
- 为用户追加附加组
usermod -aG sys tom
此案例中,需要注意的是aG和G用法
删除:
- 语法:userdel [选项] {UserName}
- 选项:
选项 | 含义 |
---|---|
-r | 表示在删除用户的同时也删除用户的相关信息 |
案例:
- 仅删除一个用户
userdel jerry
删除之后,jerry的家目录依然存在
- 删除用户的同时,一并删除与其相关的信息
userdel -r banzhang
该命令执行成功之后,banzhang账户的家目录就不存在了。
可以通过cd ~banzhang 进行验证。
- 注:企业工作中,一般来说删除账户时不会使用-r的选项,因为该工作人员可能只是暂时离开岗位,过段时间之后可能还会来继续工作。
密码管理:
- 语法:passwd [选项] {UserName}
- 选项:
选项 | 含义 |
---|---|
-l | 锁定密码 |
-u | 解锁密码 |
-d | 删除密码 |
密码的管理涉及到修改自己的密码和修改他人的密码。
修改他人密码时需要管理员的权限。
选项 | 含义 |
---|---|
passwd | 如果后面不跟用户名,那么则表示修改当前账户的密码 |
passwd{UserName} | 就表示修改他人的密码,但这种操作需要管理员权限。 |
普通用户修改自己的密码时,密码需要满足高强度密码的要求
管理员修改自己的或他人密码时,都不需要满足高强度密码的要求。
- 高强度密码:
满足8位,并且符合字母大小写,数字及特殊字符as12AS!@
- 密码:社会人类工程学 - 社工
16位,a!b2
每隔15天必须更换
新密码与前三次的旧密码相似程度不允许超过90%
用户之间进行切换:
- 语法:
su {UserName}
su - {UserName}
语法 | 含义 |
---|---|
su {UserName} | 切换用户之后依然使用当前的环境 |
su - {UserName} | 切换用户之后使用对应账户的环境 |
案例:
[root@localhost ~]# su tom # 切换之后的提示符如下:
[tom@localhost root]$
[root@localhost ~]# su - tom # 切换之后的提示符如下:
[tom@localhost ~]$
用户组的管理
用户组的管理
创建:
- 语法:
groupadd [选项] {GroupName}
- 选项:
选项 | 含义 |
---|---|
-g | GID 指定新用户组的组标识号(GID)。 |
-o | 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 |
案例:
- 创建一个用户组A
groupadd -g 1000 A
groupadd -g 1001 C
- 创建一个用户组B,要求是gid和A组的相同
groupadd -g 1000 -o B
修改:
- 语法:
groupmod [选项] {GroupName}
- 选项:
选项 | 含义 |
---|---|
-g | GID 指定新用户组的组标识号(GID)。 |
-o | 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 |
-n新用户组名 | 将用户组的名字改为新名字 |
案例:
- 将用户组group1修改为group2,并且将其GID修改为0
groupadd group1
groupmod -g 0 -o -n group2 group1
OR
groupmod -n group2 group1 -g 0 -o
删除:
- 语法:
groupdel {GroupName}
- 提示:
如果删除的用户组,已经被用户追加为附件组,对应的所有用户的该附件组会被撤销掉。
如果被删除的用户组,已经被用户指定为主组,则该用户组无法被删除。
用户组的切换:
如果某个用户拥有多个用户组,那么可以通过newgrp来进行用户组之间的切换。
- 例如:
tedu账户具有多个用户组。其中有tedu、test、root
如果tedu账户想切主组为root时,执行下面的命令:
[tedu@localhost ~]$ newgrp root
练习
- 通过命令完成图中的内容:
- 先明确图中都需要哪写内容
目录:big1903,1903目录下有A和C
用户:yaohuikai、xiaqunkai、banzhang、haojiyou
用户组:A、C
首先为了保证用户可以直接创建成功,所以先去系统上创建/BIG1903目录
- 创建目录
mkdir -p /big1903/A
mkdir /big1903/C
- 创建用户
useradd -d /big1903/A/yaohuikai -m yaohuikai
useradd -d /big1903/A/xiaqunkai -m xiaqunkai
useradd -d /big1903/C/banzhang -m banzhang
useradd -d /big1903/C/haojiyou -m haojiyou
- 创建用户组
groupadd -g 1000 A # 此处-g写不写都行,为了练习,写上了
groupadd -g 1002 B
groupadd -g 1001 C
groupadd -g 1003 D
groupadd -g 1004 E
- 将用户分别加入对应的组内
A组成员
usermod -g A yaohuikai
usermod -g A xiaqunkai
C组成员
usermod -g C banzhang
usermod -g C haojiyou
- 实现组内成员共享资料,其他人无权查看:
- 分析:既然是组内成员进行共享,那么应该是可以使用权限的方式来实现。先修改"组"的目录权限为其他人无权限
cd /big1903/
chmod 750 A
chmod 750 C
注: 此类操作需要对文件/夹的所属用户和用户组的修改来实现成员的共享访问需要使用的命令chown
。 语法:chown User:Group file/dir
- 开始对文件夹进行用户组的修改,并且修改该用户组成员具有完全访问权限
chown root:A A
chmod 770 A
命令执行成功后,只有root账户和A组内的成员才能够访问该目录
相同,C组的权限修改方式也和A组的修改命令相同。
3. 实现B组内的成员能够访问A组内的资料,但是C、D、E组的成员依然不能访问
mkdir /big1903/B
useradd -d /big1903/B/lisi -m -g B lisi # 创建账户,指定家目录,指定主组
groupmod -g 1000 -o B # 1000为A组的GID
至此,B组就可以访问A组内的资料。
权限
逻辑权限:chmod [选项] file/dir
- 选项
选项 | 含义 |
---|---|
-R | 表示递归 |
2.字符和数字权限之间的表关系就是
字符 | 含义 | 数字 |
---|---|---|
r | 读 | 4 |
w | 写 | 2 |
x | 执行 | 1 |
-
每一个文件都有三组权限标识
第一组是:用户
第二组是:用户组
第三组是:其他人 -
每一个组中都具备三种权限,如果对应的位置没有权限则用"-"来表示:
三种权限分别就是读、写、执行
案例:
- 某个文件的权限标识:
- rwx r-x r--
第一个符号不是权限标识符,它是文件类型的标识
字符 | 含义 |
---|---|
- | 表示为普通文件 |
d | 表示为目录文件 |
- 如上:
第一个rwx,表示用户具备读、写、执行
第二个r-x,表示用户组具备读、执行
第三个r–,表示其他人具备读。 - 将某个文件的权限修改为751
chmod 751 filename
- 字符和数字权限的使用场景不同。
如果每组都需要增加一个相同权限时,那么就直接使用字符比较快,准。
如果每组增加、删除的权限不同时,那么使用数字可以达到书写便捷的功能。
例如:
chmod u+x,g-w,g+x,o-r,o+x filename.txt
chmod a+x,g-w,o-r filename.txt
chmod 751 filename.txt
物理权限
修改权限:
- 语法:
chattr [选项] [功能] 参数
- 选项:
字符 | 含义 |
---|---|
-R | 递归 |
- 功能:
字符 | 含义 |
---|---|
i | 不能以任何形式对文件/夹进行修改、删除、追加的操作 |
a | 除了追加功能外,其他的操作也不允许 |
+ | 表示开启权限 |
- | 表示关闭权限 |
查看权限:
- 语法:
lsattr [选项] 参数
- 选项:
字符 | 含义 |
---|---|
-R | 递归显示目录下所有子目录和文件的属性 |
-a | 显示所有文件的属性信息,包括以.开头的隐藏 |
-d | 显示指定目录的属性,而不是目录下的文件的属性 |
普通用户的root的权限
- sudo用于普通用户执行root权限时的操作。
在公司里,很多时候我们想要执行的操作需要root权限,但是又不知道root账户的密码,那么怎么办?此时就可以使用sudo来代替root账户来执行。
sudo= super_user do
- 如何赋予一个普通账户具备sudo权限
vi /etc/sudoers
在该文件中找到98行(CentOS6.5系统中),或找到:
root ALL=(ALL) ALL
在此行的下面进行内容的编写,增加内容
admin ALL=(ALL) ALL
保存退出(需强制执行)就表示admin账户具备sudo权限。
- 执行sudo命令的账户必须有密码,否则无法执行。
sudo命令好处:- 第一,不需要知道root账户的密码
- 第二,可以记录执行过的命令
- 第三,可以使用自己的配置的好环境
sudo实操:
- sudoers文件解释
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
##该文件允许特定用户像root用户一样使用各种各样的命令,而不需要root用户的密码
##
## Examples are provided at the bottom of the file for collections
## of related commands, which can then be delegated out to particular
## users or groups.
## 在文件的底部提供了很多相关命令的示例以供选择,这些示例都可以被特定用户或
## ## 用户组所使用
## This file must be edited with the 'visudo' command.
## 该文件必须使用"visudo"命令编辑
## Host Aliases
#主机别名
## Groups of machines. You may prefer to use hostnames (perhap using
## wildcards for entire domains) or IP addresses instead.
## 对于一组服务器,你可能会更喜欢使用主机名(可能是全域名的通配符)
## 或IP地址代替,这时可以配置主机别名
# Host_Alias FILESERVERS = fs1, fs2
# Host_Alias MAILSERVERS = smtp, smtp2
## User Aliases
#用户别名
## These aren't often necessary, as you can use regular groups
## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname
## rather than USERALIAS
## 这并不很常用,因为你可以通过使用组来代替一组用户的别名
# User_Alias ADMINS = jsmith, mikem
## Command Aliases
## These are groups of related commands...
## 指定一系列相互关联的命令(当然可以是一个)的别名,通过赋予该别名sudo权
限,
## 可以通过sudo调用所有别名包含的命令,下面是一些示例
## Networking
#网络操作相关命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping,
/sbin/dhclient,
/usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig,
/sbin/mii-tool
## Installation and management of software
#软件安装管理相关命令别名
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
## Services
#服务相关命令别名
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig
## Updating the locate database
#本地数据库升级命令别名
Cmnd_Alias LOCATE = /usr/sbin/updatedb
## Storage
#磁盘操作相关命令别名
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe,
/bin/mount, /bin/umount
## Delegating permissions
#代理权限相关命令别名
Cmnd_Alias DELEGATING = /usr/sbin/visudo, /bin/chown, /bin/chmod,
/bin/chgrp
## Processes
#进程相关命令别名
Cmnd_Alias PROCESSES = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall
## Drivers
#驱动命令别名
Cmnd_Alias DRIVERS = /sbin/modprobe
#环境变量的相关配置
# Defaults specification
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in
clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR
\
LS_COLORS MAIL PS1 PS2 QTDIR USERNAME \
LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION \
LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME
LC_NUMERIC \
LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS \
_XKB_CHARSET XAUTHORITY"
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## 下面是规则配置:什么用户在哪台服务器上可以执行哪些命令(sudoers文件可以在多个系统上共享)
## Syntax:
##语法
## user MACHINE=COMMANDS
## 用户 登录的主机=(可以变换的身份) 可以执行的命令
##
## The COMMANDS section may have other options added to it.
## 命令部分可以附带一些其它的选项
##
## Allow root to run any commands anywhere
## 允许root用户执行任意路径下的任意命令
root ALL=(ALL) ALL
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING,
PROCESSES, LOCATE, DRIVERS
## 允许sys中户组中的用户使用NETWORKING等所有别名中配置的命令
## Allows people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
## 允许wheel用户组中的用户执行所有命令
## Same thing without a password
## 允许wheel用户组中的用户在不输入该用户的密码的情况下使用所有命令
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 允许users用户组中的用户像root用户一样使用mount、unmount、chrom命令
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
## 允许users用户组中的用户像root用户一样使用shutdown命令
实际案例演示
- 实例1:让普通用户fieldyang具有/etc/init.d/nagios脚本重启的权限,可以
在/etc/sudoers添加如下设置:
[root@test ~]# visudo
fieldyang ALL=NOPASSWD:/etc/init.d/nagios restart
- 实例2:让普通用户fieldyang具有所有超级用户的权限而又不用输入密码
[root@test ~]# visudo
fieldyang ALL=(ALL)NOPASSWD:ALL
[fieldyang@test ~]#sudo su -
[fieldyang@test ~]#pwd
/root
- 实例3:针对MySQL数据库的设置,让test组中的test用户具备/etc/init.d/mysqld的权限
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
[root@test ~]# visudo
# test ALL=(ALL) NOPASSWD: /etc/init.d/mysqld
test ALL=(ALL) /etc/init.d/mysqld
start/stop mysql
3.1) start mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld start
3.2) stop mysql
login test
[root@test ~]# su test
[test@test ~]$ sudo /etc/init.d/mysqld stop
- 实例4:针对tomcat的设置,让test组中的test用户具备tomcat操作的权限
[root@test ~]# groupadd test
[root@test ~]# useradd -g test -m -d /home/test -s /bin/bash test
[root@test ~]# passwd test
[root@test ~]# visudo
# test
ALL=(ALL) /usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
test ALL=(ALL) NOPASSWD:
/usr/local/tomcat/bin/shutdown.sh,/usr/local/tomcat/bin/startup.sh
[root@test ~]# vim /usr/local/tomcat/bin/catalina.sh
### JDK
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
- start/stop tomcat
4.1) start tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/startup.sh
[test@test ~]$ ss -ntlup | grep java
[test@test ~]$ curl -I http://localhost:8080
4.2) stop tomcat
login test
[root@test ~]# su test
[test@test ~]$ sudo /usr/local/tomcat/bin/shutdown.sh
挂载
什么是挂载点:
- 一定是目录,此目录为文件系统的入口
为什么要进行挂载,因为文件系统默认情况下是不能够提供给我们使用的,必须挂载到某个目录下才能够正常的访问,类似于Windows系统中给分区(或者说U盘等移动设备)添加(自动添加)盘符,因为有盘符才能够正常的访问,如果没有盘符的话就不能正常的访问该分区的文件系统。
挂载:
- 语法:
mount 文件系统 目录(此处的目录类似于Windows的盘符)
案例:
- 将光盘挂载到指定的目录下
mkdir /home/cdrom # 此处的cdrom并不是固定名称,只是为了见名知意
mount /dev/cdrom /home/cdrom
挂载成功后可以通过cd命令到目录中进行查看。
卸载:
- 语法:
umount 目录
案例:
- 将之前挂在的/home/cdrom目录下的光盘卸载掉
df -h
# 此命令为了查看具体的挂载目录(盘符)是什么,如果知道挂载目录的位置,就无需执行此命令!
umount /home/cdrom
如果在卸载的时候出现了下列提示表示可能文件系统中的某个程序被执行了,也有可能是因为当前处于目录中。
umount: /home/udisk: device is busy.(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
网络相关设备
交换机:
- 由来,早期的时候并没有这个设备,当时使用HUB设备进行数据的发送,但是HUB发送数据的特性广播,这样的方式,数据不安全,增加网路带宽的消耗。
- 交换的工作原理,通电之后,在自己的内部建立一张设备Mac地址表(设备说的通过网线连接在自己身上的)。这张表中记录了设备的Mac地址或其他的信息。
- 交换机可以组建局域网(内网)。
路由器:
(实现网络代理的功能,在公共网络上,上网的节点是路由器,并不是电脑。)
- 将局域网中的数据转发至公共网络(外网)。
- 早期上网的方式是,通过电话线插入电脑上,进行拨号上网。此方式的缺点:
1、电话一直占线。2、有可能电话进来,掉线。 - 通信公司发现这样的缺点之后,出现了一个新的设备,这个设备的功能可以将电话线路一分为二。分别实现电话、上网的功能。调制解调器(猫)。
- 随着社会的发展,发现这种方式又不能满足日常的上网需求。一个猫只有一个接口,无法满足多台设备上网的需求的。
- 将多台设备接入交换,交换机的其中一个接口连接路由器。
连接顺序:猫上出的网线接入路由器的WAN口,路由器的LAN口接入交换机。 - 无线设备。大约在2008年,家用无线路由器开始普及。
无线路由器是将交换机和有线路由器和在一起产品。
买新不买旧
网络地址相关
配置网络的时候需要配置哪些信息:
名称 | 含义 |
---|---|
IP地址 | PC在网络中的通信地址。 |
子网掩码 | 子网掩码有且只有这一个功能,用于划分网络,将一个IP地址中的网络位和主机位进行划分。是一个32位的地址。 |
网关 | 网络的关口,用于数据转发,通常理解为路由器的地址,大部分硬件厂家的出厂默认地址是,192.168.0.1 /192.168.1.1 |
DNS | 用于解析域名的作用,Domain Name System 域名解析系统。 |
在网络中,一般来说.0这个IP被用来当作网段的标识。255这个IP被用来当作广播地址使用,正常使用IP范围中,其中一个IP地址要被拿来当作网关(路由器)使用。
- 一个网络中有多少个IP地址,取决于子网掩码。
比如:家用网络中,一般都是
192.168.1.2-255
255.255.255.0
192.168.1.1
其中,192.168.1.2-255为主机IP地址。255.255.255.0子网掩码(用于划分网络,子网掩码可以计算IP地址的数量。)。192.168.1.1作为网关使用。
192.168.1.0用来表示网段。
案例:公司建立机房,决定投资建设10000台服务器的机房,那么设计网络时,掩码应该如何设计,网关应该如何设计。
16位掩码有效IP地址65534个。完全可以满足10000台服务器的需求。
网关建议大家紧贴广播地址。当前这个网络中,网关地址是192.168.255.254。
网络传输过程:
DNS:
- 静态:
优缺 | 内容 |
---|---|
优点 | 可以使我们PC/服务器有一个更快的解析速度。维护方式是手动配置服务器上hosts文件。 |
缺点 | hosts一般都是为本机系统所有,维护一台服务器还好说。如果是上千台集群,那么维护的工作最终会成为个灾难 |
- 动态:
优缺 | 内容 |
---|---|
优点 | 只需要给服务器指明DNS服务器地址即可,无需手动配置hosts文件 |
缺点 | 有一定响应时间,(延迟)。若DNS服务器宕机,那么我们就立即失去访问域名的能力。 |
passwd、shadow、group解释
passwd:
文件中,每一行对应一个账户。每一个行的内又由:隔开,分为7段。
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
名称 | 含义 |
---|---|
用户名 | 登录系统的账户 |
口令 | 密码,现已经不再passwd文件中显示密码了,用特殊的字符代替 |
用户标识号 | UID,默认情况下和账户一一对应。用户系统标识用户信息,如果两个uid相同的账户,系统会识别为同一个账户 |
组标识号 | GID,这里记录的GID表示该账户的主组是谁。 |
注释性描述 | 对账户的描述,自定义账户通常情况下都不写 |
主目录 | 表示该账户登录系统之后默认处于哪个目录下,对应的账户在该目录下具有最高的权限,(除root和其他管理员外,只有账户对此目录拥有权限) |
登录shell | 用户和内核之间的翻译官,负责将操作告诉内核来执行。每个账户登录系统之后都会启动一个shell程序,每个账户在被创建之时都会被指定一个shell程序,默认指定为/bin/bash |
shadow
用于存放系统账户的密码,早期的时候该文件并不存在,当时的密码存放在passwd中。但是,由于passwd文件是所有人可读,密码毫无安全可言,并且已不没有密码扩展的空间。
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
名称 | 含义 |
---|---|
登录名 | |
加密口令 | 通过算法加密之后的口令,不能使用{$./0-9 A-Z a-z}集合外的内容。否则密码无效 |
最后一次修改 | 表示密码修改的时间,时间起点是1970.1.1开始。单位是天数。 |
时间 | |
最小时间间隔 | 表示修改过密码之后再次修改密码时需要的间隔天数。 |
最大时间间隔 | 是密码的生命周期 |
警告时间 | 密码到期之前N天来提示用户密码即将过期 |
不活动时间 | 密码过期之后,最多N天旧密码仍然有效。 |
失效时间 | 密码的生命周期结束后,不再是一个合法密码,绝对失效。 |
标志 | 官方预留~ |
group
用于保存用户组信息
组名:口令:组标识号:组内用户列表
名称 | 含义 |
---|---|
组名 | |
口令 | 很多发行版本中,用户组也是可以加密码的。一般来说没什么用 |
组标识号 | 作用和用户标识号一样,也是用来系统标识的作用 |
组内成员列表 | 组内的所有成员,包括主组和附加组的。 |
虚拟机的连接模式
NAT模式:
NAT模式其实就是利用网络中的一个路由的知识点,在一个网络中架设另外一台路由器来形成一个独立的子网络。
如下图:
而VMware中vmnet8其实就相当于是上图(网络拓扑图)中的子路由。实际环境中,我们的电脑其实就相当于是子路由。
子路由的WAN口IP地址实际上就是电脑获取到的IP地址。
子路由的LAN口地址实际上就是VMNet8所提供的网关。
优缺 | 内容 |
---|---|
NAT模式优点 | 无视宿主主机的网络环境,只要是VMNet8网卡服务器启动,就不会影响所有的虚拟机之间的访问。在此情景下,可以给虚拟机设置静态IP地址。便于我们的访问。 |
NAT模式缺点 | 与宿主主机相同网络其他主机默认情况下无法访问虚拟机 |
桥接模式:
VMware的桥接模式实际上在宿主主机的物理网卡上安装一个vmware的桥接服务(图1.1)。利用此服务器使虚拟机获取到宿主主机的真实的网络环境,从而实现网络的访问。
此连接方式的好处是虚拟机可以直接使用真实的网络环境,并且虚拟机和宿主主机处理平级的网络。
图1.1
图1.2
优缺 | 内容 |
---|---|
桥接模式优点 | 使自己的处于和宿主主机相同的网路下,可以与任何一台同局域网中的设备进行直接通信,其他的物理机也都可以直接访问到虚拟机。 |
桥接模式缺点 | 虚拟机的网络随宿主主机的网络发生变化而改变,网络地址非常的不稳定。只要是宿主主机变更了网络环境,那么此虚拟机就不能够被正常的访问。 |
仅主机模式(此模式仅做了解,不常用):
- 此模式下,虚拟机只能和宿主主机进行通信,无外网访问权限,与宿主主机同级网络的其他服务器无法访问到虚拟机。
NAT模式下访问
正常来说其他的机器是无法访问虚拟机的,但可以通过端口映射的方式来访问到虚拟机。
- 打开vmware的"虚拟网络编辑器"
- 选中"VMnet8",点击NAT设置(win10需要管理员权限)
- 在弹出的窗口中,点击"添加",然后进行配置
注意红色框的内容是需要根据自己的网络来写的。
4、填写完成之后,一路点击"确定",直到出现下图则表示vmware在应用新的NAT网络配置。
- 此后,与宿主主机同级的其他机器,可以通过ssh的方式来访问宿主主机的IP地址,来实现和虚拟机的通信。
在xshell中新建的窗口中输入下图中的命令,其中root是虚拟机的账户,192.168.17.2是宿主主机的IP地址,6666是映射的端口。
Linux其他网络相关
远程管理
在远程管理中,如果出现下面表格的内容,则表示是第一次访问对方:
Are you sure you want to continue connecting (yes/no)?
远程登录:
- 语法:
ssh {UserName}@Host_ip | Host_Name
# Host_name需要在/etc/hosts文件中写明对应的主机ip和主机名
通过ssh方式去访问远程的服务器时,需要输入对方对应的账户密码。
远程拷贝:
- 将本机文件发送给远程的服务器
- 语法:
scp [-r] [path]/file | dir {UserName}@Host_ip | Host_Name:path
- 把远程服务器的文件拷贝到本地:
- 语法:
scp [-r] {UserName}@Host_ip | Host_Name:path/file | dir 本地路径
免密登录
使用场景:
- 集群管理,在工作环境下,集群数量众多,且集群之间互相访问频繁,输入密码这个事情会成为大数据开发工程师的灾难。
- 可以使用证书去登录服务器,避免服务器管理密码泄漏。因为证书本身即为不可逆的加密。其次ssh-keygen命令还支持对私钥证书设置密码。
如何生成证书:
ssh-keygen
输入此命令之后回车即可开始生成证书文件
提示 | 内容 |
---|---|
第一次提示 | 在问证书的存放位置,默认执行即可 |
第二次提示 | 对id_rsa(私钥)设置密码(默认回车表示不设置密码) |
第三次提示 | 对刚刚输入的密码进行确认。(若没输入,直接回车) |
注:证书生成完之后,所展现的图案是不同的,即便是同一台主机多次进行证书的生成,图案
也不会相同。
如何进行免密登录:
id_rsa id_rsa.pub
需要将证书进行注册。
将来想要用私钥免密去访问谁就注册给谁。
注册的行为就是将id_rsa.pub文件的内容注册到远程服务器上。
此后,任何拥有id_rsa的人都能访问被注册的服务器
ssh-copy-id {UserName}@Host_IP | Host_Name
# 如果是第一次访问服务器,那么会提示是否要进行访问
# 能够进行通信,继续访问时,需要输入远程服务器的密码。
案例:按照学习的知识了解到,公钥证书文件注册到服务器之后,私钥就可以进行免密登录,于是想到把公钥文件注册给自己。
ssh-copy-id root@自己的ip地址!!!!!
按照提示走,输入完密码之后会有下图中的提示!
验证是否可以进行免密登录
ssh root@你自己的的IP地址!!!
.ssh
目录下的相关文件:
文件名 | 作用 | 什么时候出现 |
---|---|---|
id_rsa | 天王盖地虎(私钥) | ssh-keygen命令执行完之后会出现 |
id_rsa.pub | 欧巴一米五(公钥) | ssh-keygen命令执行完之后会出现 |
known_hosts | 记录本机曾经访问过的服务器信息 | 只要成功访问了其他服务器之后会出现 |
authorized_keys | 记录id_rsa.pub文件的内容,用来和id_rsa对校验 | 有人把id_rsa.pub内容注册到本机时,文件就会出现。 |
思考:
- 如果是集群管理环境下,是否需要在每台服务器上都进行证书生成和注册的操作?
- 答:根据免密登录的工作原理,通过rsa非对称加密算法生成的两个证书id_rsa(私钥)、id_rsa.pub(公钥)可以进行免密的操作,此操作为将id_rsa.pub的内容注册给需要进行免密登录的服务器,在该服务器上会生成一个文件——authorized_keys,此文件会记录id_rsa.pub文件的内容。
此后任何拥有id_rsa的工程师,或服务器都可以进行免密登录。
也就是说,无论多少台的集群环境,只需要一个证书的注册即可,然后将文件分发给集群中的服务器。
xshell(终端)通过证书登录服务器
- 先通过资料中提供的软件——WinScp,安装完成之后,连接服务器,把id_rsa文件给Down下来。
- 通过Xshell,去新建一个会话,然后填写会话名称,服务器IP地址。
- 在输入用户名和密码的页面,找到"方法",选择"Public Key"的方法,然后输入用户名,选择"用户密钥",
- 如果没有,点击浏览添加密钥。
- 之后进行登录即可~
wget下载
Linux系统自带的下载工具
- 提供断点下载功能
- 提供限速下载功能
- 提供FTP和HTTP的两种协议链接
使用wget下载单个文件
wget http://www.tedu.cn
使用wget -O下载并以不同的文件名保存
wget -O NewName.new http://www.tedu.cn
使用wget --limit-rate限速下载(单位,byte/秒)
wget --limit-rate=300k http://mirrors.hust.edu.cn/apache/httpd/httpd-2.2.34.tar.bz2
使用wget -c断点续传
wget -c http://mirrors.hust.edu.cn/apache/httpd/httpd-2.4.25.tar.bz2
使用wget -b后台下载
wget -b http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
wget http://mirrors.hust.edu.cn/apache//httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
使用wget -i下载多个文件
wget -i urlfile.txt # urlfile.txt 文件只是为了见名知意urlfile.txt内容为
http://www.tedu.cn
http://big.tedu.cn/index.html
进程相关
什么是进程:
- 执行程序具体过程、程序的具体实现在任何一个系统中,打开一个程序或执行一个命令就可以启动一个进程。
- Linux系统的第一个进程就是init。
- Linux系统不像Windows拥有一个非常方便的进程管理工具"任务管理器"。
如何查看一个进程:
- 静态:
ps
:
ps不是平时生活中见到的photoshop,Process Status(进程状态),在Linux系统中,PID表示进程的ID(Process ID)。
ps常用的选项通常是组合起来使用的。
常用组合选项:-aux
选项 | 含义 |
---|---|
a | 表示所有的 |
u | 用户 |
x | 后台,通常与a配合使用,用来查看更多的信息 |
ajxf | 以树状的形式显示系统当前的所有进程。 |
---|
各项名次解释:
名称 | 意思 |
---|---|
USER | 用户 |
PID | 进程ID |
%CPU | cpu使用百分比 |
%MEM | 内存使用百分比 |
VSZ | 虚拟内存使用量 |
RSS | 物理内存使用量 |
TTY | 表示终端机,tty*表示在本机上登录的程序,pts/*表示由网络连接进来的主机 |
STAT | 进程的状态 |
START | 进程开始的时间 |
TIME | 进程累计使用cpu的时间 |
COMMAND | 该进程具体是由哪个命令来启动的。 |
状态:
状态 | 意思 |
---|---|
R | 正在运行,或在队列中的进程 |
S | 处于休眠状态、 |
< | 高优先级 |
N | 低优先级 |
s | 包含子进程 |
+ | 位于后台的进程组 |
- pstree
仅仅只是把进程以更好看的形式给展示出来。
选项:
选项 | 含义 |
---|---|
-A | 各程序树之间的连接以 ASCII 字符来连接; |
-U | 各程序树之间的连接以万国码的字符来连接。在某些终端接口下 可能会有乱码; UTF-8 |
-p | 并同时列出每个 process 的 PID; |
-u | 并同时列出每个 process 的所属账号名称 |
- 动态
- top
相对ps命令而言,top可以更有效的帮助工程师来查看服务器的负载状态。
top是一个持续观察系统进程状态的工具,默认是3秒一更新进程的状态。
功能:
选项 | 含义 |
---|---|
-d number | 后面的number是一个数字,表示top可以进行每多少秒的一次内容更新。 |
-b | 表示top的结果可以按照批次的方式来显示 |
-n | 通常情况-n选项和-b一起来使用可以做到top以批次方式输出,-n后面跟上一个数字,可以控制top批次输出的次数。 |
-p | 在-p后面填写一个进程的ID,可以使top只观察指定的进程。 |
交互按键:
按键 | 含义 |
---|---|
? : | 显示在 top 当中可以输入的按键指令 |
P : | 以CPU的使用资源排序显示 |
M : | 以Memory的使用资源排序显示 |
N : | 以PID来排序 |
T : | 由该Process使用的CPU时间累积 (TIME+) 排序 |
k : | 给予某个PID后kill该进程(内核2.6后失效) |
q : | 离开top软件的按键 。 |
top默认排序的方式,是按照CPU的使用率进行的,如果多个进程的CPU使用
率为一致的情况下,那么优先按照内存的使用量来排序。
进程的管理:
- Linux管理进程的方式通常是使用一个名为kill的命令来操作,但是kill并不是杀死一个进程,kill是一个信号指示。
信号:
信号 | 含义 |
---|---|
1 | 对于守护进程而言,类似于reload(重新读取、加载)的操作,但如果不是守护进程就会结束该进程。 |
2 | 类似于键盘的Ctrl+C的操作。终止(放弃)当前的操作 |
9 | 强制结束一个进程(不能结束系统级别的进程) |
15 | 以正常的方式结束一个程序 |
- 单个进程的管理:
- 语法:
kill -信号 pid
- 多个进程的管理:
- 语法:
killall -信号 程序名
案例:
- 结束httpd所有的服务
service httpd start
ps -aux | grep httpd
killall -9 httpd
结束java的所有服务
killall -9 java