Linux概述
Linux特点
首先Linux作为自由软件有两个特点:一是它免费提供源代码, 二是爱好者可以根据自己的需要自由修改、复制和发布源码
Linux的各个发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打 包。
1、Red Hat Linux
2、Ubuntu Linux 界面 桌面系统
3、SuSE Linux
4、Gentoo Linux
5、其他 Linux 发行版
Linux应用领域
1、IT服务器
2、嵌入式
3、个人桌面
Linux和Windows区别
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。
主要区别如下
Linux下载安装
安装VMWare虚拟机
VMware是一个老牌的虚拟化软件。虚拟机指通过 软件 模拟的具 有完整 硬件 系统功能的、运行在一个完全隔离环境中的完整。
下载CentOS
进入Centos官网找要下载的版本https://vault.centos.org/
如需遇到下载慢可以访问阿里镜像地址
https://mirrors.aliyun.com/centos-vault/?spm=a2c6h.136
51104.0.0.5f6612b2O7Cy9G
安装CentOS
Linux三种网络配置
背景
A是本机,A1,A2是虚拟机,B是外部联网的机器(同事的电脑)
桥接模式
相当于在物理主机与虚拟机网卡之间架设了一座桥梁,从而可以通过物理主机的网卡访问外网。
注意: 桥接模式配置简单,但如果你的网络环境是ip资源很缺少或对ip管理比较严格的话。
bridge(桥接模式): A可以和A1,A2互通,A1,A2 -> B可以,B -> A1,A2可以
NAT
让 VM 虚拟机的网络服务发挥路由器的作用,使得通过虚拟机软件 模拟 的主机可以通过物理主机访问外网,在真机中 NAT 虚拟机网 卡对应的物理网卡是 VMnet8。
注意: 实际上VMware Network Adapter VMnet8的作用是为了实现虚 拟机和主机之间相互通信!
Nat(网络地址转换): A可以和A1,A2互通,A1,A2 -> B可以,B - > A1,A2不行
Host-only
仅让虚拟机内的主机与物理主机通信,不能访问外网,在真机中仅 主机 模式模拟网卡对应的物理网卡是 VMnet1。
注意: NAT和host-only 不会占用一个ip地址,只能和你的本机进行通 讯。NAT和host-only还有一个区别就是,host-only只能和你的 本机进行通讯,不可以访问。
host-only(主机模式): A可以和A1,A2互通,A1,A2 -> B不可以, B -> A1,A2不行
Linux 远程登录
配置Nat网络模式
设置虚拟交换机网关
管理员授权
设置子网打开NAT设置
设置网关
配置vmware8网卡
设置IPV4
配置网络和DNS服务
登录到Linux编辑网卡文件
vim /etc/sysconfig/network-scripts/ifcfgens33
#修改为静态ip地址
#BOOTPROTO=none
BOOTPROTO=static
#修改为开机自启动网卡
#ONBOOT=NO
ONBOOT=yes
#配置ip
IPADDR=192.168.66.100
NETMASK=255.255.255.0
GATEWAY=192.168.66.1
DNS1=223.5.5.5
DNS2=223.6.6.6
# 保存退出 :wq
# 重启网卡 service network restar
设置XShell连接
连接主机
Linux系统目录结构
文件系统组织结构
1、/lib
系统开机所需要最基本的动态链接共享库,其作用类似于 Windows里的DLL文件。几乎所有的应用程序都需要用到这些 共享库。
2、/lost+found
一般情况下是空的,当系统非法关机后,这里就存放了一些文 件。
3、/etc
所有系统管理所需要的配置文件和子目录。my.conf
4、/usr
用户的很多应用程序和文件都放在这个目录下。
5、/bin
是Binary的缩写,这个目录存放着经常使用的命令
6、/sbin (usr/sbin、/usr/local/sbin)
sbin就是per user的意思,这里存放的是系统管理员使用的系统 管理程序
7、/home
存放普通用户的主目录,在Linux中的每个用户都有一个自己的 目录,一般该目录一用户的账号名命名
8、/root
该目录为系统管理员,超级权限者的用户目录
9、/boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和 镜像文件
10、/proc
虚拟目录,是系统内存的映射,访问这个目录来获取系统信 息。
11、/srv
service 的缩写,该目录是存放一些服务启动之后需要提取的数 据
12、/sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现 的一个文件系统
13、/tmp
存放临时文件
14、/dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
15、/media
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别 后,Linux 会把识别的设备挂载到这个目录下。
16、/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可 以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的 内容了。d:/ myshare
17、/opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据 库就可放到该目录下。默认为空。
18、/usr/local
这是另个给主机额外安装软件所安装的目录。一般是通过编译 源码方式安装的程序。
19、/var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目 录放在这个目录下。包括各种日志文件。
20、/selinux [security-enhanced linux] 类似 360
Selinux是一种安全子系统,它能控制程序只能访同特定文件。
登录系统后,在当前命令窗口下输入命令:
ls /
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不 要误删除或者随意更改内部文件。
/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
Linux用户和用户组
用户管理概述
Linux是一个多用户、多任务的操作系统。
用户账号和用户组
用户概念
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户 (user)
用户组概念
用户组(group)就是具有相同特征的用户(user)的集合体; 比如有时我们要让多个用户具有相同的权限,比如查看、修改 某一文件或执行某个命令,这时我们需要用户组,我们把用户 都定义到同一用户组,我们通过修改文件或目录的权限,让用 户组具有一定的操作权限,这样用户组下的用户对该文件或目 录都具有相同的权限,这是我们通过定义组和修改文件的权限 来实现的;
Linux用户和组的关系
Linux用户管理
Linux 系统的管理员之所以是 root,是因为该用户的身份号码即 UID的数值为 0,UID 就相当于我们的身份证号码一样具有唯一性, 因此可通过用户的 UID 值来判断用户身份。
添加用户 useradd
语法: useradd (选项)(参数)
参数
用户名:要创建的用户名。
示例 1
下面我们创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。在下面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。 一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中:
[root@itbaizhan ~]# useradd -d /home/linux -u
8888 -s /sbin/nologin linuxprobe
[root@itbaizhan ~]# id linuxprobe
uid=8888(linuxprobe) gid=8888(linuxprobe)
groups=8888(linuxprobe)
修改用户 usermod
有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。
语法:usermod (选项) (参数)
示例1
来看一下账户 linuxprobe 的默认信息:
id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe)
然后将用户 linuxprobe 加入到 root 用户组中,这样扩展组列表中 则会出现 root 用户组的 字样,而基本组不会受到影响:
[root@itbaizhan ~]# usermod -G root
linuxprobe
[root@itbaizhan ~]# id linuxprobe
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
再来试试用-u 参数修改 linuxprobe 用户的 UID 号码值。除此之 外,我们还可以用-g 参数 修改用户的基本组 ID,用-G 参数修改用 户扩展组 ID。
[root@linuxprobe ~]# usermod -u 8888
linuxprobe
[root@linuxprobe ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
用户账号口令管理
passwd 命令用于修改用户密码、过期时间、认证信息等。
语法:passwd (选项) (参数)
示例1
用root帮linuxpro修改密码
passwd linuxpro
示例2
假设您有位同事正在度假,而且假期很长,那么可以使用 passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该 命令允许用户登录系统,而不是将其删除。 这样既保证了这段时间 内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
[root@itbaizhan ~]# passwd -l linuxprobe
Locking password for user linuxprobe.
passwd: Success
[root@itbaizhan ~]# passwd -S linuxprobe
linuxprobe LK 2017-12-26 0 99999 7 -1
(Password locked.)
[root@itbaizhan ~]# passwd -u linuxprobe
Unlocking password for user linuxprobe.
passwd: Success
[root@itbaizhan ~]# passwd -S linuxprobe
linuxprobe PS 2017-12-26 0 99999 7 -1
(Password set, SHA512 crypt.)
删除用户 userdel
userdel 命令用于删除用户
语法:userdel [选项] 用户名
语法:[root@localhost~]#userdel [-r] username
参数:-r : 连同用户的家目录也一起删除。
示例1
下面使用 userdel 命令将 linuxprobe 用户删除,其操作如下:
[root@itbaizhan ~]# id linuxprobe
uid=8888(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe),0(root)
[root@itbaizhan ~]# userdel -r linuxprobe
[root@itbaizhan ~]# id linuxprobe
id: linuxprobe: no such user
Linux用户组管理
添加新组groupadd
语法:groupadd (选项) (参数)
示例1
建立一个新组,并设置组ID加入系统:
groupadd -g 334 bigdata
修改群组groupmod
语法:groupmod(选项)(参数)
示例1
把建立bigdata组改为bigdata2并设置GID改为506
groupmod -g 506 -n bigdata2 bigdata
删除群组groupdel
语法:groupdel groupname
Linux超级用户与伪用户
用户身份切换
由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统 管理任务,必须用到超级权限。
su
su命令就是切换用户的工具。
语法:su [-fmp] [-c command] [-s shell] [--help] [- -version] [-] [USER [ARG]]
示例1
[root@itbaizhan ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@itbaizhan ~]# su - linuxprobe
Last login: Wed Jan 4 01:17:25 EST 2017 on
pts/0
[linuxprobe@linuxprobe ~]$ id
uid=1000(linuxprobe) gid=1000(linuxprobe)
groups=1000(linuxprobe) context=unconfined_
u:unconfined_r:unconfined_t:s0-s0:c0.c1023
注意: 上面的 su 命令与用户名之间有一个减号(-),这意味着完全 切 换到新的用户,即把环境变量信息也变更为新用户的相应信 息,而不是保留原始的信息。强烈建议在切换用户身份时添加这个减号(-)。
sudo
Sudo 的全称为: super user do 。 顾名思义:干超级用户才能干的事! 所以Sudo最常用的功能就是提升一个命名的执行权限。
语法:sudo [参数] 命令名称
编辑配置文件命令: visudo 来配置用户权限。
示例1
配置baizhan拥有root的权限
visudo
baizhan ALL=(ALL) ALL
示例2
在每次执行 sudo 命令后都会要求验证一下密码。
[root@location opt]$ touch a.info
#切换用户
[baizhan@location ~]# su baizhan
#删除a.info文件
[baizhan@location ~]# rm -rf a.info
rm: cannot remove ‘a.info/’: Permission
denied
[baizhan@location ~]# sudo rm -rf a.info
这样,当切换到普通用户后再执行命令时,就不用再频繁地验证密 码了,我们在日常工 作中也就痛快至极了。
visudo
baizhan ALL=NOPASSWD: ALL
Linux文件基本属性
显示文件属性
ls命令
Linux ls(英文全拼:list files)命令用于显示指定工作目录下之内 容(列出目前工作目录所含之文件及子目录)。
语法:ls [参数]
文件与目录操作
Linux可以支持长达256个字符的文件名称,且文件名是区分大小写 的,“abc” 与 "ABC"所代表的是不同文件。
Linux文件类型
文件权限
所谓的文件权限,是指对文件访问权限,包括对文件的读、写、删 除、执行操作。Linux是一个多用户操作系统,它运行多个用户同时登陆和工作,因此Linux将一个文件或者目录与一个用户和组联系起来。
例如,我们以 root 的身份登陆 Linux,并执行如下指令:
[root@localhost ~]# ls -al
total 156
drwxr-x---. 4 root root 4096 Sep
8 14:06 .
drwxr-xr-x. 23 root root 4096 Sep
8 14:21 ..
解析:文件设定不同用户的读、写和执行权限,仅涉及到 9 位字符
Linux权限字与权限操作
改变所属群组chgrp
改变一个文件的群组很简单,直接用chgrp命令,这个命令是 change group的缩写。
语法:chgrp [-R] 属组名 文件名
改变文件属性chmod
Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。
文字设定法
基本上就九个权限分别是:
那么我们就可以使用 u, g, o 来代表三种身份的权限。 此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可以使用下表的方式来看:
语法: chmod [who] [+ | – | =] [mode]
数字设定法
我们必须首先了解用数字表示的属性的含义:
0表示没有权限,
1表示可执行权限,
2表示可写权限,
4表示可读权限,然后将其相加。
所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u) (g)(o)。 例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可 读)+2(可写)=6(读/写)。 先复习一下刚刚上面提到的数据:文件的权限字符为: - rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使 用数字来代表各个权限,各权限的分数对照表如下:
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要 累加的,例如当权限为:
- rwx r-- r-x
分数则是:
所以等一下我们设定权限的变更时,该文件的权限数字就是 770。 变更权限的指令 chmod 的语法是这样的:
chmod [-R] xyz 文件或目录
示例1
如果我们需要将文件权限设置为 - rwx r-x r-- 。
chomd 754 a.info
示例2
将 .bashrc 这个文件所有的权限都设定启用。
chmod 777 .bashrc
改变文件拥有者chown
更改文件属主,也可以同时更改文件属组
语法: chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
示例:
进入 /root 目录(~)将install.log的拥有者改为bin这个账号:
[root@itbaizhan ~] cd ~
[root@itbaizhan ~]# chown bin install.log
[root@itbaizhan ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53
install.log
将install.log的拥有者与群组改回为root:
[root@itbaizhan ~]# chown root:root
install.log
[root@itbaizhan ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53
install.log
Linux路径
路径,顾名思议,是指从树形目录中的某个目录层次到某个文件的 一条道路。 Linux系统中是从" / "开始的。
注意事项: 引入路径的概念的最终目的就是找到需要的目录或者文件。路径是由目录或者文件名构成。
绝对路径
绝对路径是指从“根”开始的路径。例如/usr/local,/etc/hosts,如果一 个路径是从“/”开始它一定是绝对路径。
注意: 绝对路径必须以 “/” 开头,它表示根目录。
相对路径
相对路径是以 “ . ” 或者 " .. "开始的。. 表示用户操作所处的位置 .. 表示上级目录。
在路径一些特殊符号的说明
Linux处理文件目录的常用命令
pwd (显示目前所在的目录)
pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。
[root@www ~]# pwd [-P]
选项与参数:
-P :显示出确实的路径,而非使用连结 (link) 路径。
pwd示例:
[root@itbaizhan ~]# pwd
/root <== 显示出目录啦~
注意: pwd -P 的选项后,会不以连结档的数据显示,而是显示正确的完整路径啊!
mkdir (创建新目录)
如果想要创建新的目录的话,那么就使用mkdir (make directory) 吧。
语法:mkdir [-mp] 目录名称
选项与参数:
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
mkdir示例
[root@itbaizhan ~]# cd /tmp
[root@itbaizhan tmp]# mkdir test <==创建一
名为 test 的新目录
[root@itbaizhan tmp]# mkdir
test1/test2/test3/test4
[root@itbaizhan ~]# mkdir -m 711 test2
rmdir (删除空的目录)
语法:rmdir [-p] 目录名称
选项与参数:
-p :从该目录起,一次删除多级空目录
删除 runoob 目录
rmdir示例:
[root@itbaizhan tmp]# rmdir itbaizhan/
cp (复制文件或目录)
cp 即拷贝文件和目录。copy的意思。
语法:
[root@itbaizhan ~]# cp [-adfilprsu] 来源档 目标档
选项与参数: -r:递归持续复制,用於目录的复制行为
cp示例:
[root@itbaizhan ~]# cp ~/.bashrc /tmp/bashrc
[root@itbaizhan ~]# cp -i ~/.bashrc
/tmp/bashrc
cp: overwrite `/tmp/bashrc'? n <==n不覆盖,y为
覆盖
rm (删除文件或者目录)
语法:
rm [-fir] 文件或目录
选项与参数:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-r :递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!
rm示例:
[root@www tmp]# rm -i bashrc
rm: remove regular file `bashrc'? y
如果加上 -i 的选项就会主动询问喔,避免你删除到错误的
档名!
mv (移动文件与目录,或修改名称)
语法:
[root@itbaizhan ~]# mv [-fiu] source
destination
[root@itbaizhan ~]# mv [options] source1
source2 source3 .... directory
选项与参数:
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
mv示例:
[root@itbaizhan ~]# cd /tmp
[root@itbaizhan tmp]# cp ~/.bashrc bashrc
[root@itbaizhan tmp]# mkdir mvtest
[root@itbaizhan tmp]# mv bashrc mvtest
Linux文件编辑工具vi/vim
vi/vim 的使用
vi或vim是Linux最常用的文本编辑器工具,vi或vim没有图形界面编辑器那样单机鼠标的简单操作,但vi编辑器在系统管理、服务器管理中,永远是图形界面的编辑器所不能比的。
基本上 vi/vim 共分为三种模式 :
1、命令模式(Command mode)
2、输入模式(Insert mode)
3、底线命令模式(Last line mode)
命令模式
用户刚刚启动 vi/vim,便进入了命令模式。 此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
输入模式
在命令模式下按下i、o、a就进入了输入模式。
在输入模式中,可以使用以下按键:
1、字符按键以及Shift组合,输入字符
2、ENTER,回车键,换行
3、BACK SPACE,退格键,删除光标前一个字符
4、DEL,删除键,删除光标后一个字符
5、方向键,在文本中移动光标
6、HOME/END,移动光标到行首/行尾
7、Page Up/Page Down,上/下翻页
8、Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
9、ESC,退出输入模式,切换到命令模式
底线命令模式
主要保存或者退出文件,以及设置Vim编辑器的工作环境,还可以 让用户执行外部的Linux命令或跳转所编写文档的特定行数。
shift+zz 保存退出
vi/vim 使用实例
编辑模式
在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法 编辑文件内容的! 要等到你按下『i, I, o, O, a, A, r, R』等任何一个字母之后才会进入 编辑模式。
常用语法
1)进入编辑模式 (1)i 当前光标前 (2)a 当前光标后 (3)o 当前光标行的下一行
2)退出编辑模式 按『Esc』键
指令模式
在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等动作是在此模式中达成的!
常用语法
1 基本语法
: 选项
w 保存
q 退出
! 感叹号强制执行
/ 查找,/被查找词,n是查找下一个,shift+n是往上查找
? 查找,?被查找词,n是查找上一个,shift+n是往下查找
示例:
:w 保存
:q 退出
:q! 强制退出(放弃对文档的修改内容)
:wq! 强制保存退出
:set nu 显示行号
:set nonu 不显示行号
:命令 执行该命令
:整数 跳转到该行