第一章 Linux的目录结构
1.1基本介绍
linux的文件系统采用级层式的树状目录结构, 最上层是根目录“/” linux中。一切皆是文件
1.2 Linux目录
·/lib :系统开机所需要的的基本的动态链接共享库,类似于Windows中的DLL文件,几乎所有的应用程序文件都需要用到这些共享库
./lost+found : 一般是空的,当系统非法关机后,一些碎片文件就存放在这个文件夹中
·/etc(重点) :所有系统管理员所需要的配置文件和子目录 my.conf
·/usr :用户的跟多应用程序和文件都放在这个目录下,类似Windows的program.files目录
·/bin[usr/bin,/usr/local/bin](重点) :[usr:Unix System Resource,Unix系统资源的缩写] ,bin:Binary的缩写,存放着经常使用的命令
·/sbin[usr/sbin,/usr/local/sbin] : 存放的是系统管理员使用的系统管理程序
·/home(重点) : 存放普通用户的主目录,在linux的每个用户都有一个自己的目录
·/root(重点): 该目录为系统管理员,超级权限的用户目录
·/boot : 存放的启动linux时使用的核心文件,包括链接文件和镜像文件
·/proc : 虚拟目录,系统内存的映射,访问这个目录来获取系统信息
·/srv : service的缩写,该目录是存放一些服务启动之后西药提取的数据
·/sys :Linux2.6内核的一个很大变化,该目录安装了2.6内核这个呢新出现的文件系统
·/tmp :存放临时文件
·/dev :类似于windows的设备管理器,把所有的硬件用文件的形式存储
·/media(重点) :Linux系统会自动设别一些设备,如:U盘,光驱等等,识别后,linux会把识别的设备挂载到这个目录下
·/mnt(重点) : 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看内容
·/usr/local(重点) :这是给主机额外安装软件的目录,一般是通过编译源码方式安装的程序
·/var(重点) :该目录存放着在不断扩充的东西,习惯将经常修改的目录放着这里,包括各种日志文件
·/selinux[security-enhanced linux]类似360 :Selinux是一种安全子文件,能控制程序只能访问特定文件
第二章 Linux常用命令(命令格式:命令 [-选项] [参数])
2.1 文件处理命令
命令名称:ls (list)[显示目录文件]
命令所在路径: /bin/ls
执行权限:所有用户
语法:ls 选项[-ald][文件/目录]
-a:显示所有文件(包括隐藏文件)
-l:显示详细信息
-d:查看目录属性
补充:
**-rw-r--r--**
"-":文件类型[ - :文件; d :目录; l : 软连接]
rw- r-- r-- :依次对应:所有者(u) 所属组(g) 其他人(o) | r:读 操作 w :写 操作 x :执行 操作
2.2 目录处理命令
命令名称:mkdir (make directories)[创建新 目录]
命令所在路径:/bin/mkdir
执行权限: 所有用户
语法: mkdir -p[目录名] -p 表示递归创建
eg: $ mkdir -p /tmp/mimiluyo/studylinux
-------------------------------------------------------------
命令名称:cd (change directory) [切换目录]
命令所在路径:shell内置
执行权限:所有用户
-------------------------------------------------------------
命令名称:pwd (print working directory) [显示当前目录]
命令所在路径:/bin/pwd
执行权限:所有用户
-------------------------------------------------------------
命令名称:rmdir (remove empty directories) [删除'空目录']
命令所在路径:/bin/rmdir
执行权限:所有用户
-------------------------------------------------------------
命令名称:cp (copy) [复制文件/目录]
命令所在路径:/bin/cp
执行权限:所有用户
语法:cp -rp[原文件/目录][目标目录]
-r 复制目录
-p 保留文件或目录
eg:$ cp -r /tmp/mimiluyo/studylinux /root (将studylinux复制到root目录下)
$ cp -rp /tmp/mimiluyo/studylinux /root/study (将studylinux复制到study目录下,并保留目录属性)
-------------------------------------------------------------
命令名称:rm (remove) [删除文件]
命令所在路径:/bin/rm
执行权限:所有用户
语法:rm -rf [文件/目录]
-r 删除目录 -f 强制执行
2.3 文件处理命令
命令名称:touch [创建空文件]
命令所在路径:/bin/touch
执行权限:所有用户
-------------------------------------------------------------
命令名称:cat
命令所在路径:/bin/cat
执行权限:所有用户
语法:cat -n /etc/services -n 显示行号
-------------------------------------------------------------
命令名称:more [分页显示文件内容]
命令所在路径:/bin/more
执行权限:所有用户
语法:more [文件名]
(空格) 或 f :翻页
(Enter) :换行
q 或 Q :退出
-------------------------------------------------------------
命令名称:less [分页显示文件内容]
命令所在路径:/usr/bin/less
执行权限:所有用户
按下 '/' 后可以搜索 会反显高亮,按q退出(more)、
-------------------------------------------------------------
命令名称:head [显示文件前面几行]
命令所在路径:/usr/bin/head
执行权限:所有用户
语法:head -n 10 [文件名] n 指定行号 -n 10 :显示前10行
-------------------------------------------------------------
命令名称:tail [显示文件后几行]
命令所在路径:/usr/bin/tail
执行权限:所有用户
语法:tail [文件名]
-n :指定行数
-f:动态显示文件末尾内容
2.4 链接命令
命令名称:ln (link) [生成链接文件]
命令所在路径:/bin/ln
执行权限:所有用户
语法:ln -s [原文件][目标文件]
-s:创建软链接
eg:
$ ln -s /etc/issue /tmp/issue.soft :创建文件/etc/issue的软链接/tmp/issue.soft
$ ln /etc/issue /tmp/issue.hard :创建文件/etc/issue的硬链接/tmp/issue.hard
软链接特征:
1.'l'开头,类似于Windows的快捷方式
2.软链接文件权限都是 rwx rwx rwx
3./tmp/issue.soft -> /etc/issue 箭头指向原文件
硬链接特征:
1.拷贝cp -p + 同步更新 echo "this is a test" >>/etc/moth
2.可通过i节点识别
3.不能跨分区
4.不能针对目录使用
2.5 权限管理命令
命令名称:chmod (change the permissions mode of a file) [改变文件或目录权限]
命令所在路径:/bin/chmod
执行权限:所有用户
语法:chmod [{ugoa}{+-=}{rwx}][文件/目录]
[mode = 421] [文件或目录]
-R 递归修改
权限数字表示: r--4 w--2 x--1 (rwx rw- r-- 7 6 4)
eg: $chmod g+w testfile 赋予文件testfile所属组 写 权限
$chmod -R 777 testdir 修改目录testfile及其目录下文件为所有用户都具有的全部权限
注意:
1.rwx作用于文件时:**删除一个文件的前提是对该文件所在的目录(文件夹)具有写的权限,才可以执行删除**
2.rwx作用于目录时:w:可以修改,目录内创建,删除,重命名目录;x:可以进入该目录
2.6 其他权限命令
命令名称:chown (change file ownership) [改变文件或目录的所有者]
命令所在路径:/bin/chown
执行权限:所有用户
-------------------------------------------------------------
命令名称:chgrp (change file group ownership) [改变文件或目录的所属组]
命令所在路径:/bin/chgrp
执行权限:所有用户
-------------------------------------------------------------
命令名称:umask (the user file-creation mask) [显示,设置文件的缺省权限]
命令所在路径:shell内置命令
执行权限:所有用户
语法:umask [-S] -S :以rwx形式显示新建文件缺省权限
2.7文件搜索命令
命令名称:find [文件搜索]
命令所在路径:/bin/find
执行权限:所有用户
语法:find [搜索范围][匹配条件] **-iname:不区分大小写**
eg:1.$find /etc -name init 在目录/etc中查找init文件
2.$find /etc -name *init* '*' 表示通配符 '?'表示匹配单个字符
3.$ find /etc -name init??? 在目录/etc中查找文件名init开头并有3个字符的
4.$ find / -size +204800 在根目录下查找大于100MB的文件 ( +n 大于 -n 小于 n 等于)
根据所属组查找
5.$ find /etc -cmin -5 在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify
6.find /etc -size +163840 -a -size -204800 在/etc下查找大于80MB小于100MB的文件
** -a 两个条件同时满足 ** ** -o 两个条件满足任意一个即可 **
7.find /etc -name inittab -exec ls -l {} ; (';'不可少) -exec/-ok 命令 {} ; 对搜索结果执行操作 -exec:直接执行,ok会询问操作
8.-type 根据文件类型查找 -inum 根据节点查找
2.8 其他搜索命令
命令名称:locate [在文件资料库中查找文件]
命令所在路径:/usr/bin/locate
执行权限:所有用户
**新建文件locate找不到,。使用“updatedb”,更新文件资料库查找**
**tmp目录下文件不再文件资料库内,不可被查找**
-------------------------------------------------------------
命令名称:which [搜索命令所在目录及别名信息]
命令所在路径:/usr/bin/which
执行权限:所有用户
eg: $which ls
-------------------------------------------------------------
命令名称:whereis [搜索命令所在目录及帮助文档路径]
命令所在路径:/usr/bin/whereis
执行权限:所有用户
eg:$where ls
-------------------------------------------------------------
命令名称:**grep**(常用) [在文件夹中搜寻字符串匹配的行并输出]
命令所在路径:/bin/grep
执行权限:所有用户
语法:# grep -v ^# /etc/inittab 去除以'#'开头的所有行信息
-i 不区分大小写 -v 排除指定字符串
2.9 帮助命令
命令名称:man (manual:帮助文档) [获取帮助信息]
命令所在路径:/usr/bin/man
执行权限:所有用户
语法: man [命令或配置文件]
(空格)或 f :翻页
Enter :换行
q 或 Q :退出
注意: ** '1'是命令的帮助;'5' 是配置文件的帮助**
eg:# man 5 passwd -> 查看配置文件的帮助
-------------------------------------------------------------
命令名称:whatis [获得命令的简单介绍信息]
类似的: **apropos**
语法:apropos [配置文件]
whatis :类似于精确查找
apropos :模糊查找关键字 [功能等于 man -k] (tab可快速补全)
-------------------------------------------------------------
命令名称:help [获取Shell内置命令的帮助信息]
命令所在路径:Shell内置命令
执行权限:所有用户
-------------------------------------------------------------
命令名称:passwd [设置用户]
命令所在路径:/usr/bin/passwd
执行权限:所有用户
普通用户只能更改自己的密码,root可以更改所有人的
-------------------------------------------------------------
命令名称:who [查看登录用户信息]
命令所在路径:/usr/bin/who
执行权限:所有用户
参数含义: 用户名 登录终端[tty本地终端 / pts 远程终端] 登录时间 IP地址
-------------------------------------------------------------
命令名称:w [查看登录用户的详细信息]
命令所在路径:/usr/bin/w
执行权限:所有用户
2.10 压缩解压命令
命令名称: gzip (GNU zip) [压缩文件]
命令所在路径:/bin/gzip
执行权限:所有用户
-------------------------------------------------------------
命令名称:gunzip = gzip -d (GUN unzip) [解压 .zip的压缩文件]
命令所在路径:/bin/gunzip
执行权限:所有用户
**只能压缩文件而不能压缩目录**
-------------------------------------------------------------
命令名称:tar [打包目录,压缩后的格式 .tar.gz]
命令所在路径:/bin/tar
执行权限:所有用户
语法:tar 选项[-zcf] [压缩后文件名][目录]
-z 打包同时压缩 -c 打包
-v 显示详细信息 -f 指定文件名
tar 解压缩语法: # tar -zxvf mimiluyo.tar.gz
-z 解压缩 -x 解包
-v 显示详细信息 -f 指定解压文件
-------------------------------------------------------------
命令名称:zip [压缩文件/目录][会保留原文件]
命令所在路径:/usr/bin/zip
执行权限:所有用户
语法:zip 选项[-r][压缩后文件名][文件/目录]
-r :压缩目录
eg:
$ zip studylinux.zip linux 压缩文件
$ zip -r study.zip mimiluyo 压缩目录
-------------------------------------------------------------
命令名称:unzip [解压.zip文件]
命令所在路径:/usr/bin/unzip
执行权限:所有用户
-------------------------------------------------------------
命令名称:bzip2 [压缩文件,格式:.bz2]
命令所在路径:/usr/bin/bzip2
执行权限:所有用户
语法:bzip2 选项[-k][文件] -k 产生压缩文件后保留原文件
-------------------------------------------------------------
命令名称:bunzip2 [解压缩]
命令所在路径:/usr/bin/bunzip2
执行权限:所有用户
语法:bunzip2 选项 [-k] [压缩文件] -k 解压缩后保留原文件
eg: $ bunzip2 -k mimiluyo.bz2
$ tar -xjf studylinux.bz2
2.11 网络命令
命令名称:write [给用户发信息,以Ctrl+D保存结束]
命令所在路径:/usr/bin/write
执行权限:所有用户
-------------------------------------------------------------
命令名称:wall (write all) [发广播消息]
命令所在路径:/usr/bin/wall
执行权限:所有用户
-------------------------------------------------------------
命令名称:ping [测试网络连通性]
命令所在路径:/bin/ping
执行权限:所有用户
语法: ping 选项 IP地址 -c 指定发送次数
-------------------------------------------------------------
命令名称:ifconfig (interface configure) [查看和设置网卡信息]
命令所在路径:/sbin/ifconfig
执行权限:root (注意哟!!!)
-------------------------------------------------------------
命令名称:last [列出目前和过去登入系统的所有用户信息]
命令所在路径:/usr/bin/last
执行权限:所有用户
-------------------------------------------------------------
命令名称:lastlog [检查某特定用户上次登录的时间]
命令所在路径:/usr/bin/lastlog
执行权限:所有用户
-------------------------------------------------------------
命令名称:traceroute [显示数据包到主机间的路径]
命令所在路径:/bin/traceroute
执行权限:所有用户
-------------------------------------------------------------
命令名称:netstat [显示网络相关的信息]
命令所在路径:/bin/netstat
执行权限:所有用户
选项: -t : TCP协议
-u : UDP协议
-l : 监听
-r : 路由
-n : 显示IP和端口号
eg:
# netstat -tlun 查看本机监听的端口
# netstat -an 查看本机所有的网络连接
# netstat -rn 查看本机路由表
查看某一端口是否被占用:netstat -tunlp lgrep 端口号
-------------------------------------------------------------
命令名称:setup [配置网络]
命令所在路径:/usr/bin/setup
执行权限:root (注意哟!!!)
-------------------------------------------------------------
命令名称:mount
命令位置:/bin/mount
执行权限:所有用户
语法:mount [-t 文件系统] 设备文件名 挂载点
eg :# mount -t iso9660 /dev/sr0 /mnt/cdrom
2.12 关机重启命令
shutdown命令 :-c 取消前一个关机命令; -h 关机; -r 重启
其他关机命令: halt poweroff init 0 (不可设置为默认值)
其他重启命令: reboot init 6 (不可设置为默认值)
系统运行级别 : 0 关机
1 单用户
2 不完全多用户,不含NFS服务
3 完全多用户
4 未分配
5 图形界面
6 重启
# runlevel :查询系统运行级别
# id:3:initdefault: (不可出现任何错误,后果非常非常严重)
退出登录命令: # logout
第三章 文本编辑器Vim
3.1 vim常用操作
vim没有菜单,只有命令!!
插入命令
定位命令
删除命令
复制和剪切命令
替换和取消命令
搜索和搜索替换命令
保存和退出命令
总结
3.2 vim使用技巧
导入命令执行结果: r !命令
定义快捷键: map 快捷键 触发命令
eg: map ^P I# map ^B 0x
连续行注释:n1,n2s/^/#/g
: n1,n2s/^#//g
: n1,n2s/^////g
替换: ab mymail mimiluyo@qq.com [输入mymail会自动替换成后面的内容]
**定义的快捷键或者ab后面的内容重启后会消失**
保存在: 文件.vinrc中
root用户 -> /root/.vimrc
普通用户 -> /home/username/.vimrc
第四章 用户和用户组管理
4.1 用户配置文件
4.1.1 .用户信息文件/etc/passwd
1.用户管理简介
·越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范
·在linux中主要是通过用户配置文件来查看个修改用户信息
2./etc/passwd
root:x:0:0:root:/root:/bin/bash (字段间用 :分割)
·第一字段:root:用户名称
·第二字段:密码标志
·第三字段:uid [0:超级用户 1-299:系统用户(伪用户) 500-655535:普通用户(Centos7 从1000开始)]
·第四字段:gid(初始组id)
·第五字段:用户说明
·第六字段:用户家目录 **[普通用户:/home/用户名/ root用户:/root/]**
·第七字段:登录之后的shell
3.初始组和附加组
初始组:指用户登录开始就拥有这个用户组的相关权限。**每个用户初始组只能有一个也必须有一个**
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个
4.shell是什么??
shell就是Linux的命令解释器,在/etc/passwd中,除了标准Shell是/bin/bash之外,还可以是/sbin/nologin, /usr/bin/passwd等等
4.1.2 影子文件/etc/shadow
1.文件表示
·第一字段:用户名
·第二字段:加密密码 (加密算法为SHA512散列加密算法 ,如果密码是“!!”或“*” 代表没有密码,不可以登录)
**·第三字段:密码最后一次修改日期** (使用1970年1月1日为标准时间,每过一天时间吹加1)
·第四字段:两次密码的修改间隔时间(和第三字段想比)
·第五字段:密码有效期 (和第三字段相比)
·第六字段:密码修改到期前的警告天数(和第五字段相比)
·第七字段:密码过期后的宽限天数(和第五字段想比) [0:代表密码过期后立即失效 1:代表密码永远不会失效]
·第八字段:账号失效时间 (使用时间戳表示)
·第九字段:保留
2.时间戳换算
·把时间戳换算为日期 date -d "1970-01-01 16066 days"
·把日期换算为时间戳 echo $((date --date="2020/01/01" +%s)86400+1)
4.1.3 组信息文件/etc/group和组密码文件 /etc/gshadow
1.组信息文件/etc/group
·第一字段:组名
·第二字段:组密码标志
·第三字段:Gid
·第四字段:组中附加用户
4.2.用户管理相关文件
1.用户家目录
·普通用户:/home/用户名/,所有者和所属组都是此用户,,权限是770
·超级用户:/root/, 所有者和所属组都是root用户,权限是550
2.用户邮箱
/var/spool/mail/用户名/
3.用户模板目录
/etc/skel/
4.3 用户管理命令
4.3.1 用户添加命令useradd
1、useradd命令格式
[root@localhost ~]#useradd [选项] 用户名
-u UID: 手工指定用户的UID号
-d 家目录: 手工指定用户的家目录
-c 用户说明: 手工指定用户的说明
-g 组名: 手工指定用户的初始组
-G 组名: 指定用户的附加组
-s shell: 手工指定用户的登录shell。默认是/bin/bash
2.用户默认值文件
===/etc/default/useradd===
GROUP=100 #用户默认组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(7)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
===/etc/login.defs===
PASS_MAX_DAYS 99999 #密码有效期(5)
PASS_MIN_DAYS 0 #密码修改间隔(4)
PASS_MIN_LEN 5 #密码最小5位(PAM)
PASS_WARN_AGE 7 #密码到期警告(6)
UID_MIN 500 #最小和最大UID范围
GID_MAX 60000
ENCRYPT_METHOD SHA512 #加密模式
4.3.2 修改用户密码passwd
1.passwd命令格式
passwd [选项] 用户名
-S 查询用户密码的密码状态。仅root用户可用。
-l 暂时锁定用户。仅root用户可用
-u 解锁用户。仅root用户可用
--stdin 可以通过管道符输出的数据作为用户的密码。
2.查看密码状态
passwd -S lamp
lamp PS 2013-01-06 0 99999 7 -1
#用户名 密码设定时间(2013-01-06) 密码修改间隔时间(0) #密码有效期(99999 ) 警告时间(7) 密码不失效(-1)
3.锁定用户和解锁用户
passwd -l 用户名 (锁定)
passwd -u 用户名 (解锁)
4.使用字符串作为用户的密码
echo "mimiluyo" | passwd --stdin 用户名 (此方法可以修改用户密码,但也可以通过 history 命令查看,,不安全)
4.3.3 修改用户信息 usermod & 修改用户密码状态chage
1.usermod
usermod [选项] 用户名
-u UID:修改用户的UID号
-c 用户说明:修改用户的说明信息
-G 组名:修改用户的附加组
-L:临时锁定用户(Lock)
-U:解锁用户锁定(Unlock)
2.chage
chage [选项] 用户名
-l:列出用户的详细密码状态
-d 日期:修改密码最后一次更改日期(shadow3字段)
-m 天数: 两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W 天数:密码过期前警告天数(6字段)
-I 天数:密码过后宽限天数(7字段)
-E 日期:账号失效时间(8字段)
**chage -d 0 用户名 这个命令是把密码修改日期归 0 。用户一登录就会别要求修改密码**
3.userdel
# userdel -r 用户名
-r :同时删除用户家目录
4.4 用户组管理命令
添加,修改,删除 用户组
[root@mimiluyo ~]# groupadd [选项] 组名
-g Gid 指定组id
[root@mimiluyo ~]# groupmod [选项] 组名
-g Gid 修改组id
-n 新组名 修改组名 eg: # groupmod -n lovely mimiluyo (把mimiluyo改为lovely)
[root@mimiluyo ~]# groupdel [选项] 组名
**删除组时,组内有初始用户(或该组也是别的用户的主组)存在,否在无法删除,如果该组是其他组的附加组,则不影响删除**