Linux基础——基本操作

2020/08/17 12:47
阅读数 34

目录

1. 命令解析器

1.1 概述

1.2 文件或目录颜色一般情况

1.3 命令前的横杠

2. Linux快捷键

2.1 命令和路径补齐

2.2 主键盘快捷键

2.2.1 历史命令切换

2.2.2 光标移动

2.2.3 删除字符

3. Linux 系统目录结构(树结构)

3.1 树状目录结构

3.2 对系统目录的解释

4. 用户目录

4.1 绝对路径

4.2 相对路径

4.3 jiang@ubuntu:~$

5. 文件和目录操作

5.1 查看目录

5.1.1 tree [目录]

5.1.2 ls -la [文件名/目录]

5.2 切换目录

5.2.1 cd + 目录路径

5.2.2 切换到当前用户家目录(/home/jiang)的三种方式

5.2.3 查看当前所在目录 pwd

5.3 创建目录 mkdir

5.3.1 创建单个空目录

5.3.2 创建嵌套目录

5.4 删除目录 rmdir / rm(建议使用)

5.4.1 删除空目录

5.4.2 删除非空目录(递归删除-r)

5.5 创建文件 touch

5.6 删除文件 rm

5.7 拷贝 cp

5.7.1 拷贝文件

5.7.2 拷贝目录

5.8 查看文件内容(5种方式)(了解)

5.8.1 cat + 文件名

5.8.2 more + 文件名

5.8.3 less + 文件名

5.8.4 head [-行数] 文件名

5.8.5 tail [-行数] 文件名

5.9 创建快捷方式 ln

5.9.1 软链接

5.9.2 硬链接

6. 文件和目录的属性(了解)

6.1 获取文本文件属性 wc

6.2 查看二进制文件 od

6.3 查看某个目录大小 du

6.4 查看磁盘使用情况 df

7. which

8. 文件权限, 用户, 用户组

8.1 查看当前登录用户 whoami

8.2 修改文件权限 chmod

 8.2.1 文字设定法

8.2.2 数字设定法

8.3 改变文件或目录所有者和所属组 chown

8.4 改变文件或目录所属组 chgrp

9. 文件的查找和检索

9.1 按文件属性查找

9.1.1 文件名

9.1.2 文件大小

9.1.3 文件类型

9.2 按文件内容查找

10. 软件的安装和卸载(ubuntu下)

10.1 在线安装

10.2 deb包安装

10.3 源码安装

11. U盘的挂载和卸载

11.1 挂载 mount

11.2 卸载 umount

12. 压缩包管理

12.1 只能压缩文件

12.1.1 gzip -- .gz格式的压缩包

12.1.2 bzip2 -- .bz2格式的压缩包

12.2 可以压缩目录和文件

12.2.1 tar -- 不使用z/j参数 , 该命令只能对文件或目录打包

12.2.2 rar -- 必须手动安装该软件

12.2.3 zip 

12.2.4 总结

13. 进程管理

13.1 查看当前在线用户的情况 who

13.2 查看整个系统内部运行的进程状况 ps | grep

13.3 终止进程 kill

13.3.1 查看信号编号

13.3.2 杀死进程

13.4 查看当前进程的环境变量 env

13.5 任务管理器 top

14. 网络管理

14.1 获取网络接口的配置信息 ifconfig

14.2 测试与目标主机是否联通 ping

14.3 查看服务器域名对应的IP地址 nslookup

15. ftp服务器搭建 -- vsftpd

15.1 服务器端

15.1.1 修改配置文件

15.1.2 重启服务

15.2 客户端(安装vsftpd时自带)

15.2.1 实名用户登录(登录需要密码--有安全隐患)

15.2.2 匿名用户登录

15.2.3 lftp客户端(更好用)访问ftp服务器

15.3 ftp小结

16. nfs服务器搭建

16.1 服务器端

16.2 客户端

17. ssh服务器

17.1 服务器端

17.2 客户端

18. scp命令

19. 用户管理

19.1 创建用户 useradd -s -g -d -m

19.2 创建用户组 groupadd

19.3 删除用户 userdel -r

19.4 切换用户 su

19.5 root用户 sudo

19.6 设置密码 passwd

19.7 退出登录用户 exit

19.8 查看用户是否存在及用户信息

20. 其他命令

20.1 翻页

20.2 清屏

20.3 创建终端

20.4 看手册

20.5 设置查看别名: alias

20.6 echo

21. 关机重启

21.1 关机 poweroff

21.2 重启 reboot

21.3 shutdown


文章内容说明:

1. 本文内容大部分出自对传智播客linux课程内容的总结和课堂笔记。

2. 本文部分命令使用加粗紫色(e.g. ls)编写,而没有在代码块中编写。

3. 本文还没有涉及到vim的使用、gcc编译器使用、makefile的使用等,会在学习完相应课程后补充。

4. 若有常见命令的详细介绍或linux系统的扩展学习的需要,可以点击此处下载PDF书籍(鸟哥私房菜-基础篇、Linux命令速查手册)。


1. 命令解析器

1.1 概述

  • shell -- unix操作系统,Bourne Shell(/bin/sh)
  • bash -- Linux操作系统,Bourne Again Shell(/bin/bash)
  • 本质: 根据命令的名字, 调用对应的可执行程序

1.2 文件或目录颜色一般情况

image.png

1.3 命令前的横杠

image.png


2. Linux快捷键

2.1 命令和路径补齐

  • Tab
  • 按一次没反应,按两次会列出所有的符合命令或目录

2.2 主键盘快捷键

2.2.1 历史命令切换

  • 历史命令:    history
  • 向上遍历:    Ctrl + p (previous)
  • 向下遍历:    Ctrl + n (next)

2.2.2 光标移动

  • 向左:    Ctrl + b (backward)
  • 向右:    Ctrl + f (forward)
  • 移动到头部:    Ctrl + a
  • 移动到尾部:    Ctrl + e

2.2.3 删除字符

  • 删除光标后边的字符(即光标覆盖的字符):    Ctrl + d
  • 删除光标前边的字符:    Ctrl + h 或 Backspace
  • 删除光标前的所有内容:    Ctrl + u
  • 删除整行命令:    Ctrl + e 和 Ctrl + u

3. Linux 系统目录结构(树结构)

  • 登录系统后,在当前命令窗口下输入命令:
ls /
  • 你会看到如下图所示:

image.png

3.1 树状目录结构

image.png

3.2 对系统目录的解释

/bin

bin是Binary的缩写, 这个目录存放着最经常使用的命令。

/boot

这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

/dev

dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

/etc

这个目录用来存放所有的系统管理所需要的配置文件和子目录。

/home

用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

/lib

这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

/lost+found

这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

/media

linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

/mnt

系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

/opt

这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

/proc

这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root

该目录为系统管理员,也称作超级权限者的用户主目录。

/sbin

s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

/selinux

这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

/srv

该目录存放一些服务启动之后需要提取的数据。

/sys

这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统种被创建。

/tmp

这个目录是用来存放一些临时文件的。

/usr

这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。

/usr/bin

系统用户使用的应用程序。

/usr/sbin

超级用户使用的比较高级的管理程序和系统守护程序。

/usr/src

内核源代码默认的放置目录。

/var

这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc

上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin

这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var

这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

在linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc:上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin:这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。


4. 用户目录

4.1 绝对路径

  • 从根目录开始写 /home/jiang/aa

4.2 相对路径

  • bb -- 相对于当前的工作目录而言
  • . -> 当前目录
  • .. - > 当前的上一级目录
  • - -> 在临近的两个目录直接切换 cd -

4.3 jiang@ubuntu:~$

  • jiang: 当前登录用户
  • @: at 在
  • ubuntu: 主机名
  • ~: 用户的家目录(宿主目录)
  • $: 当前用户为普通用户
  • #: 超级用户 -- root

5. 文件和目录操作

5.1 查看目录

5.1.1 tree [目录]

  • 必须先安装该软件
sudo apt-get insatll tree
tree                     #不加参数,查看当前目录
tree /home/jiang         #加参数,查看指定目录

5.1.2 ls -la [文件名/目录]

  • 什么都不加,查看当前目录
ls -a                       #可查看隐藏目录和文件(.aaa)
ls -l [文件名/目录]          #可查看文件或目录属性

image.png

5.2 切换目录

5.2.1 cd + 目录路径

5.2.2 切换到当前用户家目录(/home/jiang)的三种方式

cd /home/jiang
cd ~
cd

5.2.3 查看当前所在目录 pwd

pwd

5.3 创建目录 mkdir

5.3.1 创建单个空目录

mkdir 目录名

5.3.2 创建嵌套目录

mkdir -p dir/dir1/dir2

5.4 删除目录 rmdir / rm(建议使用)

5.4.1 删除空目录

rmdir 目录名
  • 如果删除有内容的目录会报错

5.4.2 删除非空目录(递归删除-r)

rm -r aa          #-r递归删除目录,因为目录是树状结构  
rm -ri aa         #-i删除目录时提示是否删除 

5.5 创建文件 touch

touch 文件名
  • 如果文件不存在,则创建文件
  • 如果文件存在,则修改文件时间

5.6 删除文件 rm

rm [-i] 文件名         #-i提示是否删除

5.7 拷贝 cp

5.7.1 拷贝文件

cp 源文件 目标文件
  • 若目标文件不存在,则自动创建目标文件
  • 若目标文件存在,则覆盖目标文件中的内容(谨慎操作)

5.7.2 拷贝目录

cp -r 源目录 目标目录         #涉及目录的操作---递归-r
  • 若目标目录不存在,创建目标目录,把源目录中的内容拷贝到目标目录中
  • 若目标目录存在,把源目录拷贝到目标目录中,目标目录下多一个源目录

5.8 查看文件内容(5种方式)(了解)

5.8.1 cat + 文件名

  • 缺陷:文件内容太长,不能全部显示,适合文件内容短的情况

5.8.2 more + 文件名

  • 向下逐页查看--------空格[space]
  • 向下逐行查看--------回车[enter]
  • 缺陷:无法向上翻看内容

5.8.3 less + 文件名

  • 向上逐页查看--------Ctrl + b
  • 向下逐页查看--------回车[enter] 或 Ctrl + f
  • 向上逐行查看--------Ctrl + p
  • 向下逐行查看--------空格[space] 或 Ctrl + n

5.8.4 head [-行数] 文件名

  • 默认显示从文件首部开始的10行

5.8.5 tail [-行数] 文件名

  • 默认显示从文件尾部开始的10行

5.9 创建快捷方式 ln

5.9.1 软链接

ln -s 源文件/目录的路径 软链接名字
  • 其中源文件或目录的路径不同,访问权限不同
  • 相对路径
ln -s hello.c day.soft            #只能在当前目录下使用
  • 绝对路径
ln -s ~/hello.c day.soft          #可在任意目录下使用
  • 软链接大小:软链接的名字字符个数
  • 可以为文件和目录创建软链接

5.9.2 硬链接

ln 源文件路径 硬链接名字
  • 硬链接不额外占磁盘空间,指向的是同一块内存,只是为这块内存起了不同的别名,可以类比于c++中的 int a; int &b = a;
  • Linux文件系统的存储单位是块,有一个inode(i结点),保存了一些文件的信息,可以通过inode找到对应的文件。
  • 其中创建的所有硬链接,对应同一个i结点,映射到同一位置。
  • 硬链接大小:与源文件大小相同
  • 不能给目录创建硬链接,且创建硬链接时,不需要指定绝对路径。

image.png


6. 文件和目录的属性(了解)

6.1 获取文本文件属性 wc

wc 文本文件名
  • 返回:行数、单词数、字节数、文件名

6.2 查看二进制文件 od

od -t [c/d/f/u/o/x] 二进制文件名
  • - t 指定数据的显示格式
  • c ASCII d 有符号10 u 无符号10 f 浮点 o 8 x 16

6.3 查看某个目录大小 du

du [-h]
  • 一般加参数-h(human) 以人类能看懂的方式显示 

6.4 查看磁盘使用情况 df

df [-h]
  • 一般加参数-h(human) 以人类能看懂的方式显示 

7. which

which 命令
  • 查看指定命令所在的路径 (e.g. which ls -> /bin/ls)
  • which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
  • cd 找不到,因为cd 是bash 内建的命令!

8. 文件权限, 用户, 用户组

8.1 查看当前登录用户 whoami

whoami

8.2 修改文件权限 chmod

 8.2.1 文字设定法

chmod [who] [+|-|=] [mode]  文件名

 

  • who:  文件所有者: u    文件所属组: g    其他人: o    所有的人: a
  • +: 添加权限        -: 减少权限        =: 覆盖原来的权限
  • mode:r: 读    w: 写    x: 执行
  • e.g. chmod a=w temp  为所有人授予写权限,清除所有人读和执行权限

8.2.2 数字设定法

chmod [-] [n][n][n] 文件名/目录名
  • 参数
    • - : 没有权限
    • r: 4    
    • w: 2    
    • x: 1
  • e.g.  chmod 765 a.out
    • 7 -- rwx -- 文件所有者
    • 6 -- rw -- 文件所属组
    • 5 -- rx -- 其他人  
  • e.g. chmod - 001 a.out
    • 去掉其他人可执行权限

8.3 改变文件或目录所有者和所属组 chown

  • 注意:在linux中,一个文件可以属于第一组中的某个人,但可以不属于第一组,也可以属于第二组
  • 修改所有者:
  • sudo chown zhangsan temp             #sudo是暂时借用管理员权限
  • 同时修改所有者和所属组:
  • sudo chown Luffy:lisi temp
    • 指定Luffy为所有者,lisi为所属组

8.4 改变文件或目录所属组 chgrp

  • e.g. sudo chgrp ABC temp

 

  • 注意:目录在创建时,默认有执行权限,如果目录没有执行权限,无法使用cd进入,或使用ls列出目录信息。

9. 文件的查找和检索

9.1 按文件属性查找

9.1.1 文件名

find 查找的目录 -name "文件的名字"
  • 通配符:* 代表所有字符        ? 代表一个字符

9.1.2 文件大小

find 查找目录 [-size +10k 或 -size 10k -size 20k]

 

  • +10k(小写k)大于10kB
  • -10M(大写M)小于10MB
  • -size 10k -size 20k -> 10k ≤ size ≤ 20k

9.1.3 文件类型

find 查找目录 -type d/f/b/c/s/p/l
  • d 目录 f 普通 b 块设备(磁盘) c 字符设备(键盘) s socket文件 p 管道 l 链接

9.2 按文件内容查找

grep -r "查找的内容" 查找的路径
  • 注意:查找内容在前,路径在后。(与find不同)
  • -r 递归查找

10. 软件的安装和卸载(ubuntu下)

10.1 在线安装

  • apt-get
    • 安装:sudo apt-get install tree -- 在线下载安装
    • 移除:sudo apt-get remove tree
    • 更新:sudo apt-get update -- 更新软件列表(软件的名字和下载地址,从官方服务器更新)
    • 清理所有软件安装包:sudo apt-get clean
      • 实际清理的是: /var/cache/apt/archives 目录下的 .deb 文件
  • aptitude(需要安装)

10.2 deb包安装

  • 安装:sudo dpkg -i xxx.deb
  • 删除:sudo dpkg -r xxx
  • dpkg <--> deb packet

10.3 源码安装

  • 案例: 安装 svn
    • ​​​​​​​./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
    • make
    • sudo make install

11. U盘的挂载和卸载

11.1 挂载 mount

  • 系统默认挂载(自动挂载)目录/media
    • 使用虚拟机自动挂载:虚拟机全屏 -> 插入U盘 -> 成功挂载
  • 手动默认挂载目录:/mnt
    • 挂载方式:mount + 设备名 + 挂载目录
      • 设备名:U盘在Linux系统中的设备名字
      • 检测设备名称: sudo fdisk -l

                   image.png

  • 磁盘命名规则:

                image.png

  • 挂载目录
    • 默认手动挂载到 /mnt
    • 挂载到/mnt以外的目录 -- 挂载成功后会遮蔽掉目录中原来的东西,卸载设备之后才能看到目录中原来的数据。

11.2 卸载 umount

sudo umount /mnt
  • 注意:卸载的时候,用户的当前位置一定不能在 /mnt(/media)或者其子目录下,否则无法卸载。

12. 压缩包管理

12.1 只能压缩文件

12.1.1 gzip -- .gz格式的压缩包

gzip 文件名
gunzip 压缩文件名
  • 缺陷:不打包压缩,每个文件单独压缩;源文件不保留。

image.png

12.1.2 bzip2 -- .bz2格式的压缩包

bzip2 [-k] 文件名
bunzip2 压缩文件名
  • 缺陷:不打包压缩,每个文件单独压缩。
  • 与gzip不同:加参数-k可保留源文件。

image.png

12.2 可以压缩目录和文件

12.2.1 tar -- 不使用z/j参数 , 该命令只能对文件或目录打包

  • 参数:
    • c -- 创建 -- 压缩
    • x -- 释放 -- 解压缩
    • v -- 显示提示信息 -- 压缩解压缩 -- 可以省略
    • f -- 指定压缩文件的名字
    •  
    • z -- 使用gzip的方式压缩文件 -- .gz
    • j -- 使用bizp2的方式压缩文件 -- .bz2
  • 压缩:
tar zcvf 生成的压缩包的名字(xxx.tar.gz) 要压缩的文件或目录
tar jcvf 生成的压缩包的名字(xxx.tar.bz2) 要压缩的文件或目录
  • 解压缩:
tar jxvf 压缩包的名字(解压到当前目录)
tar jxvf 压缩包名字 -C 压缩的目录              #注意此处-C,解压到指定目录
  • 其中tar是做打包工作,压缩工作是gzip和bzip2做的。

12.2.2 rar -- 必须手动安装该软件

  • 参数:
    • 压缩: a
    • 解压缩: x
  • 压缩:
rar a 生成的压缩文件的名字(temp) 压缩的文件或目录
  • 解压缩:
rar x 压缩文件名 [解压缩目录]                #省略解压缩目录,解压到当前目录

12.2.3 zip 

  • 参数:
    • 压缩目录需要加参数 -r
  • 压缩:
zip 压缩包的名字 压缩的文件
zip -r 压缩包的名字 压缩的目录                #注意此处-r压缩目录
  • 解压缩:  
unzip 压缩包的名字 解压到当前文件夹
unzip 压缩包的名字 -d 解压目录 解压到指定目录         #注意此处-d用于指定解压缩目录   

12.2.4 总结

  • 相同之处:  
tar/rar/zip 参数 生成的压缩文件的名字 压缩的文件或目录                 #压缩时候的语法
tar/rar/unzip 参数 压缩包的名字 参数(-C/d rar没有参数) 解压缩目录      #解压缩语法

13. 进程管理

13.1 查看当前在线用户的情况 who

image.png

  • 登录的用户名 使用的设备终端(pts 黑窗口) 登录到系统的时间
  • tty 设备(互不影响)
    • tty1 - tty6 表示文字界面 ctrl + alt + [F1-F6]
    • tty7 图形界面 ctrl + alt + F7

13.2 查看整个系统内部运行的进程状况 ps | grep

  • 查看整个系统内部所运行的进程状况
  • 涉及的参数
    • a:(all)当前系统所有用户的进程
    • u:查看进程所有者及其他一些信息
    • x:显示没有控制终端的进程 -- 不能与用户进行交互的进程【输入、输出】

         image.png

  • 显示当前用户下所有进程:ps aux
  • 对显示的进程过滤:ps aux | grep xxx
  • 什么是管道(|)
  •   image.png
    • 指令1的输出作为指令2的输入
    • 指令2处理完毕,将信息输出到屏幕
  • grep查询是需要占用一个进程的,所有结果 > 2 才能说明查询结果存在

image.png

  • 如果结果有一条,表示没有查询的进程

image.png

  • 查询结果中PID表示进程ID

13.3 终止进程 kill

13.3.1 查看信号编号

kill -l

image.png

13.3.2 杀死进程

kill -SIGKILL(-9) 89899 (PID-进程标识号)
  • 向当前进程发送了9号信号(SIGKILL)

13.4 查看当前进程的环境变量 env

env | grep PATH

image.png

  • 环境变量:当前系统下用户的配置路径信息
  • Linxu下的环境变量的格式为键值对(key-value):key=value : value : value  (多个值之间用 : 分隔)
  • PATH:该环境变量中记录着shell命令解析器去查找命令的目录位置,从前往后的顺序查找
    • LANG: 语言以及字符集

13.5 任务管理器 top

  • 相当于windows下的任务管理器:文字版、不能翻页

14. 网络管理

14.1 获取网络接口的配置信息 ifconfig

  • 获取网络接口配置信息,还可以修改这些配置。
  • 获取网络接口信息

aaa.png

14.2 测试与目标主机是否联通 ping

ping [参数] [主机名或IP地址]
  • 参数:
    • -c 数目:在发送指定数目的包后停止。
    • -i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次

14.3 查看服务器域名对应的IP地址 nslookup

  •  查看服务器域名对应的IP地址 nslookup 域名
  • 一般访问网站都是使用域名,如:www.baidu.com,使用该命令就可查看百度所有服务器的IP地址。

15. ftp服务器搭建 -- vsftpd

 作用: 文件的上传和下载

15.1 服务器端

15.1.1 修改配置文件

  • 如何修改配置文件
sudo vi /etc/vsftpd.conf
  • 把图片中画圈的解开,可实现简单的ftp服务器功能

image.png

15.1.2 重启服务

sudo service vsftpd restart

15.2 客户端(安装vsftpd时自带)

15.2.1 实名用户登录(登录需要密码--有安全隐患)

15.2.1.1 登录服务器

ftp serverIP
输入服务器用户名
输入服务器密码

15.2.1.2 文件的上传和下载

  • 文件的上传:put 文件名在哪个目录下登录的ftp服务器,就只能上传相应目录下的文件
  • 文件的下载:get 文件名  (在哪个目录下登录的ftp服务器,就只能将文件下载到相应目录下
  • 不允许操作目录, 如果想操作目录 -- 打包 tar/rar/zip

15.2.1.3 退出登录

quit
bye
exit

15.2.2 匿名用户登录

  • 匿名用户登录服务器配置
    • 指定匿名用户根目录(默认匿名根目录:/srv/ftp/)​​​​​​​
      • ​​​​​​​​​​​​​​image.png
    • 自己指定匿名用户ftp根目录:比如: /home/jiang/anonDir/
    • 创建目录,供匿名用户使用
      • cd /home/jiang
      • mkdir anonDir
    • 修改目录所有者:sudo chown ftp anonDir
      • 或者修改目录权限:chmod 777 anonDir
      • 注意:如果不修改其他人写权限,则无法通过ftp上传文件到服务器
    • 修改配置文件
      • sudo gedit(vi)/etc/vsftpd.conf
      • 手动添加anon_root=/home/jiang/anonDir
    • 重启服务器
      • sudo service vsftpd restart
  • 登录服务器
ftp serverIP
用户名: anonymous
密码: 直接回车
  • 特点:
    • 不允许匿名用户在任意目录直接切换
    • 只能在一个指定的目录(匿名用户根目录)范围内工作
    • 需要在ftp服务器上创建一个匿名用户的目录 -- 匿名用户的根目录

15.2.3 lftp客户端(更好用)访问ftp服务器

  • 一个ftp客户端工具, 可以上传和下载目录
  • 软件安装​​​​​​​   sudo apt-get install lftp
  • 登录服务器​​​​​​​
    • 实名
      • lftp username@serverIP [Enter/回车]
      • 输入服务器密码
    • 匿名
      • lftp serverIP  [Enter/回车]
      • login
  • 操作
    • put 上传文件
    • mput 上传多个文件
    • get 下载文件
    • mget 下载多个文件
    • mirror 下载整个目录及其子目录
    • mirror -R 上传整个目录及其子目录
    • lcd   lpwd -- 本地(local)切换目录、查看本地当前路径

15.3 ftp小结

image.png


16. nfs服务器搭建

作用:net file system -> 网络文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。可以理解为利用互联网共享的一个共享文件夹。

16.1 服务器端

  • 创建一个欲共享出去的目录
  • 如:/home/xxx/xxx(/home/jiang/share)
    • cd /home/jiang
    • mkdir share
    • 打开配置文件:sudo vi /etc/exports
      • 写入共享目录的绝对路径,及对应权限。
      • 如:/home/jiang/share * (ro,sync,no_root_squash)
  • 设置参数:
    • ro -> 只读权限
    • rw -> 读写权限
    • sync -> 资料同步写入到内存与硬盘当中(实时更新)
    • async -> 资料会先暂存于内存当中,而非直接写入硬盘
    • no_root_squash -> 登入NFS主机,使用该共享目录时相当于该目录的拥有者。如果是root的话,那么对于这个共享的目录来说,他就具有root的权限,这个数『极不安全』,不建议使用
    • root_squash -> 登入NFS主机,使用该共享目录时相当于该目录的拥有者。但是如果是以root身份使用这个共享目录的时候,那么这个使用者(root)的权限将被压缩成为匿名使用者,即通常他的UID与GID都会变成nobody那个身份
    • all_squash -> 不论登入NFS的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是nobody
    • *是一个IP网段,在哪个IP网段共享,比如192.168.0.,但是有的版本不好使,最好写成*。
  • 重启nfs:sudo service nfs-kernel-server restart

16.2 客户端

  • 客户端访问共享目录:mount + serverIP:共享目录名 挂载目录
    • e.g. sudo mount 192.168.0.100:/home/jiang/share/ /mnt
    • cd 到本机的/mnt 目录中就可以使用cp命令得到目录中的所有文件。

17. ssh服务器

SSH -> Secure Shell

17.1 服务器端

  • 安装ssh
    • sudo atp-get install openssh-server
  •  查看SSH是否安装
    • sudo aptitude show openssh-server

17.2 客户端

作用:比如服务器管理员通过ssh远程登录外地主机,进行维护

  • 远程登录
ssh 用户名@serverIP         #确认连接的时候一定要写yes/no
  • 退出登录
logout

18. scp命令

作用:跨越主机,在不同的主机之间进行拷贝,scp -> super copy

  • 使用该命令的前提条件:目标主机已经成功安装openssh-server
  • 使用格式
scp -r 目标用户名@目标主机IP地址:/目标文件的绝对路径 /保存到本机的绝对(相对)路径
#e.g. scp -r jiang@192.168.0.100:/home/jiang/music/ ./media
  • 在后续会提示输入“yes”此时,只能输“yes”而不能简单输入“Y”
  • 拷贝目录需要加参数 -r
  • 较ftp方便之处:比如,如果只需要获取远程服务器上的某个目录,可以直接使用这种方式,而不用去搭建一个ftp服务器了,否则要先搭建一个ftp服务器,搭建好之后,把这个目录放到服务器上,用户使用客户端登录到服务器上,然后下载。

19. 用户管理

19.1 创建用户 useradd -s -g -d -m

sudo adduser 用户名                

 

  • 用户名必须小写
sudo useradd -s /bin/bash -g JIANG -d /home/jiang -m jiang
  • 参数
    • -s :指定新用户登陆时shell类型
    • -g :指定所属组,该组必须已经存在
    • -d :用户家目录
    • -m :用户家目录不存在时,自动创建该目录

19.2 创建用户组 groupadd

sudo groupadd 组名

19.3 删除用户 userdel -r

sudo deluser + 用户名
  • 删除后,家目录还在,需要手动删除
sudo userdel -r 用户名
  • 选项 -r 的作用是把用户的主目录一起删除

19.4 切换用户 su

su 用户名

19.5 root用户 sudo

sudo su
  • 输入当前用户密码
sudo 命令
  • 普通用户使用超级用户权限执行命令

19.6 设置密码 passwd

  • 设置普通用户密码
sudo passwd 用户名
  • 设置root密码
sudo passwd root
sudo passwd

19.7 退出登录用户 exit

exit

19.8 查看用户是否存在及用户信息

vi /etc/passwd

    image.png


20. 其他命令

20.1 翻页

  • 终端翻页
    • Shift + PageUp -> 上翻页
    • Shift + PageDown -> 下翻页

20.2 清屏

  • clear
  • Ctrl + l

20.3 创建终端

  • Ctrl + Alt + T (Ubuntu)
  • Ctrl + Shift + T (添加新标签页)

20.4 看手册

  • man man -> 共九个章节
    • 1.可执行程序或shell命令
    • 2.系统调用(内​核提供的函数)
    • 3.库调用(程序库中提供的函数)
    • 4.特殊文件(通常位于/dev)
    • 5.文件格式和规范(如:/etc/passwd)
    • 6.游戏
    • 7.杂项
    • 8.系统管理命令
    • 9.内核例程

20.5 设置查看别名: alias

  • 查看(是否被封装过)
  • alias
    • e.g. ​alias ls​ => alias ls='ls --color=auto'
  • 设置
    • alias pag='ps aux | grep'
    • 需要长久有效需要去设置配置文件:.bashrc

20.6 echo

  • 在显示器上显示数据
    • 普通数据:​echo 字符串
    • 显示环境变量:​echo $PATH
    • 显示上一次程序退出值:​echo $?
      • $ : 取值
      • ? : 最近一次程序退出时的返回值

21. 关机重启

21.1 关机 poweroff

sudo poweroff​

21.2 重启 reboot

​sudo reboot​

21.3 shutdown

  • 参数
    •  -t 秒数 : 设定在切换至不同的runlevel之前, 警告和删除二讯号之间的延迟时间(秒).
    •  -k : 仅送出警告讯息文字, 但不是真的要 shutdown.
    •  -r : shutdown 之後重新开机.
    •  -h : shutdown 之後关机.
    •  -n : 不经过 init , 由 shutdown 指令本身来做关机动作.(不建议你用)
    •  -f : 重新开机时, 跳过 fsck 指令, 不检查档案系统.
    •  -F : 重新开机时, 强迫做 fsck 检查.
    •  -c : 将已经正在 shutdown 的动作取消.
  • 例子:
    •  shutdown -r now 立刻重新开机
    •  shutdown -h now 立刻关机
    •  shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有真的关机
    •  shutdown -t3 -r now 立刻重新开机, 但在警告和删除processes 之间, 延迟3秒钟.
    •  shutdown -h 10:42 'Hey! Go away!' 10:42 分关机
    •  shutdown -r 10 'Hey! Go away!' 10 分钟後关机
    •  shutdown -c 将刚才下的 shutdown 指令取消,必须切换至其它tty, 登入之後, 才能下此一指令.
    •  shutdown now 切换至单人操作模式(不加任何选项时)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部