基本命令
unix---只能在特定基站上运行
手机:root---管理员---unix
Linux是类unix
- [root@wk~] #
root:登录用户,root管理员
@:间隔符
wk:主机名
~:当前所在目录,~代表家目录
#:身份(管理员),#root,$普通用户
- Linux命令语法
命令 选项 参数
ctrl c 中止
ctrl shift + 放大字体
ctrl - 缩小字体
ctrl shift t 打开另一个终端
ctrl shift c 复制
ctrl shift v 粘贴
clear或ctrl l 清屏
- 多使用tab键
- man---manual-手册(eg:man touch)
- 历史命令 history
- 命令调用
!num ---!281---调用281条命令
!cmd ---!head ---调用以head且离当前最近的命令
!! ---调用上一条命令
esc(组合键).---调用上条命令的参数
- [root@localhost ~]# yum install -y tree
[root@localhost ~]# tree -L 1 /
bin -> usr/bin ---存放普通程序(指定)
boot ---引导程序
dev ---硬件设备(光盘,U盘,硬盘等)
etc ---配置文件
home ---普通用户家目录 C:\users\username
lib -> usr/lib ---库文件,以.so结尾 windows.dll
lib64 -> usr/lib64 ---库文件,以.so结尾 windows.dll
media ---媒介文件
mnt ---临时挂载点
opt ---option
proc ---进程
root ---管理员家目录 C:\users\username
run ---正在运行的临时目录
sbin -> usr/sbin ---存放管理员的程序
sys ---跟系统相关的
tmp ---临时目录
usr ---C:\program\files
var ---日志 /var/log/message
- 路径表示
绝对路径
从/开始
具有唯一性
eg:树根---树干---树枝---树叶
相对路径
半路上开始---当前目录开始到最后
eg:树干---树枝---树叶
- 基本命令管理
目录管理命令(pwd cd ls mkdir)
pwd:显示当前工作命令(print working directory)
cd:更改目录(change directory)
cd .. 返回上一层目录
cd - 返回上一次进入的目录
cd ~ 返回家目录
ls:列表(list)
-a(all) 查看所有文件包含以.或..开头的文件
-l(long) 长格式显示文件信息
-h(human) 人性化显示,必须配合l使用(-lh)
-d 查看目录自身属性,配合l使用(-ld)
mkdir:创建目录(建议创在/下面) eg:mkdir /test
-p 递归创建目录结构
文件管理命令(touch cp mv rm)
touch 创建空文件或刷新时间戳
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -ld 1.txt
- rw-r--r--. 1 root root 0 7月 9 11:29 1.txt
文件类型 文件权限 节点 拥有人 拥有组 大小 最后一次修改时间 名称
- 普通文件
d 普通目录
l 链接文件
刷新时间戳(同上命令)
cp(copy) ---默认情况只能复制文件
cp [option] 源 目标
-r 递归复制目录结构
mv 剪切或者重命名
mv [option] 源 目标
rm(remove) 删除
-r 递归删除目录结构
-f 强制
(生产中不要用以下两条命令)
rm -rf /* ---删除/下面所有
rm -rf / * ---删除/
文件查看命令(cat more less head tail)
cat 一次性输出,适合查看短文件
more 只能下翻,不能上翻
less 既能上翻,也能下翻
head 查看文件头十行(默认情况)
-n 指定行数 查看文件头几行
eg:head -n 2 /etc/passwd
tail 查看文件尾十行(默认情况)
-n 指定行数 查看文件尾几行
eg:tail -n 2 /etc/passwd
- 通配符---别名---vim
alias---查看别名
eg:# alias qq=’ls -l’---设置别名
# unalias qq---取消别名
通配符
* 匹配所有
eg:# ls *.txt
? 匹配任意一个字符
eg:# ls ?.txt
[abc....] 匹配[]里面的任意一个关键字+后缀
eg:ls [abc].txt
{a,b}或{a..c}(a到c) 匹配{}里面的任意一个关键字+后缀,没有匹配到则会提示
eg:ls {a,b}.txt | ls {a..c}.txt
其他通配符
[!abc]或[^abc] 任何除开abc的字符
- Z] 任何字母字符
- z] 任何小写字符
- Z] 任何大写字符
[0-9] 任何数字
[0-9a-Z] 任何数字或字母
[ ] 任何空白符号
vim
vi:没有高亮显示
vim:有高亮显示(即有颜色)---升级版 设置行数 :yset nu
三种模式
命令模式:默认使用vim打开的时候就是命令模式(标志性动作:光标闪动)
输入模式:按aio任意一个字符进入输入模式(标志性动作:英文---insert,中文---插入)
a:光标后输入
A:光标所在行行尾输入
i:光标前输入
o:光标下一行输入
O:光标上一行输入
末行模式末行中输入一些指令(标志性动作: :)
三种模式的切换
命令模式 a|i|o ------> 输入模式
<------- esc
命令模式 : ----------> 末行模式
<--------- esc
光标的移动
命令模式
上下左右箭头
hjkl-----左下上右
行间的跳转
命令模式
gg:跳转至第一行
G:跳转至最后一行
3gg:跳转至第三行
末行模式
:5 跳转至第五行
:% 跳转至最后一行
行内跳转
^(shift 6) | home:跳至行首
$(shift 4) | end:跳转至最后一行
w 单词跳转
页面跳转
pgup:向上翻页
pddn:向下翻页
复制
命令模式:
yw:复制单词
yy:复制光标所在行
3yy:连续复制3行(包括光标所在行)
末行模式:
:1,4y 复制1-4行
:17y 复制第17行
:%y 复制全文
粘贴
p:在光标后面粘贴
P:在光标之前粘贴
删除
命令模式:
x/del:删除光标所在字符
dw:删除单词
dd:删除光标所在行
D:删除光标所在行之后的所有东西
dgg:删除光标(包括光标所在行)之前的所有
dG:删除光标之后所有(包括光标所在行)
3dd:删除连续3行(包括光标所在行)
末行模式:
:1,3d 删除1-3行
:2d 删除第二行
:%d 删除全文
剪切 删除+粘贴(无需复制)
撤回
u:撤回
保存退出
w 保存
q 退出
wq/x 保存退出
q! 强制退出
w! 强制保存
wq! 强制保存退出
备注:!表示强制
补充:命令模式-----ZZ
查找(/或?表示查找,同man帮助)
/bin 查找bin
n向下查找,N向上查找
替换
末行模式:
:s/root/user1 将光标所在行的第一个root换成user1
:s/root/user1/g 将光标所在行的所有root换成user1
:1,5s/bin/qq/g 将1-5行中所有的bin换成qq
:%s/bin/qq/g 将全文所有的bin换成qq
设置行号
末行模式:
:set nu 设置行号
:set nonu 取消行号
读入其他文件内容
末行模式:
:r /文件路径
eg: :r /etc/hosts
:w >> 1.txt 将当前文件中的内容追加到1.txt中
批量注释
ctrl v 进入可视化块
按上下键选中要注释的行
按I(大写的I)进入输入模式
输入#或者//
按两下esc(组合键)
批量取消注释
ctrl v 进入可视化块
按上下键选中要取消注释的行
按d
- 在Linux系统中打开记事本(gedit)
- 重定向
标准输入
> file(覆盖) eg:# echo “Apache1” > 1.txt # cat 1.txt
>> file(追加) eg:# echo “hhh” >> 1.txt # cat 1.txt
- file(错误重定向)
eg:[root@localhost ~]# cat 3.txt
cat: 3.txt: 没有那个文件或目录
[root@localhost ~]# cat 3.txt 2> 2.txt
[root@localhost ~]# cat 2.txt
cat: 3.txt: 没有那个文件或目录
2>> file(错误重定向(追加))
/dev/null是黑洞文件(有进无出)
eg:[root@localhost ~]# cat 3.txt 2> /dev/null
[root@localhost ~]# cat /dev/null
[root@localhost ~]#
[root@localhost ~]# cat 10.txt 11.txt > 2.txt
cat: 11.txt: 没有那个文件或目录
[root@localhost ~]# cat 2.txt
qwer
&> file 混合重定向
[root@localhost ~]# cat 10.txt 11.txt &> 2.txt
[root@localhost ~]# cat 2.txt
qwer
cat: 11.txt: 没有那个文件或目录
&>> file
管道(|)
作用:将左边的结果传给右边
eg:echo “redhat” | passwd --stdin(标准输入) root(用户) ---设置密码
ls | grep(过滤) “1” ---在当前目录下过滤出带1的文件
- 文本内容筛选
grep:过滤
-i 忽略大小写
-v 取反 eg:ls | grep -v “if” ---过滤出不含if的文件
^root 以root开头 eg:grep “^root” /etc/passwd
bash$ 以bash结尾 eg: grep “bash$” /etc/passwd
^$ 空行 eg:grep -v “^$” 1.txt ---过滤空行取反
grep -v “^#” /tmp/passwd ---过滤出有效字段(过滤掉以#开头的行)
练习:
# grep “na” /etc/resolv.conf | grep -v “^#” /etc/resolv.conf > /root/lines.txt
vim练习
- 通过cp /etc/passwd /tmp/生成vim练习模板文件,用vim编辑器打开/tmp/passwd文件,并以此文件作为练习素材
- 在/tmp/passwd文件中显示行号
:set nu
- 在最后一行读入/etc/hosts和/etc/selinux/config的内容
:r /etc/hosts
:r /etc/selinux/config
- 切换到最后一行,读入/etc/passwd的内容
:r /etc/passwd
- 删除10到20行的内容
:10,20d
- 将6,7行剪切到100行后
:6,7d
:100
p
- 在文件中查找”bin”字符串
/bin或者?bin
- 将文件中所有的”bin”字符串替换为”easthome”
:%s/bin/easthome/g
- 保存该文件后退出vim编辑器
:wq或:x
- 滤除该文件所有的空行之后,保存到/media/passwd.txt
cat /tmp/password | grep -v “^$” > /media/password.txt
- 删除/media/passwd.txt
rm -rf /media/passwd.txt
管理本地用户和组
- 用户(UID)类型
超级用户 root
普通用户
程序用户 ---不允许登录(以Apache为例)
- /etc/passwd 字段解释
root: x :0 :0 :root: /root: /bin/bash----允许用户登录
/sbin/nologin----不允许用户登录
用户名 密码 uid gid 描述信息 家目录 登录shell
[root@localhost ~]# vim /etc/default/useradd
# useradd defaults file
GROUP=100 //组为100
HOME=/home //指定家目录的位置
INACTIVE=-1 //是否启用账号过期停权,-1表示不启用
EXPIRE= //终止日期,不设置表示不启用
SHELL=/bin/bash //登录shell
SKEL=/etc/skel //新用户家目录默认存放的文件
CREATE_MAIL_SPOOL=yes //创建邮箱文件
[root@localhost ~]# egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail //邮箱路径
PASS_MAX_DAYS 99999 //密码永不过期
PASS_MIN_DAYS 0 //密码过期期限
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes //创建家目录
UMASK 077 //掩码
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 //密码加密方式
RECH6:uid,gid是从500开始的
RECH7:uid,gid是从1000开始的
- 用户
useradd --添加用户
格式:useradd [选项] 用户名
-c:描述信息
[root@localhost ~]# useradd -c hahaha user1
-d:指定家目录位置
[root@localhost ~]# useradd -d /home/qq user2
-u:指定uid
[root@localhost ~]# useradd -u 1234 user3
-g:指定主组(基本组)
[root@localhost ~]# groupadd group1
[root@localhost ~]# useradd -g group1 user4
-G:指定附加组(从属组)
[root@localhost ~]# groupadd group2
[root@localhost ~]# useradd -G group2 user5
[root@localhost ~]# usermod -G group2 user4
[root@localhost ~]# id user4
uid=1001(user4) gid=1001(group1) 组=1001(group1),1002(group2)
-s:指定登录shell
[root@localhost ~]# useradd -s /sbin/nologin user6
注意:useradd里的-u是指定uid,-g指定主组
groupadd中的-g才是指定gid
总结:su root和su - root环境变量(# $PATH)不一样,建议使用su - root来切换到root用户
修改密码:passwd或者echo “12345678” | passwd --stdin root
usermod --修改用户
格式:usermod [选项] 用户名
-c:描述信息
[root@localhost ~]# usermod -c xixixi user1
-d:指定家目录位置
[root@localhost ~]# usermod -d /home/qwer user2
-u:指定uid
[root@localhost ~]# usermod -u 6666 user3
-g:指定主组
[root@localhost ~]# usermod -g group1 user5
-s:指定登录shell
[root@localhost ~]# usermod -s /sbin/bash user6
userdel --删除用户
格式:userdel [-r] 用户名
注意:userdel user1 只删除存放有user1的文件(/etc/passwd,/etc/group,/etc/shadow)
userdel -r user2 会将user2所有相关文件全部删除
练习:
创建用户为fred,uid为1234,密码为fred1111
# useradd -u 1234 -p fred1111 fred
- 管理组
/etc/group字段解析
root:x: 0:
组名 密码 gid
建立群组
groupadd group1
-g 指定gid
[root@localhost ~]# groupadd group10
删除群组
groupdel group1
修改群组信息
groupmod
-g 修改gid
-n 修改组名
[root@localhost ~]# groupmod -g 8888 group10
[root@localhost ~]# groupmod -n group11 group10
让用户加群组
- 先创建群组,再在创建用户的过程中使用-g直接加群组
eg:groupadd group1
useradd -g group1 user1
- 先创建用户和组,用gpasswd将用户加入到群组
eg:将用户加入testgroup组
[root@localhost ~]# groupadd testgroup
[root@localhost ~]# gpasswd -a user1 testgroup
eg:给testgroup组指派管理为user1
[root@localhost ~]# gpasswd -A user1 testgroup
eg:将用户从testgroup组删除
[root@localhost ~]# gpasswd -d user1 testgroup
5.总结
useradd和usermod(-c,-d,-u,-g,-G,-s)
userdel(-r)
groupadd或groupmod(-g(gid),-n(根名))
groupdel
gpasswd(-a(从群组添加用户),-d(从群组删除用户),-A(设置组长))
/etc/default/useradd
/etc/login.defs
切换用户:su - root,su root
密码:passwd或者echo “redhat” | passwd --stdin root
6.visudo
让普通用户拥有root用户的权限(部分权限或者所有权限),临时切换到root用户,用root身份做事
# visudo
# vim /etc/sudoers ---只读文件,需要加!强制文件
# visudo
root ALL=(ALL) ALL
用户名/组名 主机名 角色名 命令
检测语法
# visudo -c
/etc/sudoers:parsed OK
实验一:
让wangke用户和root用户拥有一样的权限
1.visudo
2.添加wangke ALL=(ALL) ALL
3.切换wangke用户测试
sudo useradd user10
问题:
A为管理员,B为普通用户
A给B设置了和自己一样的权限(能做任何事,也能将A删除)
实验二
将useradd,usermod,userdel,passwd权限给wangke用户,但不在root上生效
- 找到useradd,usermod,userdel,passwd的二进制文件
[root@localhost ~]# which useradd
/sbin/useradd
[root@localhost ~]# which passwd
/bin/passwd
2.编辑sudo文件---visudo
添加wangke ALL=(ALL) /sbin/user*,/bin/passwd,
让wangke用户可以操作useradd,mod,del和密码
!/sbin/user* *(代表任何选项) root
对root不生效
3.验证
sudo -l 查看自己有哪些提权信息
sudo -k 清除密码缓存
Linux文件权限
-rw-r--r--. 1 root root 122 7月 10 11:20 1.txt
- 普通文件 ---黑色
d 普通目录 ---深蓝色
l 链接文件 ---浅蓝色
r 读 --4
w 写 --2
x 执行 --1
1.权限:三个字符为一体
前三位为拥有人权限(u) user
中间三位为拥有组权限(g) group
最后三位为其他人权限(o) other
2.后面的解释
节点
拥有人(所属者)
拥有组(所属组)
文件大小
最后一次修改时间
文件名
3.修改权限
方法一:
用符号修改
chmod [ugoa] [=-+] file
eg:-rw-r--r-- 原
-rwx-rw---- 现
# chmod u+x,g+w,o-r 1.txt
eg:-rwxrw---- 原
-r--r----- 现
# chmod u=r,g=r 1.txt
方法二:
用数字修改
eg:-r--r--r-- 原
-rwxrw-r-- 现
# chmod 764 1.txt
4.umask
目录:755=777-022 rwxr-xr-x
[root@localhost ~]# mkdir /test10
[root@localhost ~]# ls -ld /test10/
drwxr-xr-x. 2 root root 6 7月 18 13:54 /test10/
文件:644=666-022 rw-r--r--
[root@localhost ~]# touch 2.txt
[root@localhost ~]# ls -ld 2.txt
-rw-r--r--. 1 root root 41 7月 18 13:55 2.txt
[root@localhost ~]# umask
0022
修改掩码
[root@localhost ~]# umask 0002
0002
5.权限的影响
读权限(r):具有阅读或读取权限文件的内容
cat more less head tail
[root@localhost ~]# touch /test11/4.txt
[root@localhost ~]# echo "4.txt" > /test11/4.txt
[xiaoyu@localhost ~]$ cat /test11/4.txt
4.txt
不能复制,移动,编辑,删除
写权限(w):具有新增,修改文件内容的权限
如果没有r权限的话使用vim,这时权限会被拒,但可以强制保存,覆盖之前的内容(若没有w权限,则不能保存)
echo “123” > 1.txt -----使用重定向去写
使用cat命令读取文件,将读取到的文件输出交给仅有的w权限文件输入(vim显示被拒,当你cat时会反射到显示屏上)
不能复制,移动,删除(删除需要看上级目录的w权限)
执行权限(x):文件只有x权限,具有执行的权限(普通用户需要r权限,管理员不需要)
不能执行查看,编辑,复制,移动,删除
实验一:对目录没有w权限,对文件有rwx权限
root用户
[root@localhost ~]# mkdir /test10
[root@localhost ~]# ls -ld /test10/
drwxr-xr-x. 2 root root 6 7月 18 13:54 /test10/ (对o没有w权限)
[root@localhost ~]# echo "test" > /test10/test.txt
[root@localhost ~]# chmod 777 /test10/test.txt
[root@localhost ~]# ls -ld /test10/test.txt
-rwxrwxrwx. 1 root root 5 7月 18 14:27 /test10/test.txt
普通用户
[root@localhost ~]# su xiaoyu
[xiaoyu@localhost root]$ cd
[xiaoyu@localhost ~]$ cat /test10/test.txt ---有读权限
test
[xiaoyu@localhost ~]$ rm -rf /test10/test.txt
rm: 无法删除"/test10/test.txt": 权限不够
[xiaoyu@localhost ~]$ cd /test10
[xiaoyu@localhost test10]$ ls
test.txt
[xiaoyu@localhost test10]$ mv test.txt aaa.txt ---没有修改权限
mv: 无法将"test.txt" 移动至"aaa.txt": 权限不够
实验二:对目录有w权限,对文件没有任何权限
root
[root@localhost ~]# chmod 777 /test10
[root@localhost ~]# chmod 000 /test10/test.txt
[root@localhost ~]# ls -ld /test10
drwxrwxrwx. 2 root root 21 7月 18 14:27 /test10
[root@localhost ~]# ls -ld /test10/test.txt
----------. 1 root root 5 7月 18 14:27 /test10/test.txt
普通用户
[xiaoyu@localhost test10]$ cat test.txt ---没有读权限
cat: test.txt: 权限不够
[xiaoyu@localhost test10]$ rm -rf test.txt ---删除
[xiaoyu@localhost test10]$ ls
[xiaoyu@localhost test10]$ touch 1.txt ---新增
总结:
对目录没有w权限,对文件有rwx权限,可以查看但不能修改,删除
对目录有w权限,对文件没有任何权限,不能查看但可以修改删除
试验三:对目录没有x权限,对文件有任何权限
root:
[root@localhost ~]# chmod 766 /test10
[root@localhost ~]# chmod 777 /test10/test.txt
[root@localhost ~]# ls -ld /test10
drwxrw-rw-. 2 root root 21 7月 18 14:57 /test10
[root@localhost ~]# ls -ld /test10/test.txt
-rwxrwxrwx. 1 root root 5 7月 18 15:00 /test10/test.txt
普通用户:
[xiaoyu@localhost test10]$ cd /test10
bash: cd: /test10: 权限不够
[xiaoyu@localhost test10]$ cat /test10/test.txt
cat: /test10/test.txt: 权限不够
[xiaoyu@localhost test10]$ rm -f /test10/test.txt
rm: 无法删除"/test10/test.txt": 权限不够
修改权限(rwx) ---chmod
修改拥有人,拥有组(root root) ---chown
6.chown
[root@localhost ~]# ls -ld 1.txt
-rw-r--r--. 1 root root 122 7月 10 11:20 1.txt
将1.txt的拥有人改为user1
chown name filename
[root@localhost ~]# chown user1 1.txt
[root@localhost ~]# ls -ld 1.txt
-rw-r--r--. 1 user1 root 122 7月 10 11:20 1.txt
将1.txt的拥有组改为user2(使用:或者.)
chown [:|.] name filename
[root@localhost ~]# chown :user2 1.txt
[root@localhost ~]# ls -ld 1.txt
-rw-r--r--. 1 user1 user2 122 7月 10 11:20 1.txt
[root@localhost ~]# chown .xiaoyu 1.txt
[root@localhost ~]# ls -ld 1.txt
-rw-r--r--. 1 user1 xiaoyu 122 7月 10 11:20 1.txt
7.ACL
ugo ---都是给一类人设置权限
eg:给user1读写权限,user2读写执行---针对/test11/4.txt
[root@localhost ~]# setfacl -m u:user1:rw,u:user2:rwx /test11/4.txt
[root@localhost ~]# getfacl /test11/4.txt
getfacl: Removing leading '/' from absolute path names
# file: test11/4.txt
# owner: root
# group: root
user::rw-
user:user2:rwx
user:user1:rw-
group::rw-
mask::rwx
other::rw-
eg:给group1读权限,group2无权限---针对/test11/4.txt
[root@localhost ~]# setfacl -m g:group1:r,g:group2:- /test11/4.txt
[root@localhost ~]# getfacl /test11/4.txt
getfacl: Removing leading '/' from absolute path names
# file: test11/4.txt
# owner: root
# group: root
user::rw-
user:user2:rwx
user:user1:rw-
group::rw-
group:group1:r--
group:group2:---
mask::rwx
other::rw-
移除acl
移除用户权限(一步一步执行)
[root@localhost ~]# setfacl -x u:user1 /test11/4.txt
[root@localhost ~]# getfacl /test11/4.txt
getfacl: Removing leading '/' from absolute path names
# file: test11/4.txt
# owner: root
# group: root
user::rw-
user:user2:rwx
group::rw-
group:group1:r--
group:group2:---
mask::rwx
other::rw-
[root@localhost ~]# setfacl -x g:group1 /test11/4.txt
[root@localhost ~]# getfacl /test11/4.txt
getfacl: Removing leading '/' from absolute path names
# file: test11/4.txt
# owner: root
# group: root
user::rw-
user:user2:rwx
group::rw-
group:group2:---
mask::rwx
other::rw-
移除文件或目录的所有的acl
[root@localhost ~]# setfacl -b /test11/4.txt
[root@localhost ~]# getfacl /test11/4.txt
getfacl: Removing leading '/' from absolute path names
# file: test11/4.txt
# owner: root
# group: root
user::rw-
group::rw-
other::rw-
帮助
-a或者--all
特殊权限suid sgid sticky(t)
用符号、数值表示:setuid----u+s----4
setgid----g+s----2
sticky----o+t----1
setuid
文件的执行有效身份为文件的拥有者而非执行者
我创建了一个test.txt的文件----拥有人、拥有组wangke---
A同学就会以wangke的身份去给test1.txt做操作
[root@wk ~]# chmod 640 /etc/passwd
[root@wk ~]# ls -ld /etc/passwd
-rw-r-----. 1 root root 1995 Jul 17 11:18 /etc/passwd
[wangke@wk ~]$ cat /etc/passwd
cat: /etc/passwd: Permission denied
[wangke@wk ~]$
给cat设置suid
[root@wk ~]# chmod 4755 /usr/bin/cat
[root@wk ~]# ls -ld /usr/bin/cat
-rwsr-xr-x. 1 root root 54048 Jan 25 2014 /usr/bin/cat
就可以在普通用户上查看---cat /etc/passwd
当文件有x权限时是s,没有x权限就是S
suid授权方法
4000权限字符(sS),在用户x位置
方法一:
chmod 4755 passwd
方法二:
chmod u+s passwd
注意:suid是一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁
setgid
文件的有效执行身份为文件的拥有组而并非执行者的身份
目录里新建的文件拥有组会自动继承目录的拥有组身份
[root@location~]#chmod 640 /etc/passwd
[root@location~]# chmod g+s /usr/bin/cat
[xiaoyu@locaion ~]# cat /etc/passwd
继承(所属组)
[root@localhost ~]# chmod g+s /test2/
[root@localhost ~]# chown :user1 /test2/
[root@localhost ~]# ls -ld /test2/
drwxr-sr-x. 2 user1 user2 30 7月 18 17:07 /test2/
[root@localhost ~]# touch /test2/3.txt
[root@localhost ~]# ls -ld /test2/3.txt
-rw-r--r--. 1 root user2 0 7月 18 17:09 /test2/3.txt
针对用户权限位修改,用户创建的目录或文件所属组和该目录的所属组一致
t
系统默认给/tmp文件t位
[root@localhost ~]# ls -ld /tmp/
drwxrwxrwt. 14 root root 4096 7月 18 17:10 /tmp/
让多个用户对目录都具有写权限,每个用户只能删除自己的文件
[root@localhost tmp]# touch 10.txt
[root@localhost tmp]# ls -ld 10.txt
-rw-r--r--. 1 root root 0 7月 18 17:18 10.txt
验证:让xiaoyu用户去删除root用户创建的10.txt
[xiaoyu@localhost tmp]$ rm -rf 10.txt
rm: 无法删除"10.txt": 不允许的操作
t位:T表示没有x权限,t有x权限
suid sgid:S表示没有x权限,s表示有x权限
进程管理
操作系统能调用的资源有哪几类?
CPU,内存,硬盘,网络
进程在执行程序时,有哪几类进程在使用?
分配内存,申请分配地址空间
安全属性,身份和权限
运行程序、代码,一个或多个线程
进程状态,运行后的多种状态
ls---/usr/bin/ls----静态的
动态进程(top),程序在运行过程中,有生命周期和运行状态
程序运行时进程状态关系
父进程复制自己的地址空间创建新的子进程,子进程可以继承父进程的环境变量
每个进程都有自己唯一的ID(PID)
进程是由systemd派生出来的
子进程在运行自己的程序代码的时候,父进程往往会进入休眠状态
子进程完成程序代码发出退出信号
子进程就会关闭或已经关闭资源,进入僵尸状态
父进程收到退出信号,就会被唤醒,然后继续执行代码程序
eg:点击word文档---生成进程---父进程创建子进程(完成后进入休眠状态)---删除word文档中的第一行(子进程)---保存(子进程发出退出信号)---父进程启用
ps -aux |(表示或者) aux 查看所有进程
pstree 查看进程树
pgrep 过滤指定进程
-l 列出进程名
-u 指定登录用户
-t 指定终端登录
ps -aux | less详解
[root@localhost ~]# ps -aux | less
USER:运行进程用户
PID:进程号(ID)
%CPU:CPU占用率
%MEM:内存占用率
VSZ:向内存申请地址空间大小(若一个word文档有2M,申请空间为>2M)
RSS:实际占用空间大小
TTY:登录终端
STAT:进程状态
START:进程启动时间
TIME:进程占用CPU的总时间
COMMAND:进程名
STAT详解
R:正在运行
S:可中断
D:不可中断(httpd、dhcpd、vsftpd、sshd、smbd)
Z:僵尸进程
X:进程已经退出
T:被暂停
Ss:父进程
S<:优先级较高
SN:优先级较低的
R+:表示正在前台运行的组合
Sl:以线程的方式运行
top:动态监控进程
h:帮助
z:彩色显示
l:显示CPU负载
s:设置刷新时间
b:高亮显示处于R状态的进程
f:自定义设置参数(按空格选中,esc退出)
k:kill
模拟CPU耗尽
# dd if=/dev/zero of=/dev/null
kill -l 查看所有支持信号
kill -9 强制关闭
killall -9 强制关闭
kill 进程id
# kill 33179
killall 进程名
# killall httpd
# pkill -u harry 将harry名下的所有进程全部关闭
前台后台调度
eg:#dd if=/dev/zero of=/dev/null
前台调至后台
ctrl z 暂停调入后台
cmd(eg:dd if=/dev/zero of=/dev/null) &
后台调至前台
fg 调至前台,占用前台资源
bg 调至运行状态,不占用前台资源
后台运行进程
在命令行添加一个”&”符号:firefox &
暂时停止某个运行程序
使用ctrl z
管理后台作业
列举作业号码和名称:jobs
在后台恢复运行:bg %[作业号码]
在前台恢复运行:fg %[作业号码]
发送信号:kill [-signal] %[作业号码]
eg:[root@localhost ~]# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.254 icmp_seq=1 Destination Host Unreachable
From 192.168.1.254 icmp_seq=2 Destination Host Unreachable
^Z
[1]+ 已停止 ping 192.168.1.1
[root@localhost ~]# jobs
[1]+ 已停止 ping 192.168.1.1
[root@localhost ~]# kill -9 %1
[1]+ 已停止 ping 192.168.1.1
[root@localhost ~]# jobs
[1]+ 已杀死 ping 192.168.1.1
[root@localhost ~]# jobs
[root@localhost ~]#
openssh
远程连接
telnet 明文----ensp----authentic----用户名、密码
ssh 密文
ssh root@192.168.1.1
命令 用户名@远程的IP
-p
ssh -p root
# ssh root@192.168.1.1 hostname 远程查看主机名
密钥验证
对称密钥:加密解密都是一把钥匙
des、3des、aes
非对称密钥:一对密钥,公钥和私钥
rsa、dsa
在管理服务器上生成密钥
[root@localhost ~]# ssh-keygen ---一路回车
-i 指定路径
ssh-keygen -i ~/.ssh/id_rsa root@192.168.1.10
将公钥推送至服务器
[root@localhost ~]ssh-copy-id root@192.168.1.10
再远程连接时不需要密码
[root@localhost ~]ssh root@192.168.1.10
- 生成密钥
ssh-keygen
- 将公钥传送至服务器
ssh-copy-id root@192.168.1.10
- 再远程连接时不需要密码
ssh root@192.168.1.10(无需密码)
远程复制
scp复制数据至远程主机
-P 指定端口(默认22号)
-r 递归复制目录
-p 复制文件时,文件属性不变
把本地文件推送到服务器
[root@localhost ~]scp -P 22 -rp /tmp/1.txt root@192.168.1.10:/mnt/
scp 命令
-P 指定端口
-r 递归复制目录
-p 保持属性不变
/tmp/1.txt 源路径
root 目标服务器的用户名
@ 分隔符
192.168.1.10 目标服务器IP
/mnt 目标服务器路径
把远程端的文件或目录下载到本地
[root@localhost ~]scp -P 22 -rp root@192.168.1.10:/mnt/2.txt /tmp/
scp 命令
-P 指定端口
-r 递归复制目录
-p 保持属性不变
root 目标服务器的用户名
@ 分隔符
192.168.1.10 目标服务器IP
/mnt/2.txt 目标服务器路径
/tmp 本地路径
总结
scp也是通过加密进行远程复制文件或目录
scp复制权限和连接用户的权限对应
scp每次都是全量拷贝,使用效率低下
增量复制
rsync
-a 所有格式
-v 显示详细信息
-z 压缩
--delete 删除(多删除)
[root@localhost ~]rsync -avz --delete root@192.168.1.1 root@192.168.1.10
将本地文件上传到远程端
[root@localhost ~]rsync -avz /tmp/2.txt root@192.168.1.10:/etc/
rsync 命令
-a 所有格式
-v 显示详细信息
-z 压缩
/tmp/2.txt 本地源路径
root 目标服务器的用户名
@ 分隔符
192.168.1.10 目标服务器IP
/etc 远程端路径
从远程端下载文件或目录
[root@localhost ~]rsync -avz root@192.168.1.10:/etc/2.txt /opt/
rsync 命令
-a 所有格式
-v 显示详细信息
-z 压缩
root 目标服务器的用户名
@ 分隔符
192.168.1.10 目标服务器IP
/etc/2.txt 远程端路径
/opt 本地路径
两者区别
全量每次都把所有内容全部复制过去(scp)
增量每次只复制多的部分(rsync)
RHEL网络管理
RHEL6:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
RHEL7:nmcli命令
按自然网络走
IP地址是32位的二进制数
网络位:标识网络范围
主机位:标识网络身份
掩码:标识网络位长度,由若干个1或者连续的0组成---11111111
A类地址:掩码8位
地址范围:1-126
第1位为网络位,后3位为主机位
eg:10.1.1.2
网段:网络位照写,主机位归零---10.0.0.0---掩码:255.0.0.0
255(十进制)---转换为二进制---11111111
B类地址:掩码16位
地址范围:128-191
第1位为网络位,后3位为主机位
eg:191.100.1.1
网段:网络位照写,主机位归零---191.100.0.0---掩码:255.255.0.0
127.*.*.*----本地回环地址(lookback)
C类地址:掩码24位
地址范围:192-223
第1位为网络位,后3位为主机位
eg:192.168.1.1
网段:网络位照写,主机位归零---192.168.1.0---掩码:255.255.255.0
D类地址:
组播
地址范围:224-239
E类地址:
科研
地址范围:240-255
255.255.255.255---ipv4
ff:ff:ff:ff:ff:ff
192.168.1.255
0.0.0.0 任意地址(any)
基本命令
查看IP地址: ip a=ip addr show,ifconfig-----windows:ipconfig
查看网关:ip r=ip route
查看DNS:cat /etc/resolv.conf
有效DNS(可联网)
8.8.8.8
114.114.114.114
ali:
223.5.5.5
223.6.6.6
接口类型
以太网有线接口为en
无线局域网接口为w1
无限广域网接口为ww
适配器类型
s为热插拔插槽
o为板载
p代表对PCI类型的支持
数字N代表索引,ID或端口
查看版本信息
[root@localhost ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.0 (Maipo)
Redhat7.0配置IP地址方法
[root@localhost ~]# nmcli connection modify "eno16777736" ---连接修改eno16777736网关
ipv4.method manual ---手动配置IP地址
ipv4.addresses "192.168.1.20/24 192.168.1.254" ---具体IP地址、掩码、网关
ipv4.dns "8.8.8.8" ---dns
connection.autoconnect yes ---将网卡启用
[root@localhost ~]# systemctl restart network
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
Redhat7.2配置IP地址方法
[root@localhost ~]# nmcli connection modify "ens33"
ipv4.method manual
ipv4.addresses "192.168.1.30/24"
ipv4.getway “ 192.168.1.254”
ipv4.dns "8.8.8.8"
connection.autoconnect yes
[root@localhost ~]# systemctl restart network
网络互通
仅主机模式:只能和内网通信(以v开头的虚拟网卡)wifi、本地连接属于外网---对应vmnet1网卡
NAT模式:既可以和内网也可以和外网通信
将私网转为公网
192.168.1.1-----------220.10.10.10
192.168.1.1---转为公网---220.1.1.1---再访问220.10.10.10
将私网转为公网
220.10.10.10----------192.168.1.1
220.10.10.10---192.168.1.17---192.168.1.1通信
桥接模式:既可以和内网也可以和外网通信,会直接桥到本地网卡(本地连接和wifi)
方法一:仅主机模式(vmnet1)
- 编辑---虚拟网卡编辑器(vmnet1)---不勾DHCP
- 设置---网络适配器----自定义(vmnet1)
- 配置IP地址(服务器,客户机)
服务器:IP:192.168.1.20---网关:192.168.1.254---DNS:8.8.8.8
客户机:IP:192.168.1.22(在同一网段即可)---网关:192.168.1.254---DNS:8.8.8.8
网段保持一致,网关一样,DNS指向服务器IP
- 互ping(查看网络是否互通)
注意:如果单方面不通,95%都是防火墙问题
方法二:NAT模式(vmnet8)
- 编辑---虚拟网卡编辑器(vmnet8)---不勾DHCP
- 设置---网络适配器---NAT
- 配置IP地址(服务器,客户机)
服务器:IP:192.168.8.20---网关:192.168.8.254---DNS:8.8.8.8
客户机:IP:192.168.8.22(在同一网段即可)---网关:192.168.8.254---DNS:8.8.8.8
[root@localhost ~]# nmcli connection modify "eno16777736" ipv4.method manual ipv4.addresses "192.168.8.20/24 192.168.8.254" ipv4.dns "8.8.8.8" connection.autoconnect yes
[root@localhost ~]# systemctl restart network
网段保持一致,网关一样,DNS指向服务器IP
- 互ping(查看网络是否互通)
方法三:桥接模式(本地连接、无线网卡,哪一块联网就用哪一块)
1.编辑---虚拟网卡编辑器(vmnet0)---选择自动或选择有网络的网卡
2.设置---网络适配器---桥接
3.配置IP地址(服务器)
备注:客户机用的无线网卡,是能ping百度的,所以不需要更改IP信息,将服务器IP和客户机保持同一网段、网关一致即可
客户机信息:192.168.0.139/24---网关:192.168.0.1(查看自己电脑连接的wifi)
服务器:192.168.0.222---网关:192.168.0.1---DNS:8.8.8.8
- 互ping(查看网络是否互通)
TYPE=Ethernet
BOOTPROTO=none-----static、dhcp
DEFROUTE=no
NAME=eno16777736
UUID=3004a6f8-6d79-4d3c-998b-cf8a908b6d06
ONBOOT=yes
HWADDR=00:0C:29:0B:8F:44
IPADDR0=192.168.1.1
PREFIX0=24
GATEWAY0=192.168.1.254
DNS1=8.8.8.8
IPV4_FAILURE_FATAL=no
IPV6INIT=no
DEVICE=eth0#网卡设备名称
ONBOOT=yes#启动时是否激活 yes | no
BOOTPROTO=static#协议类型 dhcp bootp none
IPADDR=192.168.1.90#网络IP地址
NETMASK=255.255.255.0#网络子网地址
GATEWAY=192.168.1.1#网关地址
BROADCAST=192.168.1.255#广播地址
HWADDR=00:0C:29:FE:1A:09#网卡MAC地址
TYPE=Ethernet#网卡类型为以太网
修改主机名
[root@localhost ~]# hostnamectl set-hostname ""
之后输入bush
hostname查看当前主机名
压缩、归档
压缩:将文件大小进行压缩---10G----8.1G
归档:将多个文件打包
压缩(只能压缩文件)
gzip
xz
bzip2
eg:虚拟一个2M、4M、6M的文件
[root@localhost ~]# dd if=/dev/zero of=2M bs=2M count=1
[root@localhost ~]# dd if=/dev/zero of=4M bs=6M count=1
[root@localhost ~]# dd if=/dev/zero of=6M bs=4M count=1
调用gzip
[root@localhost ~]# gzip 2M 4M 6M 调用gzip压缩(没有源文件)
[root@localhost ~]# ls
2M.gz 4M.gz 6M.gz anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# ls -lh 2M.gz
-rw-r--r--. 1 root root 2.1K 7月 22 14:54 2M.gz
[root@localhost ~]# ls -lh 4M.gz
-rw-r--r--. 1 root root 4.1K 7月 22 14:55 4M.gz
[root@localhost ~]# ls -lh 6M.gz
-rw-r--r--. 1 root root 6.0K 7月 22 14:55 6M.gz
[root@localhost ~]# gzip -d *.gz 解压
调用xz
[root@localhost ~]# xz 2M 4M 6M 调用xz压缩(没有源文件)
[root@localhost ~]# ls
2M.xz 4M.xz 6M.xz anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# ls -lh 2M.xz
-rw-r--r--. 1 root root 440 7月 22 14:54 2M.xz
[root@localhost ~]# ls -lh 4M.xz
-rw-r--r--. 1 root root 744 7月 22 14:55 4M.xz
[root@localhost ~]# ls -lh 6M.xz
-rw-r--r--. 1 root root 1.1K 7月 22 14:55 6M.xz
[root@localhost ~]# xz -d *.xz 解压
调用bzip2
[root@localhost ~]# bzip2 2M 4M 6M 调用bzip2压缩(没有源文件)
[root@localhost ~]# ls
2M.bz2 4M.bz2 6M.bz2 anaconda-ks.cfg initial-setup-ks.cfg 公共 模板 视频 图片 文档 下载 音乐 桌面
[root@localhost ~]# ls -lh 2M.bz2
-rw-r--r--. 1 root root 48 7月 22 14:54 2M.bz2
[root@localhost ~]# ls -lh 4M.bz2
-rw-r--r--. 1 root root 48 7月 22 14:55 4M.bz2
[root@localhost ~]# ls -lh 6M.bz2
-rw-r--r--. 1 root root 48 7月 22 14:55 6M.bz2
[root@localhost ~]# bzip2 -d *.bz2 解压
总结:
解压方式:-d
gzip-----压缩体积最大,速度最快
xz----压缩体积中等,速度稍慢
bzip2---压缩体积最小,速度最慢
都没有源文件
tar(有源文件)
tar [选项]... 归档文件名 源文件或目录
tar [选项]... 归档文件名 [-C 目标目录]
[root@localhost ~]#tar -czvf 2M.tar.gz 2M
[root@localhost ~]#tar -cjvf 4M.tar.bz2 4M
[root@localhost ~]#tar -cJvf 6M.tar.xz 6M
-c 创建一个归档
-t 列出归档内容
-x 提取归档
常用选项
v:输出详细信息
f:表示使用归档文件
tar可以选择以下选项进行压缩
-z:调用gzip压缩(filename.tar.gz或filename.tarz)
-j:调用bzip2压缩(filename.tar.bz2)
-J:调用xz压缩(filename.tar.xz)
查看
[root@localhost ~]#tar -tvf 2M.tar.gz
[root@localhost ~]#tar -tvf 4M.tar.bz2
[root@localhost ~]#tar -tvf 6M.tar.xz
释放
[root@localhost ~]#tar -xvf 2M.tar.gz
[root@localhost ~]#tar -xvf 4M.tar.bz2
[root@localhost ~]#tar -xvf 6M.tar.xz -C /tmp/ 将6M文件解压到指定目录
-C 解压至指定目录
rpm、yum管理
pwd----print working directory
6.0------6.5
7.0------7.2
8.0------8.1
6.0.1----6.0.2----service sshd restart
7.0 systemctl restart sshd
8.0 systemctl restart network(x)
第一位:主版本号(整体变化较大)
第二位:副版本号(细微变化)
第三位:(bug修复)
注意事项
安装软件时需要挂载光盘
rpm安装时要用完整的版本号,卸载时不加.rpm
后缀
rpm
-q:查询是否安装
-qa:查询所有安装包
-ql:查询安装**软件的列表
-qf:查询由什么包安装的
-ivh:安装(i---install v:显示详细信息 h:显示#进度条)
-ivh+包名+--nodeps --force 强制安装
-e:卸载(卸载时不加.rpm后缀)
rpm -q +包名 查询是否安装
[root@localhost ~]# rpm -q httpd
httpd-2.4.6-17.el7.x86_64
[root@localhost ~]# rpm -q dhcp
未安装软件包 dhcp
rpm -qa 查询所有安装包
rmp -ql openssh 查看安装openssh软件的列表
查询由什么包安装的
[root@localhost ~]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.35-3.el7.x86_64
[root@localhost ~]# rpm -qf /sbin/ip
iproute-3.10.0-13.el7.x86_64
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
mount: /dev/sr0 已经挂载或 /mnt 忙
/dev/sr0 已经挂载到 /run/media/root/RHEL-7.0 Server.x86_64 上
/dev/sr0 已经挂载到 /mnt 上
[root@localhost ~]# less /mnt/Packages 查看安装包列表---路径
安装ftp包
[root@localhost Packages]# rpm -ivh vsftpd-3.0.2-9.el7.x86_64.rpm
注意:用rpm安装时每个版本都有不一样的依赖关系
eg:7.0----依赖关系----httpd-tools
eg:7.2----依赖关系----httpd-tools、arp、lib
强制安装httpd
[root@localhost Packages]# rpm -ivh httpd-2.4.6-17.el7.x86_64.rpm --nodeps --force
卸载httpd
[root@localhost Packages]# rpm -e httpd-2.4.6-17.el7.x86_64
yum仓库(RHEL7.0)
- 挂载光盘
[root@localhost ~]# mount /dev/cdrom /mnt/
[root@localhost ~]# df -h
- 编写yum仓库
[root@localhost ~]# cd /etc/yum.repos.d 路径
[root@localhost yum.repos.d]# vim rhel.repo 必须以.repo结尾
[rhel] ----id号、定义
name=rhel ---名字
baseurl=file:///mnt 从本地光盘文件安装---比如光盘挂载在/mnt下
gpgcheck=0 ---开机不做校验
- 验证、刷新
[root@localhost yum.repos.d]# yum repolist 要看到最后一行有具体数值即可(0除外)
[root@localhost yum.repos.d]# yum clean all 清除缓存
[root@localhost yum.repos.d]# yum makecache 重新建立
安装
[root@localhost yum.repos.d]# yum install -y samba
卸载
[root@localhost yum.repos.d]# yum erase -y samba
[root@localhost yum.repos.d]# yum remove -y dhcp
模拟错误后缀名
[root@localhost yum.repos.d]# yum repolist
repolist: 0
正确后缀名
[root@localhost yum.repos.d]# mv rhel.reop rhel.repo
[root@localhost yum.repos.d]# yum repolist
repolist: 4305
yum仓库(REEL8.0)
#cd /mnt
#vim /etc/yum.repos.d/rhel.repo
[BaseOS]
name=rhel
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=rhel
baseurl=file:///mnt/AppStream
gpgcheck=0
硬盘
- 了解硬盘的基础知识
- 会分区
- 挂载卸载
- swap分区
- 逻辑分区
Linux中一切皆文件
[root@localhost ~]# fdisk -l 查看硬盘信息
如何分区
一块硬盘只能有四个主分区,如果想分6个分区
扩展分区:只起桥梁作用,不能格式化、挂载等操作
逻辑分区:可以格式化、挂载等操作
3主----1扩展----2逻辑
[root@localhost ~]# fdisk /dev/sdb
d delete a partition 删除分区
l list known partition types 列出id编号
m print this menu 帮助
n add a new partition 添加分区
p print the partition table 打印分区表
t change a partition's system id 更改id
w write table to disk and exit 保存
p primary(0 primary,0 extended,4 free) 主分区
e extended 扩展分区
82 Linux swap / So
8e Linux LVM
[root@localhost ~]# partprobe 刷新分区
[root@localhost ~]# mkfs.ext4 /dev/sdb1 将/dev/sdb1格式化成ext4
查看UUID和格式化类型
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="6757e7d3-70aa-4d03-9a76-582795748750" TYPE="ext4"
挂载
有一个共享文件夹A----B想要A文件夹中的C文件---将其拖至B同学电脑桌面D文件夹
创建挂载点(文件夹)
#mkdir /test1
临时挂载
#mount /dev/sdb1 /test1
永久挂载
#vim /etc/fstab
名称/UUID 挂载点 UUID=6757e7d3-70aa-4d03-9a76-582795748750 /sdb1
格式类型 开机不检查 不做备份
ext4 defaults 0 0
#mount -a
卸载挂载点
#umount /test1/
卸载文件名称
# umount /dev/sdb1
swap分区(不占用真实空间)---swap分区是内存的两倍大小
eg:现在情况:2个主分区(2G+3G)+1扩展分区(内存不能全部给扩展分区)+主分区
swap分区
fdisk /dev/sdb
n---回车---回车---+2G---t---82---w
partprobe
格式化:#mkswap /dev/sdb2
开启/挂载文件系统
#vim /etc/fstab
UUID=606f66e7-31a3-497a-bdc8-232838a5deac swap swap defaults 0 0
#swapon -a 全部重新挂载
#swapon -s 查看挂在情况
#swapon /dev/sdb2 开启
#swapoff /dev/sdb2 停止
LVM逻辑卷
目的:方便在线扩容(8e)
前提:先分好逻辑分区
- 将逻辑分区创建成物理卷
#pvcreate /dev/sdb5
- 再在物理卷中创建卷组
#vgcreate vg01 /dev/sdb5
- 在卷中创建逻辑卷
#lvcreate -L 200M -n lv01 /dev/vg01
逻辑卷:/dev/vg01/lv01
- 格式化
#mkfs.xfs /dev/vg01/lv01
- 挂载
#vim /etc/fstab
想扩容到500M
#lvextended -L 500 /dev/vg01/lv01
xfs刷新方式
#xfs_growfs /dev/vg01/lv01
前提:先分好逻辑分区
创建10个16M的PE
将逻辑分区创建成物理卷
#pvcreate /dev/sdb6
再创建卷组
#vgcreate -s 16M vg02 /dev/sdb6
创建10个16M大小的
#lvcreate -l 10 -n lv02 /dev/vg02
格式化
#mkfs.ext3 /dev/vg02/lv02
挂载
#vim /etc/fstab
扩容到300M
#lvextended -L 300M /dev/vg02/lv02
刷新
#resize2fs /dev/vg02/lv02
文件查找
locate:依赖于数据库
系统会自动实现(相当于周期性任务)
手动更新数据库
工作特性:实现快速查找(速度快)
模糊查找
非实时查找
eg:[root@localhost ~]# locate test1
/usr/share/doc/m2crypto-0.21.1/demo/CipherSaber/cstest1.cs1
[root@localhost ~]# locate -i a.txt
/usr/share/doc/flite-1.3/README-ALSA.txt
/usr/share/doc/hunspell-en-0.20121024/README_en_CA.txt
/usr/share/doc/vim-common-7.4.160/README_extra.txt
[root@localhost ~]# updatedb 更新数据库
[root@localhost ~]# locate -i a.txt
/root/A.txt
/root/a.txt
/usr/share/doc/flite-1.3/README-ALSA.txt
/usr/share/doc/hunspell-en-0.20121024/README_en_CA.txt
/usr/share/doc/vim-common-7.4.160/README_extra.txt
注意:在查找更新过程中,需要遍历(从头到尾)整个文件系统,消耗资源
yum install -y locate(下载locate)
find:实时查找文件或目录----find / -user xiaoyu(通过遍历指定查找文件的路径)
工作特性:查找速度略慢
实现精确查找
实时查找
语法规则:find [查找范围] [查找条件及选项] [-type 查找类型] [动作]
eg:[root@localhost ~]# find / -user xiaoyu
查找范围:指定具体的搜索目标为起始路径,默认情况下为当前路径
查找条件及选择项:指定查找标准,可以根据文件名、大小、类型、所属关系、权限等等进行查找。默认为找出指定路径下的所有文件
动作:对符合查找条件的文件作出操作,例如:删除等操作,默认为输出至标准输出
find
-name 根据文件名进行查找
[root@localhost ~]# find / -name xiaoyu
/var/spool/mail/xiaoyu
/home/xiaoyu
-iname 根据文件名进行查找,忽略大小写
[root@localhost ~]# find / -name a.txt
/root/a.txt
[root@localhost ~]# find / -iname a.txt
/root/a.txt
/root/A.txt
-uid/gid 根据uid或gid进行查找
[root@localhost ~]# find / -uid 1000
find: ‘/proc/4202/task/4202/fd/6’: 没有那个文件或目录
find: ‘/proc/4202/task/4202/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/4202/fd/6’: 没有那个文件或目录
find: ‘/proc/4202/fdinfo/6’: 没有那个文件或目录
/var/spool/mail/xiaoyu
/home/xiaoyu
/home/xiaoyu/.bash_logout
/home/xiaoyu/.bash_profile
/home/xiaoyu/.bashrc
/home/xiaoyu/.bash_history
/home/xiaoyu/.cache
/home/xiaoyu/.cache/abrt
/home/xiaoyu/.cache/abrt/lastnotification
/home/xiaoyu/.config
[root@localhost ~]# find / -uid 1000
-user/group 根据拥有人或所属组进行查找
[root@localhost ~]# find / -user xiaoyu
[root@localhost ~]# find / -group xiaoyu
-perm 根据权限查找
[root@localhost ~]# find / -perm 700
-size ---(-2M:小于2M;2M:等于2M;+2M:大于2M)
[root@localhost ~]# dd if=/dev/zero of=2M bs=2M count=1
[root@localhost ~]# dd if=/dev/zero of=4M bs=4M count=1
[root@localhost ~]# find -size -2M
./a.txt ----大小为0
./A.txt ---大小为0
[root@localhost ~]# find -size 2M
./2M
[root@localhost ~]# find -size +2M
./4M
-exec commnd \; -----(-exec和\;配套使用)
找出xiaoyu用户拥有的文件,拷贝到目录/opt/finddir
[root@localhost ~]# find / -user xiaoyu -exec cp -a {} /opt/finddir \;
find:命令
/:指定目录
-user:根据用户名查找
xiaoyu:用户名
-exec:处理动作
cp:复制
{}:表示前面查找到的文件
/opt/finddir:目标文件
\;:配套使用的结尾
root@localhost ~]# cat /opt/finddir
补充
-type
f:普通文件
d:目录文件
l:链接文件
root@localhost ~]# find /tmp -type f
root@localhost ~]# find /tmp -type d
root@localhost ~]# find /tmp -type l
组合测试
与:-a(默认) ---两者
或:-o ---任意一者
非:-not,! ---否定
!A -a !B====!(A -o B)----2a+2b====2(a+b)
!A -o !B====!(A -a B)
练习
找出/tmp目录下所属主为非root用户的所有文件
[root@localhost ~]# su - xiaoyu
上一次登录:四 8月 6 17:46:59 CST 2020pts/1 上
[xiaoyu@localhost ~]$ touch /tmp/1.txt
[root@localhost ~]# find /tmp -not -user root -type f
/tmp/1.txt
找出/tmp目录下文件名不包含fstab字符串的文件
[root@localhost ~]# find /tmp -not -name "fstab" -type f
/tmp/1
/tmp/.X0-lock
/tmp/1.txt
根据时间查找
-atime 以天为单位
[root@localhost ~]# find / -atime +7 查找大于七天的文件
[root@localhost ~]# find / -atime 7 查找等于七天的文件
[root@localhost ~]# find / -atime -7 查找小于七天的文件
-min 以分钟为单位
[root@localhost ~]# find / -amin 3 查找等于3分钟的文件
atime 文件访问时间
mtime 文件修改时间
ctime 文件创建时间
练习题
查找/var目录下所属主为root且所属组为mail的所有文件和目录
#find /var -user root -a -group mail
查找/etc下最近一周的文件访问时间
#find /etc -atime -7
查找/etc目录下大于1M且类型为普通文件的所有文件
find /etc -size +1M -type f
案例
在/查找所有的”*.txt”结尾的文件,并将其压缩至/tmp
find 文件
-exec commnd \;
压缩
[root@localhost ~]# find / -name "*.txt" -exec tar -czvf tmp.tar.gz {} \;
tar -czvf 压缩之后的名字 要压缩的文件
DHCP服务
DHCP:动态主机分配协议
作用:用来给客户端分配IP地址
10台PC-----192.168.1.10-----192.168.1.10
100、200台CP:192.168.1.100----192.168.1.200----地址冲突
工作原理
- 客户端向服务器请求IP
- 服务器收到就会发送IP
- 客户端决定是否租约---(如果愿意租就签合同,不愿意就算了)
- 双方确认
搭建流程(Linux必须有静态IP)192.168.8.1/24 254
- 挂载光盘
#mount /dev/cdrom /mnt/
#df -h
/dev/sr0 3.5G 3.5G 0 100% /mnt
- 编写yum仓库
#vim /etc/yum.repos.d/rhel.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
- 安装软件
#cd /mnt/BaseOS/Packages/ ---软件包路径
#ls | grep “dhcp”
#yum install -y dhcp-server.x86_64
#rpm -q dhcp-server ---查看是否安装
- 关闭selinux
#vim /etc/selinux/config ---重启虚拟机才生效
光标放到e字母--按dw删除整个单词---光标移到d---按v选中disabled---y复制---回到原来地方p粘贴
enforcing:强制开启selinux
permissive:墙头草
disabled:关闭
临时关闭:#setenforce 0
临时开启:#setenforce 1
- 关闭防火墙
#systemctl stop firewalld.service
- 查看样例文件并复制答主配置文件中
#vim /etc/dhcp/dhcpd.conf ---主配置文件路径
usr/share/doc/dhcp-server/dhcpd.conf.example ---样例文件路径
#cp / usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- 修改主配置文件
#vim /etc/dhcp/dhcpd.conf
搜索A----/A
删除A之前所有----dgg
保留连续的3段
删除三段之后的所有-----dG
192.168.8.1/24-----254----Linux的ip
修改之后的配置文件
subnet 192.168.8.0 netmask 255.255.255.0{
网段 掩码
range 192.168.8.20 192.168.8.30;
地址池:分配的IP地址范围
option domain-name-servers 192.168.8.1;
DNS域名服务器
option routers 192.168.8.254;
网关
default-lease-time 600;
默认租约时间
max-lease-time 7200;
最大租约时间
}
- 启动服务
- 验证
samba服务
yum仓库:RHEL7(一个地址),RHEL8(两个地址),centos8(修改地址)
centos8
[root@Centos8 yum.repos.d]# mkdir bak 在yum路径下面创建一个bak目录
[root@Centos8 yum.repos.d]# mv Centos-* bak/ 将其子文件全部剪切到bak里面
[root@Centos8 yum.repos.d]# cp bak/Centos-Base.repo . 将bak里面的Centos-Base.repo复制出来
修改Centos-Base.repo
[BaseOS]
name=CentOS-$releasever - Base
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=CentOS-$releasever - Base
baseurl=file:///mnt/AppStream
gpgcheck=0
samba服务
用于windows和Linux之间的文件和打印共享
nfs服务
用于Linux和Linux之间的文件共享
samba的访问方式
- 匿名访问
- 用户名密码访问
- 在windows上创建共享文件夹
匿名访问
- 挂在光盘
#mount /dev/cdrom /mnt/
#df -h
- 编写yum仓库
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
#yum repolist 查看是否写成功
- 安装软件
# cd /mnt/BaseOS/Packages
#ls | grep “samba”
#yum install -y samba
- 关闭selinux
#vim /etc/selinux/config ---重启虚拟机才生效
SELINUX=disabled
临时关闭selinux
#setenforce 0(此时就不需要重启虚拟机)
- 关闭防火墙
放行防火墙
# firewall-cmd --permanent --add-service=”samba” 在防火墙中放行samba服务
success
#firewall-cmd --reload 重新加载
success
#firewall-cmd --list-all 查看防火墙列表
关闭防火墙
#systemctl stop firewalld.service
- 修改主配置文件
#vim /etc/samba/smb.conf
[share] ---共享文件夹的名称
path = /test1 ---共享文件夹的实际路径
public = yes ---yum允许匿名访问(还必须在global下面添加map to guest = bad user,两者缺一不可)
map to guest = bad user ---添加在全局设置[global]下面
- 创建文件夹---用来做共享
#mkdir /test1
- 开启服务
#systemctl restart smb
注意事项:在服务启动过程中,DNS可能会影响服务的启动,建议把DNS注释掉
#vim /etc/resolv.conf
#Generated by NetworkManager
#nameserver 8.8.8.8
- 验证
#ls -ld /test1/
#chmod 777 /test1/
用户名密码访问
(1)挂载光盘
#df -h
- 编写yum仓库
#yum repolist
- 安装软件
#rpm -q samba
samba-。。。。。
- 关闭selinux
#setenforce 0
#getenforce
Permissive
- 关闭防火墙
#firewall-cmd --list-all
- 创建文件夹---用来做共享
#mkdir /test2
- 创建普通用户
#useradd user1
- 将用户加入samba用户(普通用户不能访问samba服务,只有samba用户才可以)
#pdbedit -au user1 将普通用户加入samba
#pdbedit -L
user1:1001:
注意事项:如果说在第7步创建普通用户时,给用户设置密码为123456,又在第8步将普通用户加入samba时设置的密码是redha,那么登录时使用的密码是:以加入samba时的密码为主
- 修改主配置文件
#vim /etc/samba/smb.conf
[share1] ---共享文件夹名称
path = /test2 ---共享文件夹的实际路径
writable = yes ---用户是否可写---yes 是
valid users = user1 ---合法用户(表示只有user1可以登录到samba服务)
- 修改共享文件夹的权限
#ls -ld /test2
#chmod 777 /test2
- 重启服务
#systemctl restart smb
(12)验证
总结:如果说将user1和user2都加入samba,但是合法用户中只写了user1(valid users = user1),那么在登录samba服务时,user2会被拒绝访问
C:\Users\admin>net use * /del /y ---在windows的cmd中清理缓存
workgroup = SAMBA --工作组
browseable = No --浏览
read only = No --只读
printable = Yes --打印
write list = @printadmin root --writeable(意思一样)---可写列表或是否可写
public = yes ---匿名访问
- 用Linux访问samba服务
#yum install -y samba-client 安装samba客户端
#smbclient -L //192.168.8.1 -U user1%redhat 用Linux访问samba服务器
#smbclient -L server(eg:192.168.8.1) -N 查看远程共享目录
Apache服务
实验一(访问Apache默认页面)
- 挂载光盘
#df -h
- 编写yum仓库
- 安装软件
- 关闭selinux
- 关闭防火墙
# firewall-cmd --permanent --add-service=”samba” 在防火墙中放行samba服务
success
#firewall-cmd --reload 重新加载
success
#firewall-cmd --list-all 查看防火墙列表
#systemctl stop firewalld(firewalld参数tab不出来表示防火墙已经关闭) 关闭防火墙
- 开启服务
#systemctl restart httpd
- 验证
实验二(自定义首页内容)
#vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html ---首页文件的名称
DocumentRoot “/var/www/html” ---存放首页文件内容的目录
1.挂载光盘
#df -h
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
# firewall-cmd --permanent --add-service=”http”
success
#firewall-cmd --reload 重新加载
success
#firewall-cmd --list-all 查看防火墙列表
6.进入存放首页文件的目录
# cd /var/www/html/
7.修改首页文件
# vim index.html
Apache1
8.重启服务
#systemctl restart httpd
9.验证
实验三(修改端口,将原来的端口改为8080)
#vim /etc/httpd/conf/httpd.conf
Listen 80
1.挂载光盘
#df -h
2.编写yum仓库
3.安装软件
4.关闭selinux
5.关闭防火墙
# firewall-cmd --permanent --add-service=”http” 在防火墙中放行samba服务
success
#firewall-cmd --reload 重新加载
success
#firewall-cmd --list-all 查看防火墙列表
6.修改主配置文件
# vim /etc/httpd/conf/httpd.conf
将Listen 80复制之后的改为8080
Listen 80
7.重启服务
#systemctl restart httpd
主配置文件路径(DHCP)
#vim /etc/dhcp/dhcpd.conf ---vim /etc/+包名/+开启服务的名称.conf
主配置文件路径(Samba)
#vim /etc/samba/smb.conf
主配置文件路径
#vim /etc/httpd/conf/httpd.conf
#systemctl enable httpd ---将服务开机自启
虚拟主机(web网站)
搭建web网站的三种方式:
用IP地址访问
用端口号访问
用主机名访问(www.baidu.com) ---DNS解析
用主机名访问网站(要求:将首页文件存放在/var/www/qq,首页文件名称:www.index,端口号:8089)
- 挂载光盘
- 编写yum仓库
- 安装软件
- 关闭selinux
- 关闭防火墙
- 创建目录(/var/www/qq) ---用于存放首页文件
#mkdir /var/www/qq
- 修改配置文件
#vim /etc/httpd/conf/httpd.conf
修改首页文件地址
#DocumentRoot “/var/www/html”
DocumentRoot “/var/www/qq”
修改首页文件名称
DirectoryIndex ww.html
#DirectoryIndex index.html
- 写首页内容
#cd /var/www/qq
#ls
#vim ww.html
- 做临时解析
windows:C:\Windows\System32\drivers\etc\hosts
linux:/etc/hosts
#vim /etc/hosts
192.168.8.1 www.qq.com
域名+端口号
- 修改主配置文件
#vim /etc/httpd/conf/httpd.conf
将Listen 80复制之后的改为8089
#Listen 8080
Listen 8089
- 重启服务
#systemctl restart httpd
- 验证
实验六:PHP动态页面
NFS服务(共享服务)
samba:windows和Linux
nfs:Linux和Linux
端口号:tcp 445
#netstat -anpt | grep “445” 查看nfs服务是否开启(如果开启就有445端口,反之没有)
- 挂载光盘
- 编写yum仓库
- 安装软件
#yum install -y nfs-utils(系统已经安装完成)
- 关闭selinux
- 关闭防火墙
- 创建文件夹(用来做共享)
#mkdir /data
#mkdir /test10
- 修改主配置文件
格式:共享文件夹 可以访问的IP 访问的权限
/data *(ro) --- /data文件夹允许所有人只读访问
/test10 192.168.8.0/24(rw) --- /test10文件夹允许192.168.8.0/24网段的用户读写访问
- 修改权限
chmod o+w /data
#chmod o+w /data/
#chmod o+w /test10
- 开启服务
#systemctl restart rpcbind(先开)
#systemctl restart nfs-server(后开)
nfs比较特殊,可以使用刷新配置文件命令来代替重启服务命令
#exportfs -rav 刷新配置文件(刷新完毕之后就可以看到共享文件夹)
#exportfs -uav 停止配置文件
在客户端验证:
#showmount -e 192.168.8.1 查看192.168.8.1服务器上有哪些共享文件夹(如果没有showmount命令,需要手动安装showmount,安装命令:yum install -y showmount)
临时挂载
#mount -t nfs 192.168.8.1:/data /opt
#df -h
192.168.8.1:/data 18G 4.2G 14G 24% /opt
永久挂载
#vim /etc/fstab
192.168.8.1:/test10 /tmp nfs defaults 0 0
综合实验(如何分析题目要求)
DHCP Samba Apache NFS
1.各个服务分别是干嘛的?
DHCP:动态主机分配协议----服务器给客户端自动分配IP
主配置文件路径:vim /etc/dhcp/dhcpd.conf (把样例文件复制到主配置文件中)
服务器现在的地址:192.168.8.1/24
a.网段 192.168.8.0/24
b.掩码 24
c.地址池 (不要将自己的地址和网关等重要(已使用)IP分配下去了)
d.网关 192.168.8.254(跟服务器同一网关)
e.DNS服务器 指向服务器IP
samba:windows和Linux直接共享
vim /etc/samba/smb.conf
1.匿名访问
public = yes
map to guest = bad user ----在全局作用下面[goal]
2.用户名密码访问
将普通用户加入samba(验证时的密码以加samba为主)
[]
path =
writable =
valid users = user1 只能user1能登录到samba服务器
注意事项:
1.权限问题
如何访问samba服务
windows:保证网络互通
1.win + r ---- \\ + ip
linux:
安装软件包 samba-client
smbclient -L + 服务器IP + -U 用户名 % 密码
注意事项:如果window访问被拒,先检查服务有没有问题(可以用Linux先验证一下)
如果没有问题,请着重注意DNS(把DNS注释掉)
apache服务(网站访问,默认端口号80,使用协议:http)
1.访问默认页面(测试页)
装软件、开服务
2.自定义页面
文档是默认路径:/var/www/html
首页文件的名称:index.html
3.更改端口号
vim /etc/httpd/conf/httpd.conf
Listen 80
4.主机名
Linux:/etc/hosts-----添加IP+想用的主机名(192.168.8.1 www.qq.com)
5.主机名+端口
三四实验结合
NFS:Linux和Linux做共享
注意事项:软件包已经安装完成,无需手动安装,查询即可
vim /etc/exports 配置文件里面没有内容
共享文件夹名称 谁可以访问我 访问时的权限是什么
/data * (ro)
exportfs -rav 刷新配置文件(刷新完毕之后就可以看到共享文件夹)
exportfs -uav 停止配置文件
客户端:访问
showmount -e + 服务器IP (showmount是软件包是showmount)
mount -t nfs + 服务器IP地址:共享文件夹 本地文件夹
mount -t nfs 192.168.8.1:/data /opt 临时挂载
vim /etc/fstab
192.168.8.1:/data /opt nfs defaults 0 0
服务器的共享文件夹 挂载点 类型
综合实验
DHCP:用(vmnet1验证)
1.网段:192.168.10.0/24
2.地址范围:192.168.10.100-200
3.域名服务器:192.168.10.10
samba:
使用用户名密码访问
1.共享名称为自己的名字
2.路径为/+自己的名字----eg:wangke
3.可写
4.合法用户:自己、user1
5.访问之后可以往共享文件夹写东西
apache:
主机名访问
1.主机名:www.rhel.skill.com
2.访问内容:welcome + 自己的名字! ----eg :welcome wangke!
NFS:
1.共享文件夹qq,支持192.168.10.0网段IP有只读权限
2.共享文件夹qwer,支持192.168.10.10有读写权限
客户端访问
1.对于qq做临时挂载
2.对于qwer做永久挂载
--------------------------------------------------------------------------------------------
实验解析:
DHCP:用(vmnet1验证)
1.网段:192.168.10.0/24
2.地址范围:192.168.10.100-200
3.域名服务器:192.168.10.10
1-5基础步骤
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
[root@wangke ~]# yum install -y dhcp-server.x86_64
[root@wangke ~]# setenforce 0
[root@wangke ~]# firewall-cmd --permanent --add-service="dhcp"
success
[root@wangke ~]# firewall-cmd --reload
success
[root@wangke ~]# firewall-cmd --list-all
[root@wangke ~]# systemctl stop firewalld.service
[root@wangke ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite '/etc/dhcp/dhcpd.conf'? y
ubnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option domain-name 192.168.10.10;
option routers 192.168.10.254;
default-lease-time 600;
max-lease-time 7200;
}
# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.example.com";
}
[root@wangke ~]# less /var/log/messages | grep "dhcp"
查看dhcp的日志内容
samba:
使用用户名密码访问
1.共享名称为自己的名字
2.路径为/+自己的名字----eg:/wangke
3.可写
4.合法用户:自己、user1
5.访问之后可以往共享文件夹写东西
[root@wangke ~]# yum install -y samba
root@wangke ~]# mkdir /wangke
[root@wangke ~]# useradd wangke
[root@wangke ~]# useradd user1
[root@wangke ~]# pdbedit -au wangke
[root@wangke ~]# pdbedit -au
[wangke]
path = /wangke
writable = yes
valid users = wangke,user1
[root@wangke ~]# chmod 777 /wangke/
[root@wangke ~]# systemctl restart smb
如果访问时出现被拒情况,一定要特别注意DNS!
[root@wangke ~]# yum install -y samba-client
[root@wangke ~]# smbclient -L 192.168.10.10 -U wangke%redhat
补充:
让user1只读,wangke可以读写执行
[root@wangke ~]# setfacl -m u:wangke:rwx,u:user1:r /wangke
[root@wangke ~]# getfacl /wangke/
apache:
主机名访问
1.主机名:www.rhel.skill.com
2.访问内容:welcome + 自己的名字! ----eg :welcome wangke!
[root@wangke ~]# yum install -y httpd
[root@wangke ~]# vim /var/www/html/index.html
Linux:
[root@wangke ~]# vim /etc/hosts
192.168.10.10 www.rhel.skill.com
Windows:
C:\Windows\System32\drivers\etc\hosts
192.168.10.10 www.rhel.skill.com
补充:将首页文件放在/www/wangke
[root@wangke ~]# mkdir -p /www/wangke
[root@wangke ~]# vim /etc/httpd/conf/httpd.conf
#DocumentRoot "/var/www/html"
DocumentRoot "/www/wangke"
--------------------------------------------------------------
<Directory "/www/wangke">
#<Directory "/var/www/html">
[root@wangke ~]# vim /www/wangke/index.html
NFS:
1.共享文件夹qq,支持192.168.10.0网段IP有只读权限
2.共享文件夹qwer,支持192.168.10.10有读写权限
客户端访问
1.对于qq做临时挂载
2.对于qwer做永久挂载
NFS
1.系统已经完成安装nfs的软件包
[root@wangke Packages]# rpm -q nfs-utils
nfs-utils-2.3.3-14.el8.x86_64
[root@wangke ~]# mkdir /qq
[root@wangke ~]# mkdir /qwer
[root@wangke ~]# vim /etc/exports
/qq 192.168.10.0/24(ro)
/qwer 192.168.10.10(rw)
[root@wangke ~]# systemctl restart rpcbind 先开
[root@wangke ~]# systemctl restart nfs-server.service 后开
客户端访问
[root@wangke ~]# showmount -e 192.168.10.10
Export list for 192.168.10.10:
/qq 192.168.10.0/24
/qwer 192.168.10.10
临时挂载
[root@wangke ~]# mount -t nfs 192.168.10.10:/qq /www/
永久挂载
192.168.10.10:/qwer /wangke nfs defaults 0 0
[root@wangke ~]# mount -a 重新加载
192.168.10.10:/qq 18G 4.2G 14G 24% /www
192.168.10.10:/qwer 18G 4.2G 14G 24% /wangke
DNS:
www.qq.com
www:主机名
qq.com:DNS后缀
访问百度-----baidu.com-----www.baidu.com
1.挂载光盘
2.编写yum仓库
3.安装软件
[root@wangke ~]# yum install -y bind
[root@wangke ~]# yum install -y bind-chroot.x86_64
4.关闭selinux
5.关闭防火墙
6.修改配置文件(允许访问DNS服务的IP)
[root@wangke ~]# vim /etc/named.conf 修改允许访问DNS服务的IP
listen-on port 53 { any; };
allow-query { any; };
7.创建区域(正反向区域)
[root@wangke ~]# vim /etc/named.rfc1912.zones
正向区域:
zone "redhat.com" IN { -----DNS后缀
type master; -----主DNS服务器
file "redhat.com"; -----正向区域的名称
allow-update { none; }; -----允许更新
};
反向区域:
zone "10.168.192.in-addr.arpa" IN { -----反向区域
type master; -----主DNS服务器
file "192.168.10"; -----反向区域的名称
allow-update { none; }; -----允许更新
};
8.复制原来的正反向区域到新的正反向区域里 /var/named ----类似于样例文件
[root@wangke named]# cd /var/named
[root@wangke named]# cp -a named.localhost redhat.com
[root@wangke named]# cp -a named.loopback 192.168.10
cp -a 是将原文件的所有属性全部复制过来
9.修改新区域
正向区域解析:
[root@wangke named]# vim redhat.com
$TTL 1D
@ IN SOA ns1.redhat.com. 123456.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.redhat.com.
ns1 A 192.168.10.10
www A 192.168.10.10
ftp A 192.168.10.10
反向区域解析:
[root@wangke named]# vim 192.168.10
$TTL 1D
@ IN SOA ns1.redhat.com. 123456.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.redhat.com.
10 PTR ns1.redhat.com.
10 PTR www.redhat.com.
10 PTR ftp.redhat.com.
10.开启服务
[root@wangke named]# systemctl restart named
11.使用nslookup解析(客户端的DNS一定要指向服务器,否则解析不出来)
a.nslookup
b.192.168.10.10
c.www.redhat.com