Linux(1)
Linux(1)
-
linux是常用的服务器操作系统,常用的发行版本Centos,Ubuntu,Redhat等
-
linux和Unix的对比
VMware安装CentOS
-
到这里就已经安装完成了,登录检查网络是否有问题,ping百度如果不同可在NAT网卡出设置
linux系统优化
修改网卡名称
-
一般在实操中会将linux的网卡统一以eth的方式命名,下面进行修改
-
对已安装的操作系统进行修改
-
修改网卡配置文件
-
cd /etc/sysconfig/network-scripts #复制原网卡文件内容到ifcfg-eth0文件下 mv ifcfg-ens33 ifcfg-eth0 #修改ifcfg-eth0文件 NAME=eth0 DEVICE=eth0
-
-
修改内核启动参数,禁用预测命名规则,将net.ifnames=0 biosdevname=0 参数关闭
-
vim /etc/sysconfig/grub GRUB_CMDLIME_LINUX="...net.ifnames=0 biosdevname=0 quiet" grub2-mkconfig -o /boot/grub2/grub.cfg
-
-
重启操作系统并检查修改结果
-
reboot ifconfig eth0
-
-
-
在安装操作系统时修改
- 在安装操作系统时选择 Inastll CentOS7 按下 Tab 设定 kernel 内核参数
- 增加内核参数 net.ifnames=0 biosdevname=0
- 检查是否修改成功,成功后可以继续安装系统
-
修改yum源为阿里云源,并安装常用软件
-
curl -o /etc/yum.repos.d/CentOS-Base.repohttps://mirrors.aliyun.com/repo/Centos-7.repo yum install epel-release -y yum makecache 建立缓存
-
[root@Centos ~]# yum install net-tools vim htop iftop iotop lrzsz sl wget unzip telnet nmap nc psmisc dos2unix bash-completion bash-completion-extras sysstat rsync nfs-utils httpd-tools -y
关闭 防火墙以及selinux
-
systemctl disable firewalld 停掉防火墙的开机自启 systemctl stop firewalld 停掉防火墙 vim /etc/selinux/config /关闭selinx SELINUX=disable
人机交互接口Bash
什么是Bash
- Bash shell是一个命令解释器,主要负责用户程序与内核进行交互操作的一种借口,将用户输入的命令翻译给内核,由内核驱动硬件,最终将处理后的结果输出至Bash shell 屏幕终端
如何打开Bash Shell
- 使用远程链接工具链接linux服务器,系统会默认打开一个默认的sehll
Bash shell 能干什么
- 使用Shell实现对Linux系统的大部分管理
- 文件管理
- 用户管理
- 磁盘管理
- 网络管理
- 软件管理
- 服务管理等
如何使用Bash shell
-
命令 --- > 效率低,适合少量的工作
-
shell脚本 --- > 效率高,适合重复性的工作
-
Bash shell 基础语法
-
Bash shell 命令行,为用户提供命令输入,将执行结果返回给用户
-
命令 command 整条shell命令的主体功能 选项 options 用于调节命令的具体功能 参数 parameters 命令操作的对象,如文件、目录名等 -
选项:
- 以 - 引导短格式选项(单个字符),例如 -a
- 以-- 引导长葛市选项(多个字符),例如 --all
- 多个端格式选项可以写在一起,只用一个 -al
-
命令写在开头,选项和参数谁知可以发生变化
-
-
Bash Shell 基本特性
-
补全功能
- 命令补全:当忘记命令时,可以使用Tabs进行补全
- 目录补全:当需要查找文件目录层级比较多时,可以使用tabs快速补全,减少出错
-
history历史命令:
- !+ 命令行数 可以快速执行history中的命令
- history -c 可以清除history中的记录,只是清除的是内存中的历史命令记录,Bash_history文件中的命令还是存在的
-
别名
-
命令别名讲用户经常使用的复杂命令简单化,可以用alias别名名称 = ‘命令’创建属于自己的命令别名,如要取消一个命令别名,用unalias别名名称
-
alias这种操作是存在内存中的,并没有在文件中修改,重新开启Bash shell 中需要重新设定
-
vim /etc/bashrc ##保存在磁盘中 alias eth0 = 'cat /etc/sysconfig/network-scripts/ifcfg-eth0' #或者 echo "alias eth0='cat /etc/sysconfig/network-scripts-eth0 '" >>/etc/bashrc source /etc/bashrc ## 加载到内存 ##加载到内存还可以重新打开 Bash Shell窗口
-
-
帮助手册
- 命令 -- help 帮助文档
- 命令 man 手册
- 网上查询手册
文件管理
linux的文件目录
- linux的文件目录成树状,最高的根节点为 "/"
- 根下面的文件夹
- 相关文件夹解释
- /bin 目录 存放命令相关
- /bin 存放普通用户使用的命令
- /sbin 存放超级管理员使用的命令
- 存放用户家目录 /home
- /home 普通用户的家目录,默认为 /home/username
- /root超级管理员root的家目录,普通用户无权操作
- /usr 存放系统相关文件的目录
- /usr/local 软件安装的目录
- /usr/bin 普通用户使用的应用程序
- /usr/sbin 管理员使用的应用程序
- /usr/lib 32位的库文件
- /usr/lib64 64位的库文件
- 系统启动目录 /boot
- 存放系统启动时内核与groub引导菜单
- /boot存放的系统启动相关的文件,如 kernel,grub(引导装载程序)
- 配置文件目录
- /etc 存放系统配置文件目录,后续所有服务配置都在这个目录中
- /dev 设备相关目录
- /dev/null 黑洞设备,只进不出,类似于垃圾回收站
- /dev/rendom 生成随机数的设备
- /dev/zero 能源源不断的产生数据
- /proc 虚拟系统目录
- 虚拟的文件系统 (如对应的进程程序停止 则/proc下的对用的目录则会被删除)
- /bin 目录 存放命令相关
- 绝对路径和相对路径
- 绝对路径:只要从 / 开始的路径
- 相对路径: 相对于当前目录来说
- . 和 ..分别是什么意思
- 一个点代表的是当前目录
- 两个点代表的是当前目录的上层目录
- 所谓的. 目录实际上属于相对路径上的一种表示形式
- 相关文件夹解释
文件操作基础命令
路径切换命令
# cd 绝对路径 cd /etc/hostname
# cd 相对路径 cd test/abc cd . cd ..
-------------------------------------
# cd 切换目录 cd /etc
# cd - 切换回上一次所在的目录
# cd ~ 切换回当前用户的家目录
# cd . 代表当前目录,一般在拷、移动等情况下使用
# cd .. 切换回当前目录的上级目录
文件创建 touch
[root@node1 tmp]# touch file
[root@node1 tmp]# touch file1 file2
[root@node1 tmp]# touch /tmp/file3
[root@node1 tmp]# touch file{6..10}
[root@node1 tmp]# ll
总用量 12
-rw-r--r--. 1 root root 0 1月 22 15:01 file
-rw-r--r--. 1 root root 0 1月 22 15:01 file1
-rw-r--r--. 1 root root 0 1月 22 15:01 file10
-rw-r--r--. 1 root root 0 1月 22 15:01 file2
-rw-r--r--. 1 root root 0 1月 22 15:01 file3
-rw-r--r--. 1 root root 0 1月 22 15:01 file6
-rw-r--r--. 1 root root 0 1月 22 15:01 file7
-rw-r--r--. 1 root root 0 1月 22 15:01 file8
-rw-r--r--. 1 root root 0 1月 22 15:01 file9
目录创建
[root@node1 tmp]# mkdir t1
[root@node1 tmp]# mkdir /tmp/t1/t1 /tmp/t2/t2
mkdir: 无法创建目录"/tmp/t2/t2": 没有那个文件或目录
[root@node1 tmp]# mkdir /tmp/t1/t1 /tmp/t2/t2 -p
#-p 表示递归创建目录
[root@node1 tmp]# ll t1
总用量 0
drwxr-xr-x. 2 root root 6 1月 22 15:09 t1
[root@node1 tmp]# ll t2
总用量 0
drwxr-xr-x. 2 root root 6 1月 22 15:09 t2
[root@node1 tmp]# cd t2
[root@node1 t2]# ll
总用量 0
drwxr-xr-x. 2 root root 6 1月 22 15:09 t2
文件或者目录的复制
-
#cp 复制文件或者目录 #选项: # -r:递归拷贝目录; # -p:保持文件属性 [root@Centos ~]# cp /tmp/file_copy /etc [root@Centos ~]# cp /etc/file_copy /tmp/copy [root@Centos ~]# cp /tmp/copy /etc -p [root@Centos ~]# cp /etc/ /tmp/ -r #复制目录以及目录下面的子目录需要递归复制
文件或者目录移动
-
#mv 文件或者目录的移动 # [root@Centos ~]# mv file file1 #相当于改名操作 [root@Centos ~]# mv ./file1 /tmp [root@Centos ~]# mv /tmp/file1 ./ #移动/tmp/file1到当前目录 [root@Centos ~]# mkdir dir [root@Centos ~]# mv ./dir/ /tmp [root@Centos ~]# touch file{2..5} [root@Centos ~]# mv ./file2 file3 file4 file5 /tmp [root@Centos ~]# mkdir dir{1..3} [root@Centos ~]# mv dir1 dir2 dir3 /tmp
文件或者目录的删除
-
#rm 文件或者目录的删除 #选项: -r:递归 -f:强制删除 -v:详细过程 [root@Centos ~]# rm file1 rm:是否删除普通空文件 "file1"? #删除文件,默认rm存在别名,rm -i所以会提醒是否删除文件 [root@Centos ~]# rm -f /tmp/file2 #强制删除文件 [root@Centos ~]# rm -rf /tmp/etc/ [root@Centos ~]# rm -f /tmp/file*
文件查看常用操作命令
-
#cat 查看文件内容,文件内容较少适合cat [root@Centos ~]#cat /etc/passwd [root@Centos ~]# cat -n /etc/passwd #查看文件行数 [root@Centos ~]# tac /etc/passwd #倒叙查看
-
#less more 分页查看文件内容,适合文件内容比较大的 [root@Centos ~]# less /etc/services #使用光标上下翻动,空格进行翻页,q退出 [root@Centos ~]# more /etc/services #使用回车上下翻动,空格进行翻页,q退出
-
#head 默认查看文件头部前10行内容 [root@Centos ~]# head /var/log/yum.log Mar 16 21:28:49 Installed: net-tools-2.0-0.25.20131004git.el7.x86_64 Mar 16 22:03:43 Installed: epel-release-7-11.noarch Mar 16 22:07:38 Installed: 14:libpcap-1.5.3-12.el7.x86_64 Mar 16 22:07:38 Installed: libref_array-0.1.5-32.el7.x86_64 Mar 16 22:07:38 Installed: libcollection-0.7.0-32.el7.x86_64 Mar 16 22:07:38 Installed: libevent-2.0.21-4.el7.x86_64 Mar 16 22:07:38 Installed: apr-1.4.8-7.el7.x86_64 Mar 16 22:07:38 Installed: libbasicobjects-0.1.1-32.el7.x86_64 Mar 16 22:07:38 Installed: libtirpc-0.2.4-0.16.el7.x86_64 Mar 16 22:07:38 Installed: rpcbind-0.2.0-49.el7.x86_64 #设置查看文件头部前5行内容 [root@Centos ~]# head -5 /var/log/yum.log Mar 16 21:28:49 Installed: net-tools-2.0-0.25.20131004git.el7.x86_64 Mar 16 22:03:43 Installed: epel-release-7-11.noarch Mar 16 22:07:38 Installed: 14:libpcap-1.5.3-12.el7.x86_64 Mar 16 22:07:38 Installed: libref_array-0.1.5-32.el7.x86_64 Mar 16 22:07:38 Installed: libcollection-0.7.0-32.el7.x86_64
-
# tail 默认查看尾部内容,默认是10行 #-f = tailf命令 ,-f:动态追踪一个文件的尾部变量 [root@Centos ~]# tail /var/log/yum.log Mar 16 22:07:48 Installed: psmisc-22.20-17.el7.x86_64 Mar 16 22:07:48 Installed: lrzsz-0.12.20-36.el7.x86_64 Mar 16 22:07:48 Installed: wget-1.14-18.el7_6.1.x86_64 Mar 16 22:07:48 Installed: rsync-3.1.2-10.el7.x86_64 Mar 16 22:07:48 Installed: htop-2.2.0-3.el7.x86_64 Mar 16 22:07:48 Installed: 1:telnet-0.17-66.el7.x86_64 Mar 16 22:07:48 Installed: unzip-6.0-24.el7_9.x86_64 Mar 16 22:07:48 Installed: sl-5.02-1.el7.x86_64 Mar 16 22:07:48 Installed: iotop-0.6-4.el7.noarch Mar 16 22:07:48 Installed: dos2unix-6.0.3-7.el7.x86_64 [root@Centos ~]# tailf /var/log/yum.log Mar 16 22:07:48 Installed: psmisc-22.20-17.el7.x86_64 Mar 16 22:07:48 Installed: lrzsz-0.12.20-36.el7.x86_64 Mar 16 22:07:48 Installed: wget-1.14-18.el7_6.1.x86_64 Mar 16 22:07:48 Installed: rsync-3.1.2-10.el7.x86_64 Mar 16 22:07:48 Installed: htop-2.2.0-3.el7.x86_64 Mar 16 22:07:48 Installed: 1:telnet-0.17-66.el7.x86_64 Mar 16 22:07:48 Installed: unzip-6.0-24.el7_9.x86_64 Mar 16 22:07:48 Installed: sl-5.02-1.el7.x86_64 Mar 16 22:07:48 Installed: iotop-0.6-4.el7.noarch Mar 16 22:07:48 Installed: dos2unix-6.0.3-7.el7.x86_64 ...#动态追踪
-
#grep 过滤 -v:取反,-E:搜素多个条件 -c:count,统计数量 [root@Centos ~]# grep "unzip" /var/log/yum.log [root@Centos ~]# grep "dos2unix" -v /var/log/yum.log [root@Centos ~]# grep "sl|iotop" -E /var/log/yum.log [root@Centos ~]# grep "sl|iotop" -cvE /var/log/yum.log
文件上传或者下载命令
-
[root@Centos ~]# yum install lrzsz -y # 安装软件包 rz:上传,Windows系统可以采用拖拽的方式 sz filename:下载linux文件到本地Windows
-
[root@Centos ~]# yum install wget -y
-
#下载互联网上的文件到linux本地 wget http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7 .repo #-O 指定参数,下载到/etc/yum.repos.d并改名
-
#查看这个URL的内容 curl http://mirrors.aliyun.com/repo/Centos-7.repo #下载到/etc/yum.repos.d并改名 -o݇指定参数 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7 .repo
常用字符处理命令
-
# sort 排序 -r 倒叙, -n 按数字排序 -t 指定分隔符 -k 指定第几列 [scripts@Centos ~]$ sort -t "." -k 3.1,3.1 -k4.1,4.3 -n ip.txt 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.151 00:0F:AF:85:6C:F6 192.168.0.152 00:0F:AF:83:1F:65 192.168.0.153 00:0F:AF:85:70:03 192.168.0.153 00:0F:AF:85:70:03 192.168.1.1 00:0F:AF:81:19:1F 192.168.1.10 00:30:15:A2:3B:B6 192.168.1.11 00:30:15:A3:23:B7 192.168.1.11 00:30:15:A3:23:B7 192.168.1.12 00:30:15:A2:3A:A1 192.168.1.21 00:0F:AF:85:6C:09 192.168.1.152 00:0F:AF:83:1F:65 192.168.2.2 00:0F:AF:85:6C:25 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.20 00:0F:AF:85:55:DE 192.168.2.21 00:0F:AF:85:6C:09 192.168.2.22 00:0F:AF:85:5C:41 192.168.2.22 00:0F:AF:85:5C:41 192.168.3.1 00:0F:AF:81:19:1F 192.168.3.2 00:0F:AF:85:6C:25 192.168.3.3 00:0F:AF:85:70:42 192.168.3.3 00:0F:AF:85:70:42 192.168.3.10 00:30:15:A2:3B:B6 192.168.3.12 00:30:15:A2:3A:A1 # uniq 去重 uniq需要和sort一起使用,先使用sort排序,让重复内容连续在一起 [scripts@Centos ~]$ cat >> file.txt <<EOF 123 abc 123 abc EOF [scripts@Centos ~]$ cat file.txt 123 abc 123 abc [scripts@Centos ~]$ sort file.txt |uniq 123 abc # wc 指定统计文件中的字节数、行数、字数,并将统计结果显示输出 # -l 显示文件行数 -c显示文件字节 -w显示文件单词
-
#awk 文本和数据处理的编程语言 #参数 -F 指定输入时用到的字符分隔符 [root@Centos ~]# awk -F ':' '{print $1}' /etc/passwd #用:分割,然后输出第1列
[scripts@Centos ~]$ ifconfig eth0 | grep "inet " | awk '{print $2}' #取网卡的ip地址
[scripts@Centos ~]$ ifconfig eth0 |awk 'NR==2' | awk '{print $2}' #纯awk取网卡的ip地址
- ```bash
#sed 替换 #old#new#
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
文件压缩
什么是文件压缩以及压缩的作用
- 将多个文件或者目录合并成为一个特殊的文件;
- 将文件压缩有利于文件的传输速度,还可以节省网络的消耗
linux 下常其他见压缩包类型
-
格式 压缩工具 .zip zip压缩工具 .gz gzip压缩工具,只能压缩文件,会删除原文件(通常配合tar使用) .bz2 bzip2压缩工具,只能压缩文件,会删除原文件(通常配合tar使用) .tar.gz 先使用tar命令归档打包,然后使用gzip压缩 .tar.bz2 先使用tar命令归档打包,然后使用bzip压缩
常用的压缩与解压缩操作
-
gzip
-
#gzip 需要安装 #选项 -d 解压缩 gzip file1 #压缩文件file1 gzip -d file1 #解压缩文件file1 #zcat 查看压缩的文件
-
-
zip
-
#压缩用zip 需要安装 zip和unzip # -r 处理指定目录和指定目录下的使用子目录 -T 检查备份文件内的每个文件是否正确无误 zip file.zip file #压缩文件file zip -r dir.zip /dir #压缩目录 zip -T file.zip # 查看file.zip 是否完整 #解压缩用unzip #-l 显示压缩文件内所包含的文件 -t 检查压缩文件是否正确 #-d<目录> 指定文件解压缩后所要存储的目录 unzip -l file.zip unzip -t file.zip #不解压压缩包查看包的内容 unzip file.zip -d /tmp #解压file.zip 到/tmp目录下 unzip file.zip #解压zip文件包,默认到当前目录下
-
-
tar 是linux下最常用的压缩与解压缩,支持文件和目录的压缩归档
-
#tar 用法 tar[选项]file # c 创建新的归档文件 # x 对归档文件解包 # t 列出归档文件里的文件列表 # v 输出命令的归档和解包的过程 # f 指定包文件名,多参数f写最后 # z 使用gzip压缩归档后的文档(.tar.gz) # j 使用bzip2压缩归档后的文件(.tar.bz2) # J 使用xz压缩归档后的文件(tar.xz) # C 指定解压目录位置 # X 排除多个文件(写入需要排除的文件名称) # h 打包软连接 -- hard-dereference #打包硬链接 -- exclude #在打包的时候写入需要排除的文件或者目录 #常用的打包与解压组合 czf #打包tar.gz格式 cjf #打包tar.bz格式 cJf #打包tar.xz格式 zxf #解压tar.gz格式 jxf #解压tar.bz格式 xf #自动选择解压模式 tf #查看压缩包内容
-
文件属性
-
使用ls -l 列目录下所有文件时,会以长格式的方式显示,长格式显示就是windows下看到的文件详细信息
-
root@ljinw:~# ls -l ./ drwxr-xr-x 4 root root 4096 3月 17 20:19 snap # drwxr-xr-x 第一个字符是字符是文件类型,其他则是权限 # 4 硬链接次数 # root 文件属于那个用户 # root 文件属于那个组 # 4096 文件大小 #3月 17 20:19 最后修改时间 #snap 文件或目录名称
-
-
文件类型
-
文件类型说明
-
文件类型字母 类型含义 - 普通文件(文件,二进制,压缩,图片,日志等) d 目录文件 b 设备文件(块设备)存储设备硬盘 /dev/sda ,/dev/sr0 c 设备文件(字符设备),终端 /dev/tty1 s 套接字文件,进程与进程间的一种通信方式(socket) l 链接文件 -
有些情况下,无法通过 ls -l 确定文件的类型,需要使用 file 命令来更加精准的判断文件的类型
-
linux的文件扩展名不代表任何含义,仅为了我们能更好的识别该文件是什么类型
-
-
linux链接文件
命令
-
# ls选项: # -d: 查看目录本身的属性; # -i: 查看文件或目的innode; # -h:以人性化的方式显示文件大小的单位;默认是字节 #file 查看文件类型
Inode与Block
- 文件有文件名和数据,在linux上被分成两个部分:数据 data 与 文件元数据 metadata
- 数据 data block ,数据块是用来记录文件真实内容的地方,我们将其称为 Block
- 元数据 metadata ,用来记录文件大小、创建时间、所有者等信息,我们将其称为 Inode
- 需要注意:Inode并不包含文件名称,inode仅包含文件的元数据信息,具体来说有以下内容:
- 文件的字节数
- 文件的UserID GroupID
- 文件的读、写、执行权限
- 文件的时间戳
- 链接数,既有多少文件名指向这个Inode
- 文件数据block的位置
- 每个 inode 都是一个编号,操作系统是通过inode来识别不同的文件
- 对于系统来说,文件名只是inode便于识别的别名
- 表面上,用户是通过文件名打开的文件,实际上系统内部这个过程分为如下三步
- 首先,系统找到这个文件名相对应的inode编号
- 其次,通过inode编号,获取inode信息
- 最后,根据inode信息,找到文件数据所在的block,读出数据
软链接
- 软连接相当于Windows的快捷方式,软连接文件会将inode指向源文件的block,访问软连接文件时,其实访问的是源文件本身
- 软连接使用场景
- 软件升级
- 代码发布
- 使用 ln -s 创建软连接
硬链接
-
对于硬连接的解释:不同的文件名指向同一个inode,简单的说就是指向同一个真实的数据源
-
使用 ln 创建硬链接
-
硬链接和软连接的区别
- ln 创建硬链接,ln -s 命令创建软连接
- 目录不能创建硬链接,并且硬链接不可以跨越分区系统
- 软连接支持对目录创建,同事也支持跨越分区系统
- 硬链接文件与源文件的inode相同,软链接文件与源文件inode不同
- 删除软连接文件,对源文件及硬链接文件无任何影响
- 删除文件的硬链接文件,对源文件及链接文件无任何影响
- 删除链接文件的的源文件,对硬链接无影响,会导致软连接失效
- 删除源文件以及硬链接文件,整个文件会被真正的删除
vim与vi编辑器
什么是vim
- vim和vi都是文本编辑器,只不过vim是vi的增强版,比vi多了语法高亮显示,其他编辑功能几乎无差,最小安装是没有vim的命令,可以使用yum install vim 进行安装
vim的模式:
普通模式:
-
主要是控制光标移动,可对文本进行复制、粘贴、删除等工作
-
常用的快捷键:
-
-gg:光标跳转至顶端,Ngg:光标跳转至当前文件内的N行 -G:光标跳转至末端 -yy:复制当前光标所在的行,Nyy 复制当前光标以及向下N行 -p:(小写P)粘贴至当前光标的下一行;(大写P)粘贴至当前光标上一行 -dd: 删除当前光标的所在行 -r: 替换一次;一次仅替换一个字符 -R:连续替换,直到按下ESC才终止替换操作
-
编辑模式:
-
主要进行文本内容编辑和修改
-
常用的快捷键:
-
-i:进入编辑模式 -a:进入编辑模式,将当前光标往后移一位 -o:进入编辑模式,便在当前光标下添加一行空白内容 -A:进入编辑模式同时,光标转至本行的行尾
-
末行模式:
-
主要用于保存或者退出文本
-
常用的快捷键:
-
:wq 先保存,在退出 :wq!强制保存并退出 :q!强制退出文档不会修改当前内容 :set nu 显示行号 替换: %s#old#new#g %:全文替换 1,10s###g 1到10行都替换 查找: /string(要查找的内容) n下翻;N上翻
-
视图模式:
-
从普通模式进入视图模式,主要进行批量操作
-
ctrl+v 进入可视化模式,选中需要注释的行 1.插入:按shift+i进入编辑模式,输入#,结束按ESC健 2.删除:选中内容后,按x或者d键删除 3.替换:选中需要替换的内容,按下r键,然后输入替换后的内容 shift+v 进入可视化模式,选中整行内容 1.复制:选中行内容后按y键即可复制 2.删除:选中行内内容后按d键删除
-
vim编辑打开文件整体流程如下:
- 默认打开文件处于普通模式
- 从普通模式切换至编辑模式需要使用a、i、o
- 编辑模式修改完毕后需要先使用ESC返回普通模式
- 在普通模式输入“:”或者"/"进入末行模式,可实现文件的保存与退出
- 无法直接从编辑模式切换到末行模式
用户管理和权限管理
用户管理
linux的用户与用户组
用户
-
什么是用户,用户的作用
- 用户指的是能够正常登录linux或者Windows系统
- 用户的作用:
- 系统上的每一个进程(运行的程序),都需要一个特定的用户运行
- 通常在公司是使用普通用户管理服务器,因为root权限过大,容易造成故障;
-
用户的分类
-
用户UID 系统中约定的含义 0 超级管理员,最高权限,有着极强的破坏能力 1~200 系统用户,用来运行系统自带的过程,默认已创建 201~999 系统用户,用来运行用户安装的程序,所以此类用户无需登录系统 1000+ 普通用户,正常可以登录系统的用户,权限比较小,能执行的任务有限
-
-
相关配置文件
-
创建新用户时,系统会将用户的信息存放
/etc/passwd
中,而密码是存在/etc/shadow
中,不可以轻易删除与修改 -
/etc/passwd 重要内容说明
-
[root@Centos ~]# tail -1 /etc/passwd nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin #nfsnobody 用户名称 # x 密码占位符 # 65534 用户UID # 65534 组GID #Anonymous NFS User 注释信息 # /var/lib/nfs 用户家目录 #/sbin/nologin 登录shell
-
-
-
相关操作命令
-
查询用户ID信息
-
[root@Centos ~]# id uid=0(root) gid=0(root) 组=0(root) [root@Centos ~]# id root uid=0(root) gid=0(root) 组=0(root)
-
-
添加用户
-
# useradd 添加用户 #选项 # -u 指定创建用户的UID,不允许冲突 #-g 指定要创建用户的基本组 #-G 指定要创建用户的附加组 # -d 指定要创建用户家目录 #-s 指定要创建用户的bash shell #-c 指定要创建用户注释信息 # -M 创建的用户不给创建家目录 #-r 创建系统目录,默认无家目录 #创建 Redis用户,用户ID为6699,基本组为Demo,附加组为Demo-test 注释信息为 Redis Test 登录shell: /bin/bash [root@Centos ~]# groupadd Demo #创建组 [root@Centos ~]# groupadd Demo-test #创建附加组 [root@Centos ~]# useradd -u 6699 -g Demo -G Demo-test -c "Redis Test" -s /bin/bash Redis [root@Centos ~]# tail -1 /etc/passwd Redis:x:6699:1000:Redis Test:/home/Redis:/bin/bash #创建mysql系统用户,该用户不需要家目录,该用户不需要登录系统 [root@Centos ~]# useradd -r -s /sbin/nologin mysql [root@Centos ~]# tail -1 /etc/passwd mysql:x:997:995::/home/mysql:/sbin/nologin [root@Centos ~]# useradd -r dba -M -s /sbin/nologin mysql
-
-
修改用户
-
#usermod修改用户 #选项 -u 指定修改用户的UID; #-g 指定修改用户的基本组; #-a append 把用户追加到某些组里,仅与-G选项一起使用 #-G指定要修改用户附加组,使用逗号隔间开多个附加组,覆盖原有的附加组; #-d 指定要修改用户的家目录; #-s 指定要修改用户的bash shell; #-c 指定修改用户注释信息; #-l 指定要修改用户的登录名; #-L 指定要锁定的用户; #-U 指定要解锁的用户; #修改Redis用户,uid为5008 基本组为network,附加组为ops,dev,sa , 注释信息为 redis ,登录名称为new_Redis [root@Centos ~]# usermod Redis -u5008 -c "student" -g network -G ops,dev,sa -l new_Redis [root@Centos ~]# id new_Redis uid=5008(new_Redis) gid=1002(network) 组 =1002(network),1003(sa),1004(ops),1005(dev) [root@Centos ~]# cat /etc/passwd | grep "new_Redis" new_Redis:x:5008:1002:student:/home/Redis:/bin/bash
-
-
删除用户
-
#userdel 删除用户,连同家目录一起删除 #选项 -r 使用者目录下的档案一并移除,在其他位置上的档案也将一一找出并删除 [root@Centos ~]# userdel -r mysql [root@Centos ~]# cat /etc/passwd | grep mysql [root@Centos ~]#
-
-
用户设密码:
-
创建用户后,如需要使用该用户进行远程登录系统则需要为用户设定密码,设定密码使用
passwd
-
普通用户只允许变更自己的密码,无法修改其他人密码,并且密码长度必须是8位字符
-
管理员用户允许修改任何人的密码,无论面长度多长或多短
-
交互式设定密码
-
[root@Centos ~]# passwd Demo
-
-
非交互式设定密码
-
[root@Centos ~]# echo "12345" |passwd --stdin new_Redis 更改用户 new_Redis 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@Centos ~]# echo $(mkpasswd -l 10 -d 2 -c 2 -C 2 -s 4) | tee pass.txt|passwd --stdin new_Redis #创建随机密码保存在pass.txt文件中 #tee:用来将标准输入的内容输出到标准输出并可以保存为文件
-
-
-
用户组
-
什么是用户组,作用是什么
- 组是一种逻辑层面的定义
- 逻辑上将多个用户归纳至一个组,当我们对组操作,实际上就是在对组中的所有用户进行操作
-
组有几种分类
- 默认组:创建用户时不指定组,则默认创建于用户同名的组;
- 基本组:用户有且只能有一个基本组,创建时可通过-g指定
- 附加组:用户可以有多个附加组,创建时通过—G指定
-
相关配置文件
-
组账户信息保存在
/etc/group
和/etc/gshadow
两个文件中,其中/etc/gshadow
不太重要 -
/etc/group 文件解释
-
[root@Centos ~]# tail -1 /etc/group dev:x:1005:new_Redis dev 组的名称 x 组的密码 1005 组GID new_redis 显示附加组,不显示基本成员
-
-
-
相关操作命令
-
添加组
-
#groupadd 添加用户组 #选项 -f 如果组已经存在,会提示成功创建的状态 #-g 为新组设置GID,若GID已经存在会提示GID已经存在 #-r 创建一个系统组 #添加一个 Test1 的组,为组设定gid为10000 [root@Centos ~]# groupadd -g 10000 Test1 [root@Centos ~]# cat /etc/group | grep Test1 Test1:x:10000: #添加一个 Test2 的组,添加为系统组 [root@Centos ~]# groupadd -r Test2 [root@Centos ~]# cat /etc/group | grep Test2 Test2:x:995:
-
-
修改组
-
#groupmod 修改组 选项:-f 如果组已经存在,会提示成功创建的状态 -g 为新组设置GID,若GID已经存在会提示GID已存在 -r 修改为系统组 -n 改名为新的组 #修改 Test1 用户组组名为 system [root@Centos ~]# groupmod -n system Test1 [root@Centos ~]# tail -1 /etc/group system:x:10000: #修改用户组的GID为5000 [root@Centos ~]# tail -1 /etc/group system:x:5000:
-
-
删除组
-
#groupdel 删除用户组 #删除system用户组 [root@Centos ~]# groupdel system [root@Centos ~]# tail -1 /etc/group Test2:x:995:# 最后一行不是system用户组
-
综合练习,用户和组
-
#创建 dev 和 ops 两个组 #创建bob用户,设定基本组为dev,密码是123 #创建alice用户,设定基本组为ops,密码是123 #创建/opt/reosurce文件,然后修改属组为ops、权限为664 #测试发现alice用户可以读写,而bob用户仅可以查看 #现在希望bob也能够对文件进行读写,如何快速实现 [root@Centos ~]# groupadd dev [root@Centos ~]# groupadd ops [root@Centos ~]# useradd -g dev bob [root@Centos ~]# echo "123" | passwd --stdin bob 更改用户 bob 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@Centos ~]# useradd -g ops alice [root@Centos ~]# echo "123" | passwd --stdin alice 更改用户 alice 的密码 。 passwd:所有的身份验证令牌已经成功更新。 [root@Centos ~]# touch /opt/reosurce [root@Centos ~]# echo "ceshi" >/opt/reosurce [root@Centos ~]# chgrp ops /opt/reosurce #设置属组为ops [root@Centos ~]# chmod 664 /opt/reosurce #设置权限为644 [root@Centos ~]# su - alice [alice@Centos ~]$ echo "alice-ceshi" >> /opt/reosurce [alice@Centos ~]$ cat /opt/reosurce ceshi alice-ceshi [alice@Centos ~]$ su - bob 密码: 上一次登录:日 3月 20 16:49:59 CST 2022pts/0 上 [bob@Centos ~]$ echo "ceshi-bob" >> /opt/reosurce -bash: /opt/reosurce: 权限不够 [bob@Centos ~]$ cat /opt/reosurce ceshi alice-ceshi #现在bob用户只能查看/opt/resource 的文件内容不能修改,所以将bob的附加组加入ops就可以修改此文件 [root@Centos ~]# usermod bob -G ops [root@Centos ~]# id bob uid=5010(bob) gid=1004(dev) 组=1004(dev),1005(ops) [alice@Centos ~]$ su - bob 密码: 上一次登录:日 3月 20 16:55:37 CST 2022pts/0 上 [bob@Centos ~]$ echo "ceshi-bob" >> /opt/reosurce [bob@Centos ~]$ cat /opt/reosurce ceshi alice-ceshi ceshi-bob
-
-
-
用户提权
- 为什么要提权
- 往往公司的服务器对外都是禁止
root
用户直接登录,所以我们通常使用的都是普通用户,当时用/sbin
目录下的命令时没有权限,所以需要对普通用户进行提权操作
- 往往公司的服务器对外都是禁止
- 提权的操作命令
su 身份切换
:- 使用普通用户登录,然后使用
su
切换到root
- 但是需要知道root密码
su - username
属于登录式shell
su username
属于非登录式shell
- su su - 最大的区别就在于
加载的环境变量``不一样
- su su - 最大的区别就在于
- 使用普通用户登录,然后使用
sudo
提权,当需要使用root
权限时进行提权,无需切换至root
用户- 快速配置sudo方式:
- 将用户加入
wheel
组,默认wheel
组有sudo
权限 - 可以通过 /var/log/secure 文件查看有sudo权限的用户都执行了什么操作
- 将用户加入
- 快速配置sudo方式:
- shell登录分类与加载顺序
- 登录
shell
需要输入用户名和密码才能进入shell
日常接触的最多的一种 - 非登录
shell
不需要输入用户名和密码就能进入shell
,比如运行bash
会开启一个新的会话窗口 - 环境变量配置文件
- profile类文件:设定环境变量,登录前运行的脚本和命令
- bashrc类文件:设定本地变量,定义命令别名
- 用户配置文件:
~/.bash_profile
~/.bashrc
- 全局环境变量:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
- 登录式
shell
配置文件加载顺序: /etc/profile --> /etc/profile.d/* .sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
- 非登录式
shell
配置文件加载顺序:/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
- 登录
linux的权限
基础权限
什么是权限
- 权限是用来约束用户能对系统所做的操作
- 权限是指某个特定的用户具有特定的系统资源使用权力
需要权限的原因
- 安全性:降低误删除风险、减少人为造成故障以及数据泄露等风险
- 数据隔离:不同的权限能看到、以及操作不同的数据
- 职责明确:不同场景不同职责可以查看对应的内容
权限对文件和目录的影响:
-
权限 对文件的影响 对目录的影响 r 具有读取\阅读文件内容权限 具有浏览目录以及子目录 w 具有新增、修改文件内容的权限 具有增加和删除目录内的文件 x 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权限)
权限的关系
-
权限与用户的关系
-
权限是用来定义用户能做什么,不能做什么的规则
- 针对文件定义了三种身份,分别是
属主owner
、属组group
、其他人others
- 每种身份对应三种权限 。
读read
、写write
、执行excute
- 针对文件定义了三种身份,分别是
-
当一个用户访问文件流程如下:
- 判断用户是否是属主,如果是则按属主权限进行访问
- 判断用户是否为文件属组,如果是则按属组权限进行访问
- 如果不是文件属主,也不是该文件属组,则按其他人权限进行访问
-
rwx的含义
- rwx分别是读写执行。属主,属组,其他都对应这三个权限,用十进制表示就是
421---->> rwx
- rwx分别是读写执行。属主,属组,其他都对应这三个权限,用十进制表示就是
-
修改文件权限
-
修改权限的意义:
赋予某个用户或组 -----> 能够以(读写执行)操作文件
-
修改权限使用chmod命令:
-
对于root用户而言,可以修改任何人的文件权限;对于普通用户仅仅只能变更属于自己的文件权限
-
两种方式修改权限
-
UGO
-
给
a u g o
赋予rwx
权限 ,-
为减去augo
的某个权限 -
chmod a=rwx file_Demo #给所有用户和组添加读写执行文件的权限 chnod u=rwx,go=w file_Demo #给文件所属者添加所有权限,所属组和其他人只有读的权限
-
-
NUM
-
用
rwx的十进制
赋予权限,所有人拥有读写执行的权限为777
-
#rwxr--r-- chmod 744 file1 #rw-rw-rw- chmod 666 file2 #rwx--x--x chmod 711 file3 #rw------- chmod 600 file4
-
-
-
-
-
文件权限总结
- 读取权限:具有读取\阅读文件内容权限
- 只能使用的命令有:
cat head tail less more
- 只能使用的命令有:
- 写入权限:具有新增、修改文件内容的权限
- 使用
vim
会提示权限拒绝,但可强制保存,会覆盖文件的所有内容 - 使用
echo
命令重定向的方式可以往文件中写入数据,>>
可以追加内容 - 使用
rm
无法删除文件,因为删除文件需要看上级目录是否有w
的权限
- 使用
- 执行权限:具有执行文件的权限
- 普通用户需要执行文件,需要配合
r
权限
- 普通用户需要执行文件,需要配合
- 读取权限:具有读取\阅读文件内容权限
-
文件权限设定小结:
-
文件
r
权限 ,只给用户查看,无其他操作 -
文件
rw
权限,可以查看和编辑文件内容 -
文件
rx
权限,允许查看和执行文件、但不能修改文件 -
文件
rwx
权限,能读、能写、能执行、不能删除; -
默认系统设定的文件安全权限:
644
-
-
-
权限与目录的关系
-
目录权限总结
- 读取权限:具有浏览目录以及子目录权限
- 使用
ls
命令浏览目录及子目录,但同时也会提示权限拒绝 - 使用
ls -l
命令浏览目录以及子目录,文件属性会带问号,并且只能看到文件名
- 使用
- 写入权限:具有增加、删除或者修改目录内文件名权限,需要x权限配合
- 可以再目录内创建文件,删除文件(跟文件本身权限无关)
- 不能进入目录、复制目录、删除目录、移动目录等
- 执行权限:具有执行问价的权利
- 只能进入目录
- 不能浏览、复制、移动、删除
- 读取权限:具有浏览目录以及子目录权限
-
目录权限设定小结
- 目录
rx
权限,允许浏览目录内文件以及子目录,不允许在该目录下创建文件、删除文件 - 目录
rw
权限,能查看目录,能往目录写入文件,但无法进入目录,不太长用 - 默认系统设定的目录安全权限:
755
- 目录
-
修改文件所属关系
- 修改文件所属关系常用的操作:
chown(change owner)
能变更文件的属主和属组chgrp (change group)
仅能变更文件的属组- -R 递归处理所有的文件以及子目录
特殊权限
什么是特殊权限
- 特殊权限是为了更加规范文件和目录的操作,让其更加具备安全性
三种特殊权限
-
SUID
:SetUID,也就是在属主的权限位的执行权限上是s
,当一个执行文件设置SetUID后,用户在执行这个文件时将以文件所有者的身份来执行-
SUID配置语法
-
chmod u+s /usr/bin/cat chmod 4755 /usr/cat
-
-
SUID作用总结
- 让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限
- 如果设置的二进制文件没有执行权限,那么
suid
的权限显示就是大 S
; - 特殊权限
suid
仅对二进制可执行程序有效,其他文件或目录则无效 suid
相对危险,不建议
对vim 或 rm 进行 suid
设定操作
-
-
SGID
-
SGID
设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行改命令 -
设置在目录上,这时在创建新文件或者目录时会自动继承父目录的属组
-
语法配置
-
chmod g+s /dir chmod 2755 /dir
-
-
-
SBIT
-
一旦目录被赋予粘滞位,除了
root
可以删除目录中的所有文件,普通用户对该目录就算拥有w
权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件 -
SBIT的配置
-
chmod 1755 /tmp chmod o+t /tmp
-
-
SBIT作用总结
- 让所有普通用户对该目录具有写入权限,并且能实现每个用户只能删自己的文件
- 粘滞位目录表现在
others
的x
位,用t
表示,如果没有执行权限则显示为T
- 粘滞位目录的属主以及
roo
t 用户有权限删除目录中的内容,其他用户无权限删除
-
文件特殊属性
什么是特殊属性,作用是什么
- 创建一个文件,不允许被修改删除移动,root也不行
- 创建一个文件,仅允许往文件里面追加数据,不允许修改移动删除
- 凌驾于rwx属性之上
配置特殊属性
-
#chattr 配置特殊属性 #chattr [+-=] [选项] 文件或目录名 #选项: #a:可对文件进行追加内容; #i:锁定文件,不允许其他操作 #取消特殊权限,必须是root用户 chattr +i /etc/passwd #设置此文件不允许其他其操作 chattr +a /var/log/secure #设置文件至允许追加
本文来自博客园,作者:小幸福Y,转载请注明原文链接:https://www.cnblogs.com/ljinw/p/16099078.html