Linux(从入门到精通)
Linux概述
Linux内核最初只是由芬兰人林纳斯·托瓦兹1991年在赫尔辛基大学上学时出于个人爱好而编写的。
Linux特点
首先Linux作为自由软件有两个特点:一是它免费提供源代码,二是爱好者可以根据自己的需要自由修改、复制和发布源码
Linux的各个发行版本
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
- Red Hat Linux
- Ubuntu Linux 界面 桌面系统
- SuSE Linux
- Gentoo Linux
- 其他 Linux 发行版
Linux应用领域
- IT服务器
- 嵌入式
- 个人桌面
Linux和Windows区别
目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。
主要区别如下
实时效果反馈
1. 下面发行版本中,不是Linux
的是:
A Ubantu
B Debian
C Centos
D windows
2. Linux
内核1.0的发布时间:
A 1991
B 1993
C 1992
D 1994
答案
1=>D 2=>A
Linux下载安装
安装VMWare虚拟机
VMware是一个老牌的虚拟化软件。虚拟机指通过
软件
模拟的具有完整硬件
系统功能的、运行在一个完全隔离环境中的完整。
下载CentOS
进入Centos官网找要下载的版本Index of /
如需遇到下载慢可以访问阿里镜像地址
centos-vault安装包下载_开源镜像站-阿里云
安装CentOS
实时效果反馈
1. 安装Linux系统使用哪个虚拟化软件进行安装__。
A VMware
B Idea
C VSCode
D pycham
2. Linux安装时下面哪一种说法不正确的是。
A 在安装了windows的计算机上,可以再安装一个Linux系统
B 在安装了Linux的计算机上,可以再安装一个Linux系统
C 虚拟机中只能安装一台Linux系统
D 安装Linux时需要先下载Centos的镜像文件
答案
1=>A 2=>C
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不行
实时效果反馈
1. Linux系统中_____网络模式最安全。
A Nat
B 主机
C 桥接
D ssh
2. Linux系统中想访问同事电脑虚拟机中的Mysql服务使用__网络模式。
A Nat
B 主机
C 桥接
D ssh
答案
1=>B 2=>C
Linux 远程登录
配置Nat网络模式
网络规划:
网关配置: 192.168.66.1
虚拟机ip:192.168.66.100
主机中vmnet8:192.168.66.10
设置虚拟交换机网关
管理员授权
设置子网打开NAT设置
设置网关
配置vmware8网卡
设置IPV4
配置网络和DNS服务
登录到Linux编辑网卡文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改为静态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 restart
设置XShell连接
连接主机
实时效果反馈
1. Linux系统中远程连接通过___服务实现的远程登录功能。
A NetWork
B httpd
C SSH
D CDMA
2. Linux系统配置NAT网络模式时,为什么要配置本机VMware8的网卡。
A 网速会变快
B 主机和虚拟机之间通信
C 激活网卡
D 配置动态IP
答案
1=>C 2=>B
Linux系统目录结构
文件系统组织结构
- /lib
系统开机所需要最基本的动态链接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
- /lost+found
一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /etc
所有系统管理所需要的配置文件和子目录。my.conf
- /usr
用户的很多应用程序和文件都放在这个目录下。
- /bin
是Binary的缩写,这个目录存放着经常使用的命令
- /sbin (usr/sbin、/usr/local/sbin)
sbin就是per user的意思,这里存放的是系统管理员使用的系统管理程序
- /home
存放普通用户的主目录,在Linux中的每个用户都有一个自己的目录,一般该目录一用户的账号名命名
- /root
该目录为系统管理员,超级权限者的用户目录
- /boot
存放的启动Linux时使用的一些核心文件,包括一些链接文件和镜像文件
- /proc
虚拟目录,是系统内存的映射,访问这个目录来获取系统信息。
- /srv
service 的缩写,该目录是存放一些服务启动之后需要提取的数据
- /sys
Linux2.6内核的一个很大变化,该目录安装了2.6内核中新出现的一个文件系统
- /tmp
存放临时文件
- /dev
类似于 windows的设备管理器,把所有的硬件用文件的形式存储
- /media
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
- /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。d:/ myshare
- /opt
这是给主机额外安装软件所摆放的目录。如安装 ORACLE数据库就可放到该目录下。默认为空。
- /usr/local
这是另个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
- /var
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件。
- /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 的预设放置也是在这里。
实时效果反馈
1. 创建新用户之后,该用户的家目录在___目录内。
A /home
B /root
C /share
D /usr
2. Linux系统中哪个是根目录。
A /
B /etc
C /usr
D /tmp
答案
1=>A 2=>A
Linux用户和用户组
用户管理概述
Linux是一个多用户、多任务的操作系统。
用户账号和用户组
用户概念
通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)
用户组概念
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;
Linux用户和组的关系
用户和用户组的对应关系有以下 4 种:
- 一对一:一个用户可以存在一个组中,是组中的唯一成员;
- 一对多:一个用户可以存在多个用户组中,此用户具有这多个组的共同权限;
- 多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限;
- 多对多:多个用户可以存在多个组中,也就是以上 3 种关系的扩展。
实时效果反馈
1. Linux系统中超级管理员是____。
A root
B baizhan
C etc
D home
2. Linux是一个_____系统。
A 多用户多任务
B 多用户单任务
C 单用户单任务
D 单用户多任务
答案
1=>A 2=>A
Linux用户管理
Linux 系统的管理员之所以是 root,是因为该用户的身 份号码即 UID的数值为 0,UID 就相当于我们的身份证号码一样具有唯一性,因此可通过用户的 UID 值来判断用户身份。
- 管理员 UID 为 0:系统的管理员用户。
- 系统用户 UID 为 1~999: Linux 系统为了避免因某个服务程序出现漏洞而被黑客提 权至整台服务器,默认服务程序会有独立的系统用户负责运行,进而有效控制被破坏 范围。
- 普通用户 UID 从 1000 开始:是由管理员创建的用于日常工作的用户。 需要注意的是,UID 是不能冲突的,而且管理员创建的普通用户的 UID 默认是从 1000 开始的(即使前面有闲置的号码)。
添加用户 useradd
语法:
useradd (选项)(参数)
选项
-d 指定用户的家目录(默认为/home/username)
-e 账户的到期时间,格式为 YYYY-MM-DD.
-u 指定该用户的默认 UID
-g 指定一个初始的用户基本组(必须已存在)
-G 指定一个或多个扩展用户组
-N 不创建与用户同名的基本用户组
-s 指定该用户的默认 Shell 解释器
参数
用户名:要创建的用户名。
示例 1
下面我们创建一个普通用户并指定家目录的路径、用户的 UID 以及 Shell 解释器。在下 面的命令中,请注意/sbin/nologin,它是终端解释器中的一员,与 Bash 解释器有着天壤之别。 一旦用户的解释器被设置为 nologin,则代表该用户不能登录到系统中:
[root@itbaizhan ~] # useradd -d /home/linux -u 8888 -s /sbin/nologin linuxprobe[root@itbaizhan ~] # id linuxprobeuid = 8888(linuxprobe) gid = 8888(linuxprobe) groups = 8888(linuxprobe)
修改用户 usermod
有些时候不小心在useradd的时候加入了错误的设定数据,此时我们当然可以直接到/etc/passwd或/etc/shadow中去修改相对应字段的数据。
语法
usermod (选项) (参数)
选项:
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
示例1
来看一下账户 linuxprobe 的默认信息:
id linuxprobeuid=1000(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe)
然后将用户 linuxprobe 加入到 root 用户组中,这样扩展组列表中则会出现 root 用户组的 字样,而基本组不会受到影响:
[root@itbaizhan ~]# usermod -G root linuxprobe[root@itbaizhan ~]# id linuxprobeuid=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 linuxprobeuid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)
用户账号口令管理
passwd 命令用于修改用户密码、过期时间、认证信息等。
语法
passwd (选项) (参数)
选项:
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
示例1
用root帮linuxpro修改密码
passwd linuxpro
示例2
假设您有位同事正在度假,而且假期很长,那么可以使用 passwd 命令禁止该用户登录系统,等假期结束回归工作岗位时,再使用该命令允许用户登录系统,而不是将其删除。 这样既保证了这段时间内系统的安全,也避免了频繁添加、删除用户带来的麻烦。
[root@itbaizhan ~]# passwd -l linuxprobeLocking password for user linuxprobe.passwd: Success[root@itbaizhan ~]# passwd -S linuxprobelinuxprobe LK 2017-12-26 0 99999 7 -1 (Password locked.)[root@itbaizhan ~]# passwd -u linuxprobeUnlocking password for user linuxprobe.passwd: Success[root@itbaizhan ~]# passwd -S linuxprobelinuxprobe PS 2017-12-26 0 99999 7 -1 (Password set, SHA512 crypt.)
删除用户 userdel
userdel 命令用于删除用户
语法:
userdel [选项] 用户名
选项:
-f 强制删除用户
-r 同时删除用户及用户家目录
这个命令的目的删除用户,与它相关的文件有:
- /etc/passwd
- /etc/shadow
- /home/username
语法:
[root@localhost~]#userdel [-r] username
参数:
-r : 连同用户的家目录也一起删除。
示例1
下面使用 userdel 命令将 linuxprobe 用户删除,其操作如下:
[root@itbaizhan ~]# id linuxprobeuid=8888(linuxprobe) gid=1000(linuxprobe) groups=1000(linuxprobe),0(root)[root@itbaizhan ~]# userdel -r linuxprobe[root@itbaizhan ~]# id linuxprobeid: linuxprobe: no such user
实时效果反馈
1. 新增一个用户使用命令是__。
A usradd
B adduser
C addaccount
D useradd
2. Linux系统中如何查看用户信息
A id
B ls
C cd
D usermod
答案
1=>D 2=>A
Linux用户组管理
添加新组groupadd
语法
groupadd (选项) (参数)
选项
-g:指定新建工作组的id;
-r:创建系统工作组,系统工作组的组ID小于500;
-K:覆盖配置文件“/ect/login.defs”;
-o:允许添加组ID号不唯一的工作组。
示例1
建立一个新组,并设置组ID加入系统:
groupadd -g 334 bigdata
修改群组groupmod
语法
groupmod(选项)(参数)
选项
-g<群组识别码>:设置欲使用的群组识别码;
-o:重复使用群组识别码;
-n<新群组名称>:设置欲使用的群组名称。
示例1
把建立bigdata组改为bigdata2并设置GID改为506
groupmod -g 506 -n bigdata2 bigdata
删除群组groupdel
语法:
groupdel groupname
实时效果反馈
1. Linux系统创建用户组使用_____命令。
A groupadd
B addgroup
C groupmod
D groupdel
2. Linux系统删除用户组使用_____命令。
A groupadd
B addgroup
C groupmod
D groupdel
答案
1=>A 2=>D
Linux超级用户与伪用户
Linux下用户分为三类:超级用户、普通用户、伪用户
- 超级用户:用户名为root,具有一切管理权限,UID为0,可以创建多个管理员。
- 普通用户:在默认情况下,普通用户UID是介于500~6000;
- 伪用户:这些用户的存在是为了方便系统管理,满足相应的系统进程对文件属主的要求。伪用户不能够登录,他的ID值介于1~499。
用户身份切换
由于超级权限在系统管理中的不可缺少的重要作用,为了完成系统管理任务,必须用到超级权限。
su
su命令就是切换用户的工具。
语法
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
参数说明:
- -c command 或 --command=command 变更为帐号为 USER 的使用者并执行指令(command)后再变回原来使用者
- - -l 或 --login 这个参数加了之后,就好像是重新 login 为该使用者一样,大部份环境变数(HOME SHELL USER等等)都是以该使用者(USER)为主,并且工作目录也会改变,如果没有指定 USER ,内定是 root
示例1
[root@itbaizhan ~]# iduid=0(root) gid=0(root) groups=0(root)[root@itbaizhan ~]# su - linuxprobeLast login: Wed Jan 4 01:17:25 EST 2017 on pts/0[linuxprobe@linuxprobe ~]$ iduid=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 [参数] 命令名称
参数:
-h 列出帮助信息
-l 列出当前用户可执行的命令
-u 用户名或 UID 值 以指定的用户身份执行命令
-k 清空密码的有效时间,下次执行 sudo 时需要再次进行密码验证
-b 在后台执行指定的命令
-p 更改询问密码的提示语
总结
sudo 命令具有如下功能:
- 限制用户执行指定的命令:
- 记录用户执行的每一条命令;
- 配置文件(/etc/sudoers)提供集中的用户管理、权限与主机等参数;
- 验证密码的后 5 分钟内(默认值)无须再让用户再次验证密码。
编辑配置文件命令: visudo 来配置用户权限。
按照下 面的格式将第 99 行(大约)填写上指定的信息:
谁可以使用 允许使用的主机=(以谁的身份) 可执行命令的列表
注意:
编辑sudo的配置文件/etc/sudoers是一般不要直接使用vi(vi /etc/sudoers)去编辑,因为sudoers配置有一定的语法,直接用vi编辑保存系统不会检查语法,如有错也保存了可能导致无法使用sudo工具,最好使用visudo命令去配置。虽然visudo也是调用vi去编辑,但是保存时会进行语法检查,有错会有提示。
示例1
配置baizhan拥有root的权限
visudobaizhan ALL=(ALL) ALL
示例2
在每次执行 sudo 命令后都会要求验证一下密码。
[root@location opt]$ touch a.info#切换用户[baizhan@location ~]# su baizhan#删除a.info文件[baizhan@location ~]# rm -rf a.inform: cannot remove ‘a.info/’: Permission denied[baizhan@location ~]# sudo rm -rf a.info