Linux学习简单教程和常用命令(小白学习法)

博主在这里介绍一些自己常用的关于Linux知识和常用命令,希望对大家有所帮助,也是对自己的学习Linux的反思总结。

文章目录

一、有关Linux的知识

1).Linux严格区分大小写
2).tab键命令补齐文件补齐功能
3).Linux中所有的内容以文件形式保存,包括硬件,如硬盘文件是:/dev/sd[a-p]
4).Linux不靠扩展名区分文件类型(跟windows系统每个文件后都有扩展名不同,比如.exe,.rar等)
5).Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘(挂载的含义类似于windows系统需要分盘符);
6).Windows下的程序不能直接在Linux中安装和运行,(也有例外,但是又要有这样的意识)
7)对于文件和目录的权限,一定要记住以下含义
(对于文件权限>>r:cat/more/head/tail/less; w:vim; x:scrip,command
对于目录权限>>r:ls; w:touch/mkdir/rmdir/rm; x:cd)
#在看完后面的常用命令后回头看这块,会感觉豁然开朗。
记法:r=read;w=write;x=executer=read;w=write;x=execute

1.1目录

目录作用
/bin 存放系统命令,普通用户和root都可以执行
/sbin 保存和系统环境设置相关的命令,只有root能执行
/usr/bin/usr/sbin/boot 系统启动目录
/dev 设备文件
/etc 配置文件
/home 宿主目录
/lib 系统函数库
/lost+found/ 当系统崩溃或意外关机而产生的文件碎片。
当系统启动过程fsck工具会检查这里,并修复系统 每个分区都有自己的这个目录
/media 挂载目录 多媒体设备 光盘
/mnt 挂载目录 u盘移动硬盘或其他操作系统分区
/misc 挂载目录 系统建议用来挂载nfs服务的共享目录
/opt 第三方软件保存位置 用处不多,现在外部软件一般放
/usr/local目录
/proc 虚拟文件系统 放内存中 当前系统的进程和硬件信息
/sys 虚拟文件系统 放内存中 存放内核相关信息
/root root家目录
/srv 服务数据目录
/tmp 临时
/usr 系统软件资源目录
/var 动态数据保存位置。保存缓存、日志及软件运行产生的文件

1.2 文件系统和磁盘分区

1.2.1 磁盘分区分区类型

主分区:最多4个
扩展分区:最多1个,不能写入数据和格式化,只能挂载逻辑分区。
主分区+扩展分区 最多4个
逻辑分区:格式化(高级格式化)又称为逻辑格式化,是要在硬盘中写入文件系统
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明: 就算主分区只有1个,逻辑分区的设备文件名也不能用3和4,因为1、2、3、4只能主分区和扩展分区用。

1.2.2文件系统

ext2:是ext文件系统的升级版本。Red hat Linux7.2以前的系统默认都是ext2文件系统。最大支持16TB的分区和最大2TB的文件。
ext3:最大支持和ext2一样。最大的区别是带日志功能,以在系统突然停止时提高文件系统的可靠性。
ext4:最大支持1EB文件系统和16TB的文件。在性能可靠性方面有大量改进。是Centos6.3的默认文件系统。

1.2.3文件系统的常用命令 df、du、fsck、dumpe2fs

1、df命令 统计文件系统的占用情况
语法: df 【选项】【挂载点】
-a 显示所有文件系统信息,包括特殊文件系统。如/proc,/sysfs
-h 使用习惯单位显示容量,如KB\MB\GB
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示。默认KB为单位。
2、du命令 统计目录或文件大小
语法: du 【选项】【目录或文件名】
-a 显示每个子文件的磁盘占用量。默认止痛剂子目录的磁盘占用量
-h 使用习惯单位显示占用量
-s 统计总占用量,而不列出子目录和子文件的占用量
特别说明: 一般文件的大小可以用命令:ll -h查看;
但是ll -h 查看目录时其大小只是看一级子目录和子文件的文件名大小!而不是看子文件的数据大小,所以不能用此方法看目录的文件大小。
一般用,命令: du -sh /etc/ 查看此目录的总大小
df和du的区别: df命令是从文件系统考虑的,不光要考虑文件所占用的空间,还要统一被命令或程序占用的空间。(最常见的就算文件已经被删除了,但是程序并没有释放空间)。du命令是面向文件的,只会计算文件或目录占用的空间。所以命令df -h比命令 du -sh /得到的占用的容量更大。
3、fsck 文件系统修复命令(一般不用手动执行)
语法 fsck 【选项】 分区设备文件名
-a 不用显示用户提示,自动修复文件系统;
-y 自动修复。和-a作用一致,不过有些文件系统只支持-y。
4、dumpe2fs 显示磁盘状态命令
选项:-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。

1.2.4挂载:

概念:根文件系统之外的其他文件要想能够被访问,都必须通过“关联”至根文件系统上的某个目录来实现,此关联操作即为“挂载”,此目录即为“挂载点”,解除此关联关系的过程称之为“卸载”
1.挂载:根文件系统外通过关联至根文件系统上的某个目录来实现访问
2.挂载点(盘符):mount_point,用于作为另一个文件系统的访问入口;
/ 根分区
swap分区 交换分区 内存1.5-2倍 不超过2G
推荐分区/boot 启动分区 200m即可 太大无用,系统启动都要有空闲空间,防止系统写满导致无法启动,写完之后永远不会往这个分区再写入数据,他永远有空闲空间
boot分区一定是sda1第一个分区
挂载点必须是空目录

挂载命令mount
 mount [-l]  #查询系统中已经挂载的设备,-l会显示卷标名称;
mount -a   #依据配置文件/etc/fstab的内容,自动挂载

挂载命令格式:
mount 【-t 文件系统】 【-L 卷标名】 【-o 特殊选项】设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,如果挂载的是硬盘、分区用ext3、ext4,光驱用iso9660;
-L 卷标名: 挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:可以指定挂载的额外选项,如下图所见:
在这里插入图片描述
注意 noexec选项,可以使分区的文件无法打开执行,就算是超级用户root也不行!
范例1:(挂载光盘)
步骤:建立挂载点–>放入光驱–>挂载光盘

mkdir /mnt/cdrom/ #建立挂载点
mount -t iso9660 /dev/cdrom  /mnt/cdrom/ #挂载光盘
mount /dev/sr0  /mnt/cdrom #挂载光盘,作用同第二条命令

如果需要卸载取下光盘,需要先用卸载命令卸载。

umount 设备文件名**或**挂载点
umount  /mnt/cdrom

范例2:(挂载U盘)
提醒:挂载U盘必须在虚拟机里面操作,不能在SecureCRT终端仿真软件里操作,因为这样读U盘的就是windows系统而不是linux系统。

fdisk -l   #查看U盘设备文件名
mount -t vfat  /dev/sdb1   /mnt/usb/

注意: Linux默认是不支持NTFS文件系统的。
范例3:(支持NTFS文件系统)
如果要Linux系统能支持NTFS的移动硬盘有两种方法:1、修改内核信息(不推荐);2、下载驱动。这里介绍下载驱动的方法:
(1)下载NTFS-3G插件,并用WinSCP软件将驱动放入Linux中
http://www.tuxera.com/community/ntfs-3g-download/
(2)安装NTFS-3G

tar-zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz  #解压
cd ntfs-3g_ntfsprogs-2013.1.13		#进入解压目录
./configure			#编译器准备。没有指定安装目录,安装到默认位置
make	#编译
make install		#编译安装

(3)使用
mount -t ntfs-3g 分区设备文件名 挂载点
分区设备文件名可以通过命令: fdisk -l 查看,
挂载点需要手动建立,例如可以 /mnt/usb/

1.2.5 fdisk分区

首先需要断电再虚拟机添加一个新硬盘,然后在linux里面操作建立fdisk分区。
1、命令: fdisk -l 查看分区情况,新建一个硬盘后此硬盘在查看时应该是还没有分区;
2、命令: fdisk /dev/sdb #进行分区(注意此时后面不能加数字!因为现在只是把新硬盘进行分区操作)
3、输入上一条命令后,出现Command(m for help):
第一步输入:n #新建分区
第二步:p #建立分区列表,填分区号
第三步:1,回车
第四步:+2G #表示此分区2个G大小。
第五步:w #保存退出!
== 特别的:== 如果分完区保存再分区,需要多一个步骤,需要重新读取分区表信息,命令:partprobe
第六步:mkfs -t ext4 /dev/sdb1 #格式化分区(注意不能格式化扩展分区)
第六步:mkdir /disk1 #建立挂载点
mount /devsdb1 /disk1 #挂载
(可以使用mount命令或df命令查看是否被挂载成功)用mount命令手动挂载每次系统重启都需要再次挂载,这就需要将挂载写入文件中。
现在介绍分区自动挂载和fstab文件修复!
在这里插入图片描述
== 说明 :== 如果在输入时打错了,删除按删除键是无法删除的,需要按ctrl+Backspace进行删除!

1.2.6 分区自动挂载和fstab文件修复

要实现自动挂载(每次开机就自动挂载,无需每次手动挂载)就需要写入/etc/fstab文件中。
1、/etc/fstab文件
第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
#UUID 可以通过命令 dumpe2fs -h /dev/sdb1 然后查看filesystem UUID
第二字段: 挂载点
第三字段:文件系统名称
第四字段:挂载参数,挂载权限可以参考前面mount特殊选项
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检查,0代表不检测,其他数字代表检查的优先级,那么当然1的优先级大于2.
分区自动挂载命令:
1、 vim /etc/fstab
2、写入需要自动挂载的硬盘(按上诉格式):
/dev/sdb1 /disk1 ext4 defaults 1 2
3、 mount -a #依据配置文件/etc/fstab内容,自动挂载(防止因为挂载问题、写入/etc/fstab错误导致系统崩溃无法开机!)
文件修复: 如果再写入配置文件/etc/fstab错误导致系统崩溃无法开机。(前提:开机时能够进入输入命令界面,提示输入root密码)
第一步:mount -o remount ,rw / #重新挂载根分区(因为要修改配置文件,但是此时它是只读文件需要写改为rw权限)

1.2.7 分配swap分区

1、查看内存和swap分区使用情况命令:free
语法:free -m #按M为单位显示
cached(缓存):是指把读取出来的数据保存在内存中。当再次读取时,不用读取硬盘而直接从内存当中读取,加速了数据的读取过程
buffer(缓冲):是指在写入数据时,先把分散的写入操作保存到内存当中,当达到一定程度再集中写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程
2、新建swap分区
第一步 fdisk -l #查看分区情况
第二步 fdisk /dev/sdb #分区,不要忘记把分区ID改为82
第三步 Command: n #新建分区
第四步 : l 回车#选择逻辑分区
第五步: +1G #给swap分区分1个G
第六步:t #调整分区号
第七步:6,82 #给新建的第六个分区,改它的ID号为82
第八步:w #保存
第九步: partprobe #需要重新读取分区表信息
第十步:mkswap /dev/sdb6 #格式化
3、加入swap分区(手动)
命令: swapon /dev/sdb6 #加入swap分区
(可以free -m 查看swap是否加入)
swapoff /dev/sdb6 #取消swap分区
3*、swap分区开机自动挂载
命令: vim /etc/fstab
/dev/sdb6 swap swap defaults 0 0

二、常用命令

2.1目录处理命令

命令格式:命令 [-选项] [参数]

例: ls -la /etc

说明:(1).个别命令使用不遵循此格式;(2)有多个选项时,可以写在一起;(3).简化选项和完整选项,-a等于- -all

2.1-1 显示目录命令 ls

命令英文原意:list;执行权限:所有用户;功能:显示文件目录;
语法:ls 选项[-a] [文件或目录]
	-a 显示所有文件,包括隐藏文件;(all)
	-l 显示详细信息;(long)
	-d 查看目录属性;(directory)
	-h 人性化(字节数自动转化为多少K/M)(human)
	-i 得到iNODE节点(i节点类似于文件身份证,用于区别。用内核进行调用和管理)

在这里插入图片描述
可以看到:输入-a后,可以看到根目录下的隐藏文件;看第8行,在输入-l时能看到详细信息,-rw------- 1 root root 1084 12-31 09:09 anaconda-ks.cfg,第一个表示文件权限(之后会详细解释),1表示硬链接次数,第一个root是所有者,第二个root表示所属组,1084是字节数,后面是建立日期和文件名,在输入-i后,可以看到491529就是anaconda-ks.cfg的i节点号(就跟它的身份证一样)
-rw-r–r--:第一个’-'表示文件类型(-二进制文件,d目录,l软链接文件)

用户和文件所属关系有三种情况:User(只能有一组,可转变)、group、other
这里,u:rw-,可以读写不能执行;g:r–,只可以读;o:r–只可以读。

2.1-2 创建新目录 mkdir

命令英文原意:make dirctories;执行权限:所有用户;功能:创建一个新目录;
语法:$mkdir /tmp/Charles m k d i r − p / t m p / C h a r l e s / k o b e 说 明 : mkdir -p /tmp/Charles/kobe 说明: mkdirp/tmp/Charles/kobe表示普通用户,一般来说root用户可以执行所有命令,普通用户权限比root用户低,我们这里用$表示所有用户都可以用该条命令;第一句话我们在tmp临时文件(系统自带)中建立了Charles目录;第二局是加入-p(引申procedure)可以递归创建同时创建Charles和kobe两个目录,并存在从属关系。

2.1-3 切换目录 cd

命令英文原意:change dirctory;执行权限:所有用户;功能:切换目录;
语法:cd [目录] 范例:$ cd /tmp/Charles 切换到指定目录; $cd … 切换到上一级(目前所在目录可以用".“表示,所以上一级为”…“)

2.1-4 显示当前目录 pwd

命令英文原意:print working directory;执行权限:所有用户;功能:显示当前目录;
语法:pwd

2.1-5 删除一个空目录 rmdir

命令英文原意:remove empty directory;执行权限:所有用户;功能:删除空目录;
语法:rmdir [目录名] 范例:$ rmdir /tmp/Charles

2.1-6 复制文件或目录 cp

命令英文原意:copy;执行权限:所有用户;功能:复制文件或目录;
语法:cp -rp [原文件或目录] [目标目录] -r 复制目录;-p 保留源文件或目录的属性,包括所有者、所属组、权限与时间(preserve)
提示:
只复制文件时,不需要加选项(-r/-p均不用)
复制过程中还可以更改目录/文件名:cp -r /tmp/Charles /root/james

2.1-7 剪切、改名目录 mv

命令英文原意:move;执行权限:所有用户;功能:剪切、改名文件或目录;
语法:mv [原文件或目录] [目标目录]
如果在Charles目录下,可直接输入:mv kebe james 进行改名操作;

2.1-8 删除文件或目录 rm

命令英文原意:remove;执行权限:所有用户;功能:删除文件或目录;
语法:rm -rf [文件或目录] -r 删除目录需要选择;-f 强制执行;ctrl+c退出本次命令。

2.2 文件处理命令

2.2-1 创建空文件 touch

命令英文原意:touch;执行权限:所有用户;功能:创建空文件;
语法:touch Charles.list(list没有含义)
如果创建带空格文件:touch “program files”(以后无论操作它干什么都需要加双引号)

2.2-2 显示短行文件内容 cat

命令英文原意:cat;执行权限:所有用户;功能:显示短行文件内容;
语法:cat -n /etc/issue -n 显示行号,cat适合短行浏览

2.2-3 反向显示文件内容 tac

命令英文原意:tac;执行权限:所有用户;功能:反向显示文件内容(命令跟cat拼写也相反);
语法:tac /etc/issue

2.2-4 分页显示文件内容 more

命令英文原意:more;执行权限:所有用户;
语法:more /etc/issue
more适合多行浏览,空格/F页翻,回车行翻,B往回翻,Q退出

2.2-5 可检索的分页显示文件内容 less

范例:less /etc/services
空格/F页翻,回车行翻,⬆往回翻
可输入需要的查找项,按N(next)继续查找。(例如:/service)

2.2-6 显示前n行文件内容 head

范例:head -n 20 /etc/services
显示文件前面的几行,默认10行。 -n 指定行数

2.2-7 显示后几行文件内容 tail

范例:tail -n 20 /etc/services
显示文件后面的几行,默认10行。 -n 指定行数 -f 动态显示文件末尾内容(一般用于监控日志) tail -f /var/log/messages

2.3 链接命令

2.3-1 软链接 ln -s

可形象的比喻为widows的快捷方式。
范例:ln -s /etc/issue /tmp/issue.soft
特点:
1.软链接的用户和文件所属关系User、group、other的权限都是rwx;
2.因为只是符号链接,所以文件很小;
3.箭头指向源文件
在这里插入图片描述

2.3-2 硬链接 ln

可比喻为widows的复制文件操作。
范例: ln /etc/issue /tmp/issue.hard
特征:
1.硬链接等价于“拷贝cp -p”(保存文件属性、创建时间)+ 同步更新;
2.硬链接与源文件享有相同的iNode(每一个文件都有一个唯一的i节点,此处为特殊情况。因为硬链接文件和源文件有一样的i节点,也可以用此方法区别是否是硬链接。同样,这也能解释通为何硬链接具有同步更新作用:因为内核的操作是通过iNODE)一个文件一定有一个i节点,但是一个i节点不一定只对应一个文件。
3.不能跨分区操作;(软连接可以)
4.不能对目录使用;(软连接可以)

2.4 权限管理命令

2.4-1改变文件或目录权限 chmod

在这里插入图片描述

chmod g+w,o-r Japanlovestory.list 一次修改多个权限;
权限的数字表示:r—4,w—2,x—1 rwxrw-r–:764
命令:useradd linzhiling 添加用户 passwd linzhiling

2.4-2 改变文件或目录所有者 chown

例如: chown nba /tmp/james
改变文件james的所有者为nba
命令: chown root:testgrp /tmp/james
#可以直接改文件的所有者和所属组

2.4-3 改变文件或目录所属组 chgrp

例如: chgrp nba /tmp/james
改变文件james的所属组为nba

2.4-4 显示、设置文件缺省权限 umask

1.范例: umask -S
显示文件的缺省权限
2.范例: umask 077
为了得到700,输入umask 077 (从777异或计算出)
这样新建的目录权限是:rwx — ---
新建的文件权限是:rw- — ---
说明: 这是为了安全保证(防止木马攻击),在所有新建的文件的权限都不赋予执行权限。
==注意:==改变文件权限所有者和root都可,但是要改变所有者只能是root。

2.5 文件搜索命令

2.5-1 文件搜索 find

语法:find 【搜索范围】 【匹配条件】

1、find /etc *init * 模糊搜索,只要含有连续的init文件就会被搜索到;
2、find /etc init??? 其中问号匹配某个字符,查找到initial文件
3、find /etc -name init 在/etc下查找init文件;
4、find / -size +204800 在根目录下查大于100m文件
(1数据库=512字节=0.5kb)
5、find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin:访问时间access
-mmin:文件内容modify
6、find /etc -size +204800 -a -size -409600
在etc目录下找大于100小于200m文件
-a 两个条件同时满足
-o 两个条件满足一个
7、find /etc -name inittab -exec ls -l {} ;
在etc目录下查找inittab文件并显示详细内容
-exec/ok 命令 {} \ ;对搜索结果执行操作
8、find /etc -type f
搜索文件类型为二进制文件的文件
f:文件 d:目录 l:软链接文件
-inum 根据i节点查找

2.5-2 文件资料库中查找文件 locate

范例:locate inittab
locate不具有实时更新性,可以手动更新,updatedb,但/tmp中仍找不到;locate -i inittab 不区分大小写;

2.5-3 搜索命令所在目录及详细信息 which

范例:which ls

2.5-4 搜索命令所在目录及帮助文档 whereis

范例:whereis ls

2.5-5 文件中搜寻字符串匹配的行 grep

范例:
grep mysql /root/install.log
-i 不区分大小写;-v 排除指定字符串
搜寻时去掉注释行时:grep -v ^# /etc/inittab

2.6 帮助命令

2.6-1 获取帮助信息 man

范例: man ls 查看ls命令的帮助信息
如果要看配置文件帮助,不要打绝对路径,可以命令:man 5 passwd(1是命令的帮助,5是配置文件的帮助)

2.6-2 获取Shell内置命令帮助信息 help

范例: help umask
查看umask命令的帮助信息

2.7 用户管理命令

2.7-1 添加新用户 useradd

范例:useradd charles

2.7-2 设置用户密码 passwd

范例:passwd charles

2.7-3 查看登录用户信息 who

root tty1 2020-01-03 05:44
root pts/0 2020-01-03 05:45(192.168.40.1)
#登录名 登录终端 :tty本地终端,pts远程终端,登录时间,IP地址

2.7-4 查看登录用户详细信息 w

主要得到:Linux连续运行时间,负载情况,登录过来的用户当前正在执行什么命令,累计占用CPU时间(JCPU)和当前命令占用CPU时(PCPU)

2.8 压缩解压命令

linux和windows都通行的压缩格式是.zip。如果要解压缩windows的rar的压缩文件需要安装一个linux版本的rar压缩软件。

2.8-1 压缩命令 gzip

范例:gzip [文件]
解压后文件格式为.gz

2.8-2 解压缩命令 gunzip

gunzip [.gz文件] 等效于: gzip -d [.gz文件] 完成解压缩
注意 Linux压缩比也很惊人,而且只能压缩文件,不压缩目录,且源文件消失。

2.8-3 压缩和解压缩命令 tar

1.打包目录 tar
语法: tar 【-zcvf】 【压缩后文件名】【目录】
-c 打包;-v 显示详细信息;-f:指定文件名;-z:打包同时压缩(不用-z就可以和gzip联合使用)
范例:
tar -cvf Japan.tar Japan;gzipJapan.tar >> Japan.tar.gz
上面两个命令合起来等于: tar -zcvf Japan.tar.gz Japan
2.解压缩命令 tar
把-c打包的选项换成-x解包。
范例:tar -zxvf Japan.tar.gz

2.8-4 压缩命令和解压命令 zip,unzip

压缩语法:
zip 选项【-r】【压缩后文件名】【文件或目录】
功能:压缩文件或目录。压缩后文件格式:.zip
解压缩范例:unzip test.zip

2.8-5 压缩和解压缩命令 bzip2,bunzip2

语法: bzip2 选项【-k】 【压缩后文件名】【文件】
压缩后文件格式:.bz2
范例:
bzip2 -k Japan.bz2 Japan 压缩Japan文件并保留原文件(与gzip区别)
类似于tar的-zcvf创建 .tar.gz的压缩包,bzip2也可以用此方法建立 .tar.bz2的压缩包: tar -cjvf Japan.tar.bz2 Japan(把z换成了j)
tar -cjvf Japan.tar.bz2 Japan >> Japan.tar.bz2 格式的压缩包
解压缩:
bunzip2 -k Japan.bz2 (-k表示保留压缩包)
bunzip2 -xjvf Japan.tar.bz2

2.9 网络命令

1、write
给用户发消息,以ctrl+D保存结束
需要主机和被接受用户在线(w命令查看在线用户),删除功能(ctrl+删除或者Delete)
2、wall
即write all,发广播信息
3、ping
测试网络连通性。
ping 选项 IP地址 -c 指定发送次数
注意看丢包率(packet loss)越小越好;
eth0 本地真实网卡,1o 回环网卡
4、ifconfig
ifconfig 网卡名称 IP地址
查看和设置网卡信息
范例: ifconfig eth0 192.168.40.2
5、mail
查看发送电子邮件
ctrl+D退出,再次输入mail查看,输入序列号看邮件(例如1、2、3),h键返回邮箱列表,d [序列号] 删除邮件,q退出。
6、last
列出目前与过去登入系统的用户信息
7、lastlog 查看所有用户
8、traceroute
显示数据包到主机的路径
范例: traceroute www.baidu.com
9、netstat
显示网络相关信息
-t :TCP 协议 ;-u:UDP协议 ; -l :监听; -r:路由; -n:显示IP地址和端口号
范例:
netstat -tlun 查看本机监听的端口
nestat -an 查看本机所有的网络链接
nestat -rn 查看本机路由表
传输协议,TCP更稳定(有三次握手,更可靠),UDP更快。
10、setup
配置网络

2.10 挂载命令 mount

mount 【-t 文件系统】 设备文件名 挂载点
范例:mount -t iso9660 /dev/sr0 /mnt/cdrom
首先在虚拟机放入光盘(一定记得设备状态“已打开”)
在这里插入图片描述
再创建挂载点:mkdir /mnt/cdrom 最后也可以输入:mount /dev/sr0 /mnt/cdrom;可以到: cd /mnt/cdrom >> ls 查看
如果需要弹出光盘(卸载) 先输入:cd 回到宿主目录,然后输入:umout /dev/sr0

2.11 关机重启命令

1、shutdown
语法:shoutdown 【选项】时间
-c 取消前一个关机命令; -h 关机; -r重启;
范例:shutdown -h now
2、其他关机命令
halt
poweroff
init 0
3、其他重启命令
reboot
init 6
4、系统运行级别
0:关机; 1:单用户; 2:不完全多用户,不含NFS服务;3:完全多用户;4:未分配;5:图形界面;6:重启
可以输入:cat /etc/inittab 查看
修改系统默认运行级别: id:3:initdefault:
查看系统运行级别:runlevel

三、文本编辑器Vim

Vim是功能强大的全屏幕文本编辑器,是Linux上最常用的文本编辑器。
它的作用是建立、编辑、显示文本文件。

3.1 三种工作模式

在这里插入图片描述
1、进入vim编辑器:
(1)直接输入vim可以创建新的文本文件进行编辑;
(2)输入 vim 【文件名】进入vim编辑器。
2、三种模式的切换:
(1)进入编辑器后是命令模式;
(2)在命令模式输入a i o进入插入模式,输入‘:’进去编辑模式;
(3)在命令模式输入":wq"保存退出;
(4)在插入模式结束后,点击ESC键返回命令模式

3.2常用命令

1.插入命令a / i / o

a:光标所在字符后插入;A:行尾插入;
i:光标所在字符前插入;I:行首插入;
o:光标下插入新行;O:光标上插入新行

2.定位命令:gg,G,:n,:set nu,$,0

: set nu 表示设置行号; : set nonu 取消行号;
gg 回到行首,G回到最后一行
: n 表示到指定的某一行
0 表示回到行首,$ 表示回到行尾

3.删除命令 x,dd,D,:n1,n2d

x 表示删除光标所在处字符; dd 表示删除所在行
D 删除光标所在处到行尾的内容
:n1,n2d 表示删除指定范围的行

4.复制剪切命令 yy,dd,p,P

yy 复制当前行;
p 表示粘贴到当前行下;P 表示粘贴到当前行上

5.替换和取消命令 r,R,u

r 表示取代光标所在处字符;R 表示从光标处开始替换,按ESC结束
u 表示撤回上一步操作

6.搜索和搜索替换命令 /string,n,:%s/old/new/g

/string 表示搜索指定字符串。
== 注意:== 如果要忽略大小写,再输入/string命令后,再输入命令 : set ic
n 搜索指定字符串的下一个位置。
: %s/old/new/g 表示全文替换指定字符串
:n1,n2s/old/new/g 表示在一定范围内搜索指定字符串

7.保存退出命令 :wq , ZZ , :q! , :w , :wq!

: wq 和 ZZ 表示保存退出
:w new_filename 另存为
: q! 表示不保存退出
: wq! 表示强行保存退出(只有文件所有者和root可以使用)

3.3 使用技巧

(1)有以下几个可以尝试的使用技巧:
:r /tmp/services 把这个文件内容导入到光标位置;(用于文件导入)
:r !date 把编程时间导入到光标位置;
: !which date 找date命令位置; 导入命令执行结果 : r! 命令
(2)定义快捷键:
范例: :map ^p I# 表示在行首加入注释符#
语法::map ^p(ctrl+v+p) 使用是就可以ctrl+p即可
连续行注释表示为 : n1,n2s/^/#/g
取消连续行注释为 : n1,n2s/^#//g 注意一定要加尖角符号,否则行内其他位置#也会被删除。
其他连续行注释方法为 : n1,n2s/^///g
(3)替换
: ab mymail Charles_Zengyc@163.com
这样在输入mymail时候就自动变为邮箱地址。
== 说明:==常用的编辑命令快捷键永久保持可以放在 /home/username/.vimrc 或者/root/.vimrc中,否则重启后快捷键将消失。
==注意:==在保存到 .vimrc文件时,一定要注意输入的命令格式,
例如输入以下内容:(在行首添加注释符#和删除行首字符)
:map ^P I#
:map ^B 0x
一定不要忘记^P 和 ^B后面有一个空格,否则保存文件后再打开需要编辑的文件后会报“找不到映射”的提示。

四、用户和用户组管理

4.1 用户配置文件

用户管理:越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。
在linux中主要通过用户配置文件来查看和修改用户信息。

4.1.1保存用户信息 /etc/passwd

第1字段:用户名称;第2字段:密码标志;
第3字段:UID(用户ID)
0:超级用户;1-499:系统用户(伪用户),500-65535:普通用户
第4字段:GID(用户初始组ID)
说明: 初始组:用户一登录就拥有这个用户组的相关权限,每个用户的初始组只能有一个!一般是和这个用户的用户名相同的组名作为用户的初始组。
附加组:用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个!
第5字段:用户说明
第6字段:家目录(普通用户:/home/用户名/ 超级用户:/root/)
第7字段:登录以后的Shell(linux的命令解释器,除了标准的Shell是/bin/bash外,还可以写如/sbin/nologin)
范例:
Vim /etc/passwd
zeng: x:500:500::/home/zeng:/bin/bash

4.1.2 用户影子文件 /etc/shadow

第1字段:用户名;第2字段:加密密码;(如果密码位是“!!”或“*”代表没有密码,不能登录)
第3字段:密码最后一次修改日期(1970年1月1日作为标准时间,每过一天时间戳加1);第4字段:两次密码的修改间隔时间(和第3字段相比)
第5字段:密码有效期(和第3字段相比);第6字段:密码修改到期前的警告天数(和第5字段相比)
第7字段:密码过期后的宽限天数(和第5字段相比,0:代表过期后立即失效;-1:代表永不失效)
第8字段:账号失效时间(用时间戳表示);第9字段:保留
说明: 时间戳换算为日期:
date -d “1970-01-01 16066 days”
把日期换算为时间戳:
echo $ (($(date–date=“2020/03/03” + %s)/86400+1))

4.1.3 组信息文件/etc/group 和组密码文件/etc/gshadow

1、组信息文件/etc/group
第1字段:组名;第2字段:组密码标志
第3字段:GID;第4字段:组中附加用户
2、组密码文件/etc/gshadow
第1字段:组名;第2字段:组密码;
第3字段:组管理员用户名;第4字段:组中附加用户

4.2用户管理相关文件

4.2.1 用户的家目录

1、普通用户: /home/用户名/ ,所有者和所属组都是此用户,权限是700;
2、超级用户: /root/ ,所有者和所属组都是root用户,权限是550.
== 注意:==如果把普通用户更改为超级用户(修改UID为0,若更改GID没有用),其家目录不会改变,只是权限变为超级用户的权限。

4.2.2 用户的邮箱 /var/spool/mail/用户名/

/var/spool/mail/用户名/
(可以linux用户之间发,他们是用的linux内存来发送。但是因为没有邮箱服务器,不能给例如qq、163、126等邮箱发邮件)

4.2.3 用户模板 /etc/skel/

/etc/skel/
可以把你需要的提示命令信息放在此目录下,每次生成一个用户,系统都会自动生成这些文件信息给用户。

4.3用户管理命令

4.3.1 用户添加命令useradd

语法: useradd【选项】(一般不加) 用户名
选项:-u UID:手工指定用户UID号
-d 家目录:手工指定家目录;-c 用户说明,需用引号;
-g 组名:手工指定初始组;-G 组名:手工指定附加组,逗号隔开;
-s shell:手工指定用户的登录shell,默认/bin/bash
范例:添加用户并查看相关信息
useradd test
grep test /etc/passwd
grep test /etc/shadow
grep test /etc/group
grep test /etc/gshadow

4.3.2 修改用户密码 passwd

语法: passwd 【选项】 用户名
-S 查询用户密码的密码状态(仅root用户可用)
-l 暂时锁定用户(仅root用户可用)
-u 解锁用户(仅root用户可用)
-stdin 可以通过管道符( | )输出的数据作为用户的密码
范例:
passwd -S lamp
输出: lamp PS 2013-01-06 0 99999 7 -1
表示用户名;密码设定时间(2013-01-06);密码修改时间间隔(0);密码有效期(99999);警告时间(7);密码不失效(-1)
说明:
用户锁住后就不能登录,但是原本在登录用root锁后不会下线。(其实是在其shadow文件加密密码前加了”!!”)
本来密码标识(!!)表示用户没有密码,但是在有加密文前加就是锁住该用户。
直接输入:passwd 表示修改本用户密码;
echo “123” | passwd –stdin lamp 管道符作用:前面的结果作为后面命令的输入,比如输入的123作为lamp的密码。一般用与shell编程。

4.3.3 修改用户信息usermod 和修改密码状态 chage

usermod针对已经存在的用户:
语法:usermod【选项】 用户名
选项: -u UID:修改用户UID号;-c 修改用户说明,需用引号;
-G 组名:修改用户附加组,逗号隔开;-L 临时锁定用户;-U 解锁用户
范例:
usermod -c “test user” lamp
usermod -G root lamp
修改密码状态 chage:
语法: chage 【选项】 用户名
选项:-l 表示列出用户的详细密码状态;-d 日期: 修改密码最后一次更改日期(shadow3字段) ;-m 天数: 两次密码的修改间隔(4字段)
-M 天数: 密码有效期(5字段)-W 天数 :密码过期前警告天数(6字段) -I 天数 :密码过后宽限天数(7字段) ;-E 日期 :账号失效时间(8字段)
范例:
chage -d 0 lamp 说明:这个命令其实是把密码修改日期归0了,这样用户一登陆就要修改密码

4.3.4 删除用户userdel 用户切换命令su

1、删除用户 userdel
语法: userdel [-r] 用户名
选项:-r 删除用户的同时删除用户家目录
2、用户切换命令su
语法: su - (-c) 用户名
选项: - 表示连带用户的环境变量一起切换;
-c 命令:仅执行一次命令,而不切换用户
注意: 这两个命令一定是二者选其一,不能不加。否则环境变量没有转换为需要切换的用户。
注意普通用户切换为超级用户需要密码,root切换为普通用户直接切换,不需要密码。
查看当前用户环境变量的命令:env
退回之前的用户:exit
范例:
su - root -c “useradd user3” 表示不切换成root,而是执行添加用户命令。

4.3.5 查看用户ID

语法: id 用户名
范例: id charles
uid=505(charles) gid=506(charles) groups=506(charles)
#就可以得到此用户的uid、初始组id和还在哪些组。

4.4 用户组管理命令

4.4.1 添加用户组 groupadd

语法: groupadd 【选项】 组名
选项: -g GID :指定组ID

4.4.2 修改用户组 groupmod

语法:groupmod 【选项】 组名
选项: -g GID :修改组ID
-n 新组名 : 修改组名
范例: groupmod -n testgrp group1
把组名group1修改为testgrp

4.4.3 删除用户组groupdel

groupdel 组名

4.4.4 把用户添加入组或从组中删除 gpasswd

语法:gpasswd 【选项】 组名
选项:
-a 用户名:把用户加入组
-d 用户名:把用户从组中删除

五、权限管理

5.1 ACL权限

为了满足所有者、所属组和其他人三个身份不足的情况,ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。
是否支持ACL权限:需要查看此文件/目录的分区是否支持ACL权限

5.1.1 查看分区ACL权限是否开启

1、命令: dumpe2fs -h /dev/sda3
说明:dumpe2fs命令是查询指定分区详细文件系统信息的命令。
选项:-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。
查看分区的命令:df -h
说明: 一般分区默认都已经开启ACL权限
2、临时开启分区ACL权限
命令: mount -o remount,acl /
重新挂载根分区,并挂载加入acl权限。
3、永久性开启分区ACL权限
(1)命令: vi /etc/fstab
UUID = c2ca6f57-b15c-43ea-bca0-f239083d8d2 / ext4 defaults,acl
(2)重新挂载文件系统或重启系统,使修改生效
命令: mount -o remount /

5.1.2 查看和设定ACL权限

1、查看ACL权限
语法: getfacl 文件名
2、设定ACL权限
语法:setfacl 【选项】 文件名
选项:-m 设定ACL权限;-x 删除指定ACL权限;-b 删除所有ACL权限;-d 设定默认ACL权限;-k 删除默认ACL权限;-R 递归设定ACL权限
范例:
给用户组设定ACL权限

 groupadd testgrp1
setfacl -m g:testgrp1:rwx project/

#为组testgrp1分配acl权限,使用“g:组名:权限”格式

5.1.3 最大有效权限mask和删除ACL权限

mask是用来指定最大有效权限的。如果给用户赋予了ACL权限,是需要和mask 的权限”相与“才能得到用户真正权限。
删除ACL权限: setfacl -x u:用户名 文件名(目录) #删除指定用户的ACL权限
setfacl -x g:组名 文件名 #删除指定用户组的ACL权限

5.1.4 默认ACL和递归ACL权限

1、递归是父目录在设定ACL权限时,所有子文件和子目录都有拥有相同的ACL权限。
语法:setfacl -m u:用户名:权限 -R 文件名(目录)
2、默认ACL权限作用是如果父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限。
语法:setfacl -m d:u:用户名:权限 文件名
说明:
对目录下现有的文件需要用递归来执行ACL权限;
对目录下新建的文件需要用默认ACL权限。(因为此时再用递归的话,每新来一个文件就需要声明一次。)

5.2 文件特殊权限

5.2.1SetUID

SUID只针对文件,不针对目录
前提:(1)SUID只有可执行的二进制程序还可以设定SUID权限;
(2)命令执行者(一般是普通用户)要对该程序拥有x(执行)权限
(3)命令执行者在执行程序时获得该程序文件属主身份(在执行程序的过程中灵魂附体为文件的属主!相当于在执行中变身超人
(4)SUID权限只在该程序执行过程中有效,也就是身份改变只在程序执行过程中有效。
在这里插入图片描述
例如:passwd命令拥有SUID权限,所以普通用户可以修改自己的密码。
但是cat命令没有SUID权限,所以普通用户不能查看/etc/shadow内容。

ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 2007-01-07 /usr/bin/passwd

特别说明:
/etc/shadow文件的权限是000,但是root超级用户是不受权限限制的,可以查看修改执行。

ll /etc/shadow
-r-------- 1 root root 1160 03-02 03:53 /etc/shadow
1、设定SUID的方法chmod

方法一:chomod 4755 文件名
其中4755也可以是4777等
方法二:chmod u+s 文件名
如果用命令查看文件的权限时,出现的是’S’而不是’s’,说明文件不能正常执行,可能是不满足x(执行)权限。

2、取消SUID的方法chmod

chmod 755 文件名
chmod u-s 文件名

5.2.2 SetGID

设定SGID
chmod 2755 文件名
或者 chmod g+s 文件名

1、SGID针对文件的作用

作用:
1、可执行的二进制程序才可以设置SGID;
2、命令执行者要对该程序有x(执行)权限;
3、命令执行者在执行程序时,组身份升级为该程序文件的属组;
4、SGID权限同样只在该程序执行过程中有效!也就是说组身份改变只在程序执行过程有效!

2、SGID针对目录的作用

(1)普通用户必须对此目录拥有r和x权限,才能进入此目录;
(2)普通用户在此目录中的有效组会变成此目录的属组;
(3)若普通用户对此目录拥有w权限时,新建的文件的默认属组就是这个目录的属组。
范例:

mkdir /tmp/test
chmod 2777 test/
ll -d test/   # drwxrwsrwx 2 root root 4096 03-04 23:28 test/
su - charles
touch abc /tmp
ll # 得到:-rw-rw-r-- 1 charles charles 0 03-04 23:31 abc
cd /tmp/test
touch bcd
ll # 得到:-rw-rw-r-- 1 charles root 0 03-04 23:33 bcd
#此时新建文件的默认属组就是这个test目录的属组root

5.2.3 Sticky BIT

SBIT粘着位作用:
(1)粘着位目前只对目录有效
(2)普通用户对该目录拥有w和x权限,即普通用户可以在此目录有写入权限;
(3)如果没有粘着位,因为普通用户有w权限,所以可以删除此目录下的所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有了w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
设置:
chmod 1755 目录名
chmod o+t 目录名
取消:
chmod 777 目录名
chmod o-t 目录名

5.3 文件系统属性chattr权限

(change file attributes on a Linux second extended file system)

1、文件系统属性赋予charttr

chattr [±=] 【选项】 文件或目录名
+:增加权限; -:删除权限; =:等于某权限
选项:
i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置了i属性,那么只能修改目录下的文件数据,不允许建立和删除文件。赋予i属性,相当于把文件锁起来了,只能看,针对root用户也生效;
a:如果对文件设置了a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果是对目录设置a属性,那么只运行建立和修改目录中的文件,但是不允许删除。
== 特别的:== 此权限对root也生效。
范例:

echo 111 >> zeng.mesg
cat zeng.mesg  #得到111
chattr +i zeng.mesg
 echo 111 >> zeng.mesg   #-bash: zeng.mesg: 权限不够
 lsattr -a zeng.mesg
 ----i-------- zeng.mesg  #此处i属性表示文件被锁

2、查看文件系统属性lsattr

语法: lsattr 【选项】 文件名
选项:-a 显示所有文件和目录;-d 若目标是目录,仅列出目录本身的属性,而不是子文件的。

5.4 系统命令sudo权限

root把本来只能超级用户执行的命令赋予普通用户执行。
sudo操作对象是系统命令

1、sudo的使用

语法:

# visudo		#实际修改的是/etc/sudoers文件
root  ALL=(ALL)  ALL
#用户名 被管理主机的地址  = (可使用的身份)  授权命令(绝对路径)
=

=特别说明:== 运行哪一个用户执行命令在所允许的网段。(此ip是被访问ip地址,还不是来源ip)
被管理主机的地址如果没有其他的服务器,此处只能是ALL或本机IP
如果是给组赋予sudo权限:

#visudo
#%wheel  ALL=(ALL)    ALL
#%组名 被管理主机的地址 = (可使用的身份)  授权命令(绝对路径)

例:

visudo
sc ALL = /sbin/shutdown -r now
#普通用户sc执行sudo赋予的命令,立即关机
su -sc
sudo -l  #查看可用的sudo命令
sudo /sbin/shutdown -r now

特别提醒:
禁止在“visudo”中输入:zeng ALL=/usr/bin/vim
因为执行该命令时,普通用户身份zeng就可以执行root身份的vim所有权限,十分危险!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值