并未涉及Linux全部内容,根据上课所做的一份笔记
Linux进入拯救模式修改root密码
- 选择系统时按 e
- 在 UTF-8后添加init=/bin/sh
 按ctrl+x 保存启动
- 可能会乱码 执行LANG=en
- 添加权限mount -o remount rw, /
- 修改密码 passwd root
- touch /.autorelabel
- 重启 exec /sbin/init
报错 passwd:Authentication token manipulation error
|  | 
|---|
|  | 
| 将 shadow- 重命名为 shadow | 
|  | 
设置时区
查看所有时区命令
timedatectl list-timezones
| 1 | [root@localhost tmp]# timedatectl list-timezones | 
设置时区
timedatectl set-timezone "Asia/Shanghai"
查看时间
clock
| 1 | [root@localhost tmp]# clock | 
data -R
| 1 | [root@localhost tmp]# date -R | 
文件命令相关操作
创建文件夹 mkdir
创建文件 touch 文件名 cat “内容”>文件名 echo “内容”>文件名
查看文件 cat 文件名
移动文件 mv 文件名 移动目录/
删除文件 rm 文件名
查找文件 find 路径 -name 文件名
创建一个大小为4G的文件
dd if=/dev/zero of=文件名 bs=1 count=0 seek=4G
| 1 | [root@localhost tmp]# dd if=/dev/zero of=1.txt bs=1 count=0 seek=4G | 
系统运行级与运行级的切换
系统运行级
| 运行级 | 状态 | 
|---|---|
| 0 | 关闭计算机 | 
| 1 | 单用户拯救模式 | 
| 2 | 多用户模式 | 
| 3 | 多用户模式 | 
| 4 | 多用户模式 | 
| 5 | 多用户模式,用于自动启动XFree86系统(图形界面) | 
| 6 | 重新启动 | 
| Q/q | 重新加载init守护进程配置 | 
| U/u | 重新执行init守护进程 | 
切换运行级
| 1 | init 1 | 
查看当前系统运行级
| 1 | runlevel | 
| 1 | [root@localhost ~]# runlevel | 
系统运行级的服务
| 1 | chkconfig 查看服务 | 
| 1 | [root@localhost ~]# chkconfig --list | 
| 1 | systemctl | 
- 列出系统中所有活动的服务
| 1 | [root@localhost ~]# systemctl -t service | 
- 显示系统环境 - 1 
 2
 3- [root@localhost ~]# systemctl show-environment 
 LANG=zh_CN.UTF-8
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
- 获取系统默认目标的名称 - 1 
 2- [root@localhost ~]# systemctl get-default 
 multi-user.target
- 禁用sshd服务 - 1 
 2
 3- [root@localhost ~]# systemctl disable sshd.service 
 Removed symlink /etc/systemd/system/multi-user.target.wants/sshd.service.
 // systemctl disable/enable sshd.service disable禁用 enable开启
- 从系统运行级5切换到系统运行级3 - 1 - systemctlusolate multi-user.target - 未找到命令 
- 显示NFS服务的运行状态 - 1 - systemctl status nfs.service - 未找到服务 
- 检查是否启用了ssh服务 - 1 
 2- [root@localhost ~]# systemctl is-enabled sshd 
 enabled
- 列出系统上安装的所有单元,包括失效或空的 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23- [root@localhost ~]# systemctl list-unit-files 
 UNIT FILE STATE
 proc-sys-fs-binfmt_misc.automount static
 dev-hugepages.mount static
 dev-mqueue.mount static
 proc-sys-fs-binfmt_misc.mount static
 sys-fs-fuse-connections.mount static
 sys-kernel-config.mount static
 sys-kernel-debug.mount static
 tmp.mount disabled
 brandbot.path disabled
 systemd-ask-password-console.path static
 systemd-ask-password-plymouth.path static
 systemd-ask-password-wall.path static
 session-1.scope static
 session-2.scope static
 session-3.scope static
 arp-ethers.service disabled
 auditd.service enabled
 autovt@.service enabled
 blk-availability.service disabled
 brandbot.service static
 chrony-dnssrv@.service static
用户登录与账户管理
添加用户
| 1 | useradd [选项] 用户名 | 
| 选项 | 说明 | 
|---|---|
| -c<备注> | 加上备注文章,备注文字会保存在passwd得备注栏位中 | 
| -d<登录目录> | 指定用户登入时起始目录 | 
| -D | 变更预设值 | 
| -e<有效期限> | 指定账户的有效期限 | 
| -f<缓存天数> | 指定在密码过期后多少天即关闭该帐号。 | 
| -g<群组> | 指定用户所属的群组。 | 
| -G<群组> | 指定用户所属的附加群组。 | 
| -m | 自动建立用户的登入目录。 | 
| -M | 不要自动建立用户的登入目录。 | 
| -n | 取消建立以用户名称为名的群组. | 
| -s | 指定用户登入后所使用的shell | 
| -u | 指定用户ID | 
为添加的用户指定相应的用户组
| 1 | useradd -g root test01 | 
创建一个系统用户
| 1 | useradd -r tt | 
为新添加的用户指定home目录
| 1 | useradd -d /home/test01 test01 | 
设置用户密码
| 1 | passwd 用户名 | 
批量创建用户
- 创建userfile.txt的文件 - 1 
 2- student01:x:520:520::/home/student01:/sbin/nologin 
 student02:x:521:521::/home/student02:/sbin/nologin- 创建对应的userpwdfile.txt - 1 
 2- student01:123456 
 student02:123456
- 使用newusers批量添加用户 - 1 - newusers userfile.txt 
 
|  |
| ------------------------------------------------------------ |- chpasswd批量修改密码 - 执行命令/usr/sbin/pwunconv,将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中, 并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消shadow password功能,关闭影子文件。 - 1 
 2
 3- pwunconv // 
 chpasswd < userpwdfile.txt // 批量修改密码
 pwunconv // 恢复影子文件- cat /etc/passwd 
删除用户
| 1 | userdel [-r] 用户名 | 
用户组操作
添加用户群组
| 1 | groupadd [选项] group | 
删除用户群组
| 1 | grouddel group | 
为用户添加用户组
-a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组。
| 1 | usermod -a -G groupA user | 
将用户登录名test01修改为test02,将工作目录改为/home/test02,将所属群组该为root
| 1 | usermod -l test01 test02 -d /home/test02 -m -g root | 
将用户从用户组中移除
| 1 | gpasswd -d userName groupName | 
修改用户群组属性
| 1 | groupmod [-g gid [-o]][-n new_group_name] old_group_name | 
| 选项 | 说明 | 
|---|---|
| -g gid | 设置新群组的标识号 | 
| -o | 重复使用群组的标识号 | 
| -n old_name new_name | 设置新群组名称 | 
查看登录用户
who 查看目前登录的用户信息
w 查询登录用户的详细信息
last 搜索/var/log/wtmp文件 显示自创建该文件以来登录(和退出)的所有用户列表
lastlog 显示所有用户的最近登录情况,或者指定用户最近的登录情况
查看近两年登录的用户
| 1 | lastlog -t 2 | 
改变用户身份
su
| 1 | 用法: | 
在低权限用户下用root用户执行命令
| 1 | su -c "whoami" root | 
sudo
| 1 | sudo - 以其他用户身份执行一条命令 | 
文件系统管理
软连接硬链接
ln
| 参数 | 说明 | 
|---|---|
| -s | 创建软连接 | 
| -d | 创建硬链接(不写默认) | 
软硬链接区别
- 软连接- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
 
- 硬链接- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
 
给文件创建一个软连接
| 1 | ln -s log2013.log link2013 | 
给文件创建一个硬连接
| 1 | ln log2013.log ln2013 | 
查看磁盘分区信息
| 1 | /sbin/fdisk -l | 
|  | 
|---|
文件权限
| 1 | chmod u+s [file] | 
参数
| 1 | u 文件所有者 | 
特殊权限
当权限编码数字长度为4个的时候,第一位表示特殊权限,后三位表示普通权限
第一位表示特殊权限时,具体分为8中情况:
当第一位是0,特殊权限为空
当第一位是1,特殊权限为sticky
当第一位是2,特殊权限为SGID
当第一位是3,特殊权限为SGID,sticky
当第一位是4,特殊权限为SUID
当第一位是5,特殊权限为SUID,sticky
当第一位是6,特殊权限为SUID,SGID
当第一位是7,特殊权限为SUID,SGID,sticky
快速转换十进制转二进制
转换表
| 1 | 1 2 4 8 16 32 64 128 | 
将 77 转为二进制
| 1 | 1 2 4 8 16 32 64 128 | 
chmod 4755 file
这个4表示其他用户执行该文件时,具有该文件所有者一样的权限
查看文件基本信息
stat查看文件的修改信息
|  | 
|---|
查看环境变量
echo $PATH
|  | 
|---|
磁盘分区
查看磁盘容量
| 1 | df -h | 
|  | 
|---|
查看指定文件或目录大小
| 1 | du -h /etc/passwd | 
|  | 
|---|
磁盘分区
在分区前先给虚拟机添加一块硬盘
| 查看磁盘分区 | 
|---|
| fdisk -l | 
|  | 
| 对刚刚挂载的磁盘分区 | 
| fdisk /dev/sdb | 
|  | 
| n新建分区d删除分区l展示分区编码号w把实现的分区结果保存在磁盘中 | 
|  | 
| 可选 p(primary) 和 e (extended) | 
|  | 
| 查看分区结果 | 
|  | 
格式化分区
| mkfs.xfs /dev/sdb1 | 
|---|
|  | 
挂载
| 创建一个文件夹 | 
|---|
| mkdir /home/temp_disk | 
| 将分区挂载到新建的文件夹中 | 
| mount /dev/sdb1 /root/temp_disk | 
|  | 
|  | 
| 完成 | 
报错问题
| 1 | 问题: | 
卸载
| umout 分区名 | 
|---|
|  | 
| 删除分区 | 
| fdisk /dev/sdb | 
|  | 
centos7 启用NFS服务
yum.pid被锁定或sleeping
使用
rm -rf /var/run/yum/pid
条件:两台虚拟机
| 在A主机上操作 | 
|---|
| yum install -y nfs-utils rpcbind // 安装nfs | 
|  | 
| mkdir /root/data // 创建共享目录 | 
|  | 
| systemctl start nfs // 启动nfs | 
|  | 
编辑 vim /etc/exports
| 1 | /root/data/ 172.20.10.0/24(rw,sync,all_squash) | 
|  | 
|---|
检查端口启动情况
|  | 
|---|
// 不关无法访问
systemctl stop firewalld.service 关闭防火墙
| 在主机B上操作 | 
|---|
| yum install -y nfs-utils rpcbind // 安装nfs | 
|  | 
| showmount -e 172.20.10.134 // 在主机B上查看A可提供的挂载信息 | 
|  如果没有显示,重新在A主机重启nfs服务 | 
| mkdir /mnt/test1 //创建挂载目录 | 
| mount -t nfs 172.20.10.134:/root/data /mnt/test1 //在主机B上实现NFS的挂载 | 
|  | 
| df -h // 查看是否挂载成功 | 
|  | 
| 成功 | 
| 创建文件测试 | 
|---|
|  | 
| 解决方式(在主机A 上 给data目录改变权限) | 
| chown -R nfsnobody:nfsnobody /root/data/ | 
|  | 
| 再次测试 | 
|  成功 | 
卸载nfs
查找服务名
| 1 | rpm -qa | grep nfs | 
|  | 
|---|
卸载查找到的服务名
| 1 | yum remove -y 服务名 | 
磁盘文件与目录管理
磁盘管理
df 查看磁盘空间的使用情况
| df -h 以便于阅读的方式输出磁盘空间信息 | 
|---|
|  | 
du 显示磁盘上目录或文件的大小
| du -h [文件或目录] 以便于阅读的方式输出 | 
|---|
|  | 
pwd 显示当前目录
| 显示当前目录 | 
|---|
|  | 
查看文件内容的方式
find 查找文件
以文件名称、后缀名、文件相关用户、文件大小、文件类型、文件访问、修改时间等去查询文件,但不包括以文件内容去查询
| 列出当前目录及字目录下后缀为txt的所有文件 | 
|---|
| find ./ -name “*.txt” | 
|  | 
| 列出当前目录及字目录下所有文件 | 
| find ./ -type f ( f一般文件d目录l链接文件) | 
|  | 
| 将查询出来的文件以ls输出方式显示出来 | 
| find -iname “*.txt” -exec ls -lh {} ; | 
| find -iname “*.txt” -ok [命令] {} ; // 与上一个命令功能一样,区别在于-ok 执行命令时 会询问用户 | 
|  | 
| 按照权限查找文件 | 
| find -perm 755 | 
|  | 
| 按照用户查找文件 | 
| find -user admin | 
|  | 
| 按照文件的所属组来进行查找 | 
| find -group 文件所属组名 | 
| find -atime -1 ( -1一天以内+1一天以前) | 
| atimen天内被读取mtimen月被读取ctimen分钟被读取aminn天内被修改mminn月内被修改cminn分钟内被修改 | 
|  | 
| 1 | 根据文件的大小来查找文件 | 
| 1 | 按照文件的深度层次来进行查找 | 
| 1 | 将多个条件按照指定逻辑组合在一起进行文件查找 | 
chmod 修改文件权限
cat 查看文件内容
- 适合查看行数较少的文件
head
- 查看文件的开头部分的内容
| 参数 | 说明 | 
|---|---|
| -q | 隐藏文件名 | 
| -v | 显示文件名 | 
| -c<数目> | 显示的字节数 | 
| -n<行数> | 显示的行数 | 
more
- 类似 cat ,不过会以一页一页的形式显示 - Enter 向下n行,需要定义。默认为1行
- Ctrl+F 向下滚动一屏
- 空格键 向下滚动一屏
- Ctrl+B 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
- V 调用vi编辑器
- !命令 调用Shell,并执行命令
- q 退出more
 
| 说明 | 参数 | 
|---|---|
| -num | 一次显示的行数 | 
| +num | 从第 num 行开始显示 | 
less
- 进行文件内容的查看(适合查看大文件,相比与more,他的功能更全) - enter:逐行下翻
- 空格:逐页下翻
- ctrl+f::逐页下翻
- ctrl+b:逐页上翻
 
less +/关键字 filename
- 文本中关键字高亮显示
less +n filename
- 从第n行开始进行文件内容的查看
less +/关键字.\
- 高亮显示任意文件中的关键字
less -N filename
- 显示行号
tail
文件压缩与解压缩
compress/uncompress
压缩
compress filename
解压
uncompress filename
gzip/gunzip
压缩
gizp filename
解压
gunzip filename
文件备份与恢复
tar
压缩
tar -zcvf 原文件名.tar.gz 源文件名
解压
tar -xzvf 压缩包.tar.gz
简单信息处理
wc
- 显示文件基本的统计信息(对应的行数、词数、字符数、文件名)
|  | 
|---|
- 显示多个文件- 1 - wc /目录/{file1, file2} 
grep
- 查找文件内容
- 语法- grep 关键字 文件名
 
| 1 | grep -c 关键字 文件名 | 
|  | 
|---|
| 1 | grep -c -i 关键字 文件名 | 
| 1 | grep -n 关键字 filename | 
|  | 
|---|
| 1 | grep -v 关键字 filename | 
|  | 
|---|
sort
- 排序:是对文件的每一行进行排序(依据ASCII值)
- ASCII:American standard code of information interchage
- 0-9:48-57
- A-Z:65-96
- a-z:97-122
| 1 | sort filename | 
cut
- 展现文件的局部范围的内容
- cut -b 2-5,8,10 filename
uniq
- 文本去重 - 在进行去重显示的时候,去重的规则是:连续重复出现 
| 1 | uniq filename 进行文件的去重展示 | 
Linux包管理
RPM
- 安装
- 查询(查询一个包是否安全)- rpm -qa |grep telnet
 
- 检验:检验包安装的正确性
- 包升级
- 包删除
yum
| 1 | yum install -y package | 
yum repolist
用于列出系统中已配置的yum源
yumex
yum list yumex
yum list installed
进程管理
shell编程
vi
vi filename
命令模式,文本编辑模式,行编辑模式
vi filename
命令模式
i,a,s,o esc + shift + Q 进入行编辑模式
 esc + 双击y 对光标所在行进行复制
 esc + p 对复制的内容进行粘贴
 esc + 双击g 将光标移到首行
 esc + 双击d 删除当前行
 ctrl + insert 对选中的内容进行复制
 shift + insert 对已经复制的内容进行粘贴
文本编辑模式
 内容编辑
行编辑模式
 q,q!,wq,w,wq!
 /1 /[0-9]
 ?1
未完待续
服务器搭建
centos7 搭建ftp服务器
- 安装vsftpd - 1 - yum install -y vsftpd 
- 启动ftp服务器 - 1 - systemctl start vsftpd.service 
- 配置ftp - 配置文件目录
 - 1 - /etc/vsftpd/vsftpd.conf 
| 1 | 除下面提及的参数,其他参数保持默认值即可。 | 
|  | 
|---|
- 防火墙放行相应端口 - 关闭防火墙命令 - 1 - systemctl stop firewalld 
- 添加主端口 - 1 - firewall-cmd --permanent --zone=public --add-port=21/tcp 
 
- 添加被动端口 - 1 - firewall-cmd --permanent --zone=public --add-port=65400-65410/tcp 
- 重新加载防火墙 - 1 - firewall-cmd --reload 
- 创建ftp用户 - 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- 创建一个Linux用户 
 adduser ftptest
 修改ftptest用户的密码
 passwd ftptest
 创建一个供FTP服务使用的文件目录
 mkdir /var/ftp/test
 创建测试文件
 touch /var/ftp/test/testfile.txt
 运行以下命令更改/var/ftp/test目录的拥有者为ftptest
 chown -R ftptest:ftptest /var/ftp/test
- 设置ftp服务开机启动 - 1 - systemctl enable vsftpd.service 
|  | 
|---|
- 测试 - 登录 
卸载ftp服务器
- 查找vsftpd服务 - 1 - rpm -aq vsftpd 
- 停止ftp服务 - 1 - systemctl stop vsftpd.service 
- 卸载ftp服务 - 1 - rpm -e vsftpd-3.0.2-21.el7.x86_64 
centos7 搭建telent服务
- 先检查是否安装了telnet - 1 
 2- rpm -qa | grep telnet //检查你的CentOS是否安装了telnet和telnet-server 
 rpm -qa xinetd //检查你的CentOS是否安装了xinetd,telnet的自启动依赖它- 执行后都为空就是没有安装。 
- 安装telnet并设置开机自启动 
| yum list |grep telnet //列出当前可用的rpm包 | 
|---|
|  | 
| yum install telnet-server //安装telnet-server 服务端 | 
|  | 
| yum install telnet //安装telnet 客户端 | 
|  | 
- 安装xinetd - yum install -y xinetd - systemctl enable xinetd.service //设置xinetd开机自启动 - systemctl start xinetd.service //启动xinetd - systemctl status xinetd.service //查看xinetd状态 
- 设置telnet服务开机启动 - systemctl enable telnet.socket //设置telnet服务开机启动 - systemctl start telnet.socket //启动telnet服务 - systemctl restart xinetd //telnet服务依赖xinetd守护,安装telnet-server后启动时需要重启xinetd服务 
- 防火墙放行23端口 - CentOS采用了 firewalld 防火墙,查询是否开启23端口 - firewall-cmd –query-port=23/tcp - firewall-cmd –zone=public –add-port=23/tcp –permanent // 放行23端口 - firewall-cmd –complete-reload // 重新加载firewall-cmd 
- 修改telnet配置文件,开启服务 - /etc/xinetd.d/telnet // 没有就自己创建 - vim /etc/xinetd.d/telnet - ps -ef | grep xinetd // 查看xinetd是否启动 
- 测试 - telnet localhost // 登录测试 - Login incorrect 报错解决 - 查看日志 - tail /var/log/secure - vim /etc/securetty //在该文件末尾添加pts/4 - 再次测试 - 成功 
- 卸载telnet - rpm -qa | grep telnet #显示telnet-server和telnet包 - rpm -e telnet-0.17 #卸载telnet客户端 - rpm -e telnet-server-0.17 #卸载telnet服务端 - rpm -qa |grep xinetd // 显示xinetd包 - rpm -e xinetd-2.3.15-14.el7.x86_64 // 卸载xinetd 
























