并未涉及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
2student01:x:520:520::/home/student01:/sbin/nologin
student02:x:521:521::/home/student02:/sbin/nologin创建对应的userpwdfile.txt
1
2student01:123456
student02:123456使用newusers批量添加用户
1
newusers userfile.txt
| ![image-20211217090840336](https://hexo-1253463144.cos.ap-chongqing.myqcloud.com/image-20211217090840336.png) |
| ------------------------------------------------------------ |
chpasswd批量修改密码
执行命令/usr/sbin/pwunconv,将/etc/shadow产生的shadow密码解码,然后回写到/etc/passwd中, 并将/etc/shadow的shadow密码栏删掉。这是为了方便下一步的密码转换工作,即先取消shadow password功能,关闭影子文件。
1
2
3pwunconv //
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 一天以前) |
atime n天内被读取 mtime n月被读取 ctime n分钟被读取 amin n天内被修改 mmin n月内被修改 cmin n分钟内被修改 |
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
2rpm -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