Linux基本命令

基本命令

 

unix---只能在特定基站上运行

手机:root---管理员---unix

Linux是类unix

  1. [root@wk~] #

root:登录用户,root管理员

@:间隔符

wk:主机名

~:当前所在目录,~代表家目录

#:身份(管理员),#root,$普通用户

  1. Linux命令语法

  命令 选项 参数

  ctrl c 中止

  ctrl shift + 放大字体

  ctrl - 缩小字体

  ctrl shift t 打开另一个终端

  ctrl shift c 复制

  ctrl shift v 粘贴

  clear或ctrl l 清屏

  1. 多使用tab键
  2. man---manual-手册(eg:man touch)
  3. 历史命令 history
  4. 命令调用

  !num  ---!281---调用281条命令

  !cmd  ---!head ---调用以head且离当前最近的命令

  !!  ---调用上一条命令

  esc(组合键).---调用上条命令的参数

  1. [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

  1. 路径表示

  绝对路径

从/开始

具有唯一性

eg:树根---树干---树枝---树叶

  相对路径

半路上开始---当前目录开始到最后

eg:树干---树枝---树叶

  1. 基本命令管理

目录管理命令(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

  1. 通配符---别名---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的字符

  1. Z] 任何字母字符
  1. z] 任何小写字符
  1. 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

  1. 在Linux系统中打开记事本(gedit)
  2. 重定向

  标准输入

    > file(覆盖)   eg:# echo “Apache1” > 1.txt   # cat 1.txt

>> file(追加)  eg:# echo “hhh” >> 1.txt     # cat 1.txt

  1. 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的文件

  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练习

  1. 通过cp /etc/passwd /tmp/生成vim练习模板文件,用vim编辑器打开/tmp/passwd文件,并以此文件作为练习素材
  2. 在/tmp/passwd文件中显示行号

:set nu

  1. 在最后一行读入/etc/hosts和/etc/selinux/config的内容

:r /etc/hosts

:r /etc/selinux/config

  1. 切换到最后一行,读入/etc/passwd的内容

:r /etc/passwd

  1. 删除10到20行的内容

:10,20d

  1. 将6,7行剪切到100行后

:6,7d

:100

p

  1. 在文件中查找bin字符串

/bin或者?bin

  1. 将文件中所有的bin字符串替换为easthome

:%s/bin/easthome/g

  1. 保存该文件后退出vim编辑器

:wq或:x

  1. 滤除该文件所有的空行之后,保存到/media/passwd.txt

    cat /tmp/password | grep -v “^$” > /media/password.txt

  1. 删除/media/passwd.txt

  rm -rf /media/passwd.txt

管理本地用户和组

  1. 用户(UID)类型

  超级用户 root

  普通用户

  程序用户  ---不允许登录(以Apache为例)

  1. /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开始的

  1. 用户

  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

  1. 管理组

  /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

  让用户加群组

  1. 先创建群组,再在创建用户的过程中使用-g直接加群组

eg:groupadd group1

    useradd -g group1 user1

  1. 先创建用户和组,用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上生效

  1. 找到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

  1. 生成密钥

       ssh-keygen

  1. 将公钥传送至服务器

   ssh-copy-id root@192.168.1.10

  1. 再远程连接时不需要密码

   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)

  1. 编辑---虚拟网卡编辑器(vmnet1)---不勾DHCP
  2. 设置---网络适配器----自定义(vmnet1)
  3. 配置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

  1. 互ping(查看网络是否互通)

注意:如果单方面不通,95%都是防火墙问题

  方法二:NAT模式(vmnet8)

  1. 编辑---虚拟网卡编辑器(vmnet8)---不勾DHCP
  2. 设置---网络适配器---NAT
  3. 配置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

  1. 互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

  1. 互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)

  1. 挂载光盘

  [root@localhost ~]# mount /dev/cdrom /mnt/

[root@localhost ~]# df -h

  1. 编写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   ---开机不做校验

  1. 验证、刷新

  [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

硬盘

  1. 了解硬盘的基础知识
  2. 会分区
  3. 挂载卸载
  4. swap分区
  5. 逻辑分区

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)

  前提:先分好逻辑分区

  1. 将逻辑分区创建成物理卷

  #pvcreate /dev/sdb5

  1. 再在物理卷中创建卷组

  #vgcreate vg01 /dev/sdb5

  1. 在卷中创建逻辑卷

  #lvcreate -L 200M -n lv01 /dev/vg01

  逻辑卷:/dev/vg01/lv01

  1. 格式化

  #mkfs.xfs /dev/vg01/lv01

  1. 挂载

  #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----地址冲突

工作原理

  1. 客户端向服务器请求IP
  2. 服务器收到就会发送IP
  3. 客户端决定是否租约---(如果愿意租就签合同,不愿意就算了)
  4. 双方确认

搭建流程(Linux必须有静态IP)192.168.8.1/24 254

  1. 挂载光盘

  #mount /dev/cdrom /mnt/

  #df -h

  /dev/sr0                      3.5G  3.5G     0  100% /mnt

  1. 编写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

  1. 安装软件

  #cd /mnt/BaseOS/Packages/   ---软件包路径

  #ls | grep “dhcp”

  #yum install -y dhcp-server.x86_64

  #rpm -q dhcp-server  ---查看是否安装

  1. 关闭selinux

  #vim /etc/selinux/config ---重启虚拟机才生效

  光标放到e字母--按dw删除整个单词---光标移到d---按v选中disabled---y复制---回到原来地方p粘贴

  enforcing:强制开启selinux

  permissive:墙头草

  disabled:关闭

  临时关闭:#setenforce 0

  临时开启:#setenforce 1

  1. 关闭防火墙

  #systemctl stop firewalld.service

  1. 查看样例文件并复制答主配置文件中

  #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

  1. 修改主配置文件

  #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;

最大租约时间

}

  1. 启动服务
  2. 验证

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的访问方式

  1. 匿名访问
  2. 用户名密码访问
  1. 在windows上创建共享文件夹

匿名访问

  1. 挂在光盘

  #mount  /dev/cdrom  /mnt/

  #df -h

  1. 编写yum仓库

        [BaseOS]

name=BaseOS

baseurl=file:///mnt/BaseOS

gpgcheck=0

[AppStream]

name=AppStream

baseurl=file:///mnt/AppStream

gpgcheck=0

#yum repolist  查看是否写成功

  1. 安装软件

  # cd  /mnt/BaseOS/Packages

  #ls | grep “samba”

  #yum install -y samba

  1. 关闭selinux

  #vim /etc/selinux/config  ---重启虚拟机才生效

SELINUX=disabled

          临时关闭selinux

  #setenforce 0(此时就不需要重启虚拟机)

  1. 关闭防火墙

  放行防火墙

# firewall-cmd --permanent --add-service=”samba” 在防火墙中放行samba服务

  success

#firewall-cmd --reload  重新加载

  success

#firewall-cmd --list-all  查看防火墙列表

关闭防火墙

  #systemctl stop firewalld.service

  1. 修改主配置文件

  #vim /etc/samba/smb.conf

[share] ---共享文件夹的名称

path = /test1  ---共享文件夹的实际路径

public = yes  ---yum允许匿名访问(还必须在global下面添加map to guest = bad user,两者缺一不可)

map to guest = bad user   ---添加在全局设置[global]下面

  1. 创建文件夹---用来做共享

  #mkdir /test1

  1. 开启服务

  #systemctl restart smb

注意事项:在服务启动过程中,DNS可能会影响服务的启动,建议把DNS注释掉

          #vim /etc/resolv.conf

     #Generated by NetworkManager

     #nameserver 8.8.8.8

  1. 验证

  #ls -ld /test1/

  #chmod 777 /test1/

用户名密码访问

  (1)挂载光盘

    #df -h

  1. 编写yum仓库

#yum repolist

  1. 安装软件

#rpm -q samba

  samba-。。。。。

  1. 关闭selinux

     #setenforce 0

     #getenforce

       Permissive

  1. 关闭防火墙

#firewall-cmd --list-all

  1. 创建文件夹---用来做共享

#mkdir /test2

  1. 创建普通用户

#useradd user1

  1. 将用户加入samba用户(普通用户不能访问samba服务,只有samba用户才可以)

#pdbedit -au user1  将普通用户加入samba

#pdbedit -L

  user1:1001:

注意事项:如果说在第7步创建普通用户时,给用户设置密码为123456,又在第8步将普通用户加入samba时设置的密码是redha,那么登录时使用的密码是:以加入samba时的密码为主

  1. 修改主配置文件

#vim /etc/samba/smb.conf

[share1]  ---共享文件夹名称

path = /test2   ---共享文件夹的实际路径

writable = yes  ---用户是否可写---yes 是

valid users = user1  ---合法用户(表示只有user1可以登录到samba服务)

  1. 修改共享文件夹的权限

#ls -ld /test2

#chmod 777 /test2

  1. 重启服务

#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  ---匿名访问

  1. 用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默认页面)

  1. 挂载光盘

  #df -h

  1. 编写yum仓库
  2. 安装软件
  3. 关闭selinux
  4. 关闭防火墙

# firewall-cmd --permanent --add-service=”samba” 在防火墙中放行samba服务

success

#firewall-cmd --reload  重新加载

success

#firewall-cmd --list-all  查看防火墙列表

#systemctl stop firewalld(firewalld参数tab不出来表示防火墙已经关闭)  关闭防火墙

  1. 开启服务

  #systemctl restart httpd

  1. 验证

实验二(自定义首页内容)

  #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)

  1. 挂载光盘
  2. 编写yum仓库
  3. 安装软件
  4. 关闭selinux
  5. 关闭防火墙
  6. 创建目录(/var/www/qq)  ---用于存放首页文件

      #mkdir  /var/www/qq

  1. 修改配置文件

      #vim  /etc/httpd/conf/httpd.conf

      修改首页文件地址

        #DocumentRoot “/var/www/html”

        DocumentRoot “/var/www/qq”

      修改首页文件名称

        DirectoryIndex ww.html

        #DirectoryIndex index.html

  1. 写首页内容

  #cd  /var/www/qq

  #ls

  #vim ww.html

  1. 做临时解析

  windows:C:\Windows\System32\drivers\etc\hosts

  linux:/etc/hosts

    #vim /etc/hosts

    192.168.8.1 www.qq.com

域名+端口号

  1.  修改主配置文件

  #vim /etc/httpd/conf/httpd.conf

  将Listen 80复制之后的改为8089

#Listen 8080

Listen 8089

  1. 重启服务

  #systemctl restart httpd

  1. 验证

实验六:PHP动态页面

NFS服务(共享服务)

samba:windows和Linux

nfs:Linux和Linux

  端口号:tcp 445

  #netstat -anpt | grep “445”  查看nfs服务是否开启(如果开启就有445端口,反之没有)

  1. 挂载光盘
  2. 编写yum仓库
  3. 安装软件

  #yum install -y nfs-utils(系统已经安装完成)

  1. 关闭selinux
  2. 关闭防火墙
  3. 创建文件夹(用来做共享)

  #mkdir /data

  #mkdir /test10

  1. 修改主配置文件

  格式:共享文件夹  可以访问的IP  访问的权限

/data *(ro) --- /data文件夹允许所有人只读访问

/test10 192.168.8.0/24(rw) --- /test10文件夹允许192.168.8.0/24网段的用户读写访问

  1. 修改权限

  chmod o+w /data

  #chmod o+w /data/

  #chmod o+w /test10

  1. 开启服务

  #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

      

  

  

  

      

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值