五、Linux 下获取帮助
- 没必要记住所有东西
- Linux 提供了极为详细的帮助工具及文档,一定要养成查帮助文档的习惯,可以大大减少需要记忆的东西并且提高效率
5.1、HELP
- 几乎所有命令都可以使用 -h 或 --help 参数获取使用方法、参数信息等。
5.2、MAN
- man 命令是 Linux 中最为常用的帮助命令,将要获取帮助的命令作为参数运行 man 命令就可以获取相应的文档帮助
- man 文档分为很多类型
部分 | 类型 |
---|---|
1 | 用户命令 |
2 | 内核参数调用 |
3 | 库函数 |
4 | 特殊文件和设备 |
5 | 文件格式和规范 |
6 | 游戏 |
7 | 规范、标准和其他页面 |
8 | 系统管理页面 |
9 | Linux 内核 API |
- man -k 关键字,可以用来查询包含该关键字的文档
5.3、INFO
- info 与 man 类似,但是提供的信息更为详细深入,以类似网页的形式显示
- info 与 man 一样都可以通过 “/+关键字” 方式进行搜索
5.4、DOC
- 很多程序、命令都带有详细的文档,以 TXT、 HTML、 PDF 等方式保存在 /usr/share/doc 目录中,这些文档是相应程序最为详尽的文档
六、用户及权限基础
6.1、Linux 用户基础
6.1.1 用户、组
- 当我们使用 Linux 时,需要以一个用户的身份登入,一个进程也需要以一个用户的身份运行,用户限制使用者或进程可以使用、不可以使用哪些资源。
- 组用来方便组织管理用户
- 每个用户拥有一个 UserID ,操作系统实际使用的是用户 ID ,而非用户名
- 每个用户属于一个主组,属于一个或多个附属组
- 每个组拥有一个 GroupID
- 每个进程以一个用户身份运行,并受该用户可访问的资源限制
- 每个可登录用户拥有一个指定的 shell
6.1.2 用户
- 用户 ID 为32位,从0开始,但是为了和老式系统兼容,用户 ID 限制在60000以下
- 用户分为以下三种:
- -root 用户:ID 为0的用户为 root 用户
- 系统用户:1~499
- 普通用户:500以上
- 系统中的文件都有一个所属用户及所属组
- 使用 id 命令可以显示当前用户的信息
- 使用 passwd 命令可以修改当前用户密码
6.1.3 相关文件
- /etc/passwd 保存用户信息
- /etc/shadow 保存用户密码(加密的)
- /etd/group 保存组信息
6.1.4 查看登录的用户
- 命令 whoami 显示当前用户
- 命令 who 显示有哪些用户已经登录系统
- 命令 w 显示有哪些用户已经登录并且在干什么
6.1.5 创建一个用户
- 命令 useradd 用以创建一个新用户
- useradd nash_su , 这个命令会执行以下操作:
- 1 在 /etc/passwd 中添加用户信息
- 2 如果使用 passwd 命令创建密码,则将密码加密保存在 /etc/shadow 中
- 3 为用户建立一个新的家目录 /home/nash_su
- 4 将 /etc/skel 中的文件复制到用户的家目录中
- 5 建立一个与用户用户名相同的组,新建用户默认属于这个同名组
- useradd nash_su , 这个命令会执行以下操作:
- 命令 useradd 支持以下参数:
- -d 家目录
- -s 登录shell
- -u userid
- -g 主组
- -G 附属组(最多31个,用 “ , ”分隔)
- 也可通过直接修改 /etc/passwd 的方式实现,但是不建议
6.1.6 修改用户信息
- 命令 usermod 用来修改用户信息
- usermod 参数 username
- 命令 usermod 支持以下参数:
- -l 新用户名
- -u 新 userid
- -d 用户家目录位置
- -g 用户所属主组
- -G 用户所属附属组
- -L 锁定用户使其不能登录
- -U 解除锁定
6.1.7 删除用户
- 命令 userdel 用以删除指定用户:
- userdel nash_su ( 保留用户的家目录 )
- userdel -r nash_su ( 同时删除用户的家目录 )
6.2、组
6.2.1 组
- 几乎所有操作系统都有组的概念,通过组,我们可以更加方便的归类、管理用户。一般来讲,我们使用部门、职能或地理区域的分类方式来创建使用组。
- 每个组有一个组 ID
- 组信息保存在 /etc/group 中
- 每个用户拥有一个主组,同时还可以拥有最多31个附属组
6.2.2 创建、修改、删除组
- 命令 groupadd 用以创建组
- groupadd linuxcast
- 命令 groupmod 用以修改组信息
- groupmod -n newname oldname 修改组名
- groupmod -g newGid oldGid 修改组 ID
- 命令 groupdel 用以删除组
- groupdel linuxcast
- 示例
- 现在有三个部门,每个部门有两个员工,下面分别创建组和用户
先创建组:
groupadd training
groupadd market
groupadd manage
再创建用户:
useradd -G training nash_su
useradd -G training bob
useradd -G market alice
useradd -G market john
useradd -G manage steve
useradd -G manage david
6.3、Linux 权限机制
6.3.1 权限概念
- 权限是操作系统用来限制对资源访问的机制,权限一般分为 读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样的操作。
- 每个进程都是以某个用户的身份运行,所以进程的权限与该用户的权限一样,用户的权限大,该进程拥有的权限就大。
6.3.2 文件权限
- Linux 中,每个文件拥有以下三种权限:
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r (读取) | 可读取文件内容 | 可列出目录内容 |
w (写入) | 可以修改文件内容 | 可在目录中创建删除文件 |
x (执行) | 可以作为命令执行 | 可访问目录内容 |
- 目录必须拥有 x 权限,否则无法查看其内容
6.3.3 UGO
- Linux 权限基于 UGO 模型进行控制
- U 代表 User ,G 代表 Group , O 代表 Other
- 每一个文件的权限基于 UGO 进行设置
- 权限三个一组(rwx),对应 UGO 分别设置
- 每一个文件拥有一个所属用户和所属组,对应 UG ,不属于该文件所属用户或所属组的使用 O 权限
- 命令 ls -l 可以查看当前目录下文件的详细信息
- drwxr-xr-- 2 nash_su training 208 Oct 1 13:50 linuxcast.net
- d : 文件类型
- rwxr-xr-- : UGO
- rwx : U 权限
- r-x : G 权限
- r-- : O 权限
- 2 : 链接数量
- nash_su : U 所属用户
- training : G 所属组
- 208 : 大小
- Oct 1 13:50 : 时间
- linuxcast.net : 文件名
- drwxr-xr-- 2 nash_su training 208 Oct 1 13:50 linuxcast.net
6.3.4 修改文件所属用户、组
- 命令 chown 用以改变文件的所属用户
- chown nash_su linuxcast.net
- -R 参数递归的修改目录下的所有文件的所属用户
- 命令 chgrp 用以改变文件的所属组
- chgrp nash_su linuxcast.net
- -R 参数递归的修改目录下的所有文件的所属组
6.3.5 修改文件权限
命令 chmod 用以修改文件的权限
- chmod 模式 文件
模式为如下格式:
- u、g、o 分别代表用户、组和其他
- a 可以代指 ugo
- +、- 代表加入或删除对应权限
- r、w、x 代表三种权限
模式示例:
- chmod u+rw linuxcast.net
- chmod g-x linuxcast.net
- chmod go+r linuxcast.net
- chmod a-x linuxcast.net
命令 chmod 也支持以数字方式修改权限,三个权限分别由上数字表示:
- -r = 4 (2^2)
- -w = 2 (2^1)
- -x = 1 (2^0)
使用数字表示权限时,每组权限分别为对应数字之和:
- rw = 4+2 = 6
- rwx = 4+2+1=7
- r-x = 4+1=5
所以,使用数字表示 ugo 权限使用如下方式表示
- chmod 660 linuxcast.net == rw-rw----
- chmod 775 linuxcast.net == rwxrwxr-x
实例:
- 假设 LinuxCast.net 用户、组如下:
组 用户 training nash_su 、 bob market alice 、 john manage steve 、 david - 现要求为各部门、员工建立相应的工作文件夹,要求如下:
- 所有目录、文件保存在统一的一个文件夹下
- 每个部门拥有一个独立的文件夹
- 不同部门之间不可访问各自文件夹
- 每个员工在所在部门文件夹下拥有一个所属的文件夹
- 同部门不同员工之间可以查看各自文件夹内容,但不可修改,用户仅能够修改自己的内容
groupadd training
groupadd market
groupadd manage
useradd -G training nash_su
useradd -G training bob
useradd -G market alice
useradd -G market john
useradd -G manage steve
useradd -G manage david
根目录下创建文件夹:
mkdir linuxcast.net
cd linuxcast.net
mkdir training
mkdir market
mkdir manage
chgrp manage manage/
chgrp market market/
chgrp training training/
chmod o-rx manage/
chmod o-rx market/
chmod o-rx training/
cd training/
mkdir nash_su
mkdir bob
chown nash_su nash_su
chown bob bob
chgrp training bob
chgrp training nash_su
chmod o-rx bob
chmod o-rx nash_su
cd ..
cd market/
mkdir alice
mkdir john
chown alice alice
chown john john
chgrp market alice
chgrp market john
chmod o-rx alice
chmod o-rx john
cd ..
cd manage
mkdir steve
mkdir david
chown steve steve
chown david david
chgrp manage steve
chgrp manage david
chmod o-rx steve
chmod o-rx david
6.4、Linux 扩展权限
6.4.1 默认权限
- 每一个终端都拥有一个 umask 属性,来确定新建文件、文件夹的默认权限
- umask 使用数字权限方式表示,如:022
- 目录的默认权限是:777-umask
- 文件的默认权限是:666-umask
- 一般,普通用户的默认 umask 是002,root 用户的默认 umask 是022
- 也就是说,对于普通用户来讲:
- 新建文件的权限是:666-002=664
- 新建目录的权限是:777-002=775
- 命令 umask 用以查看设置 umask 值
- umask 022
6.4.2 特殊权限
- 除了普通权限以外,还有三个特殊权限
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
suid | 以文件的所属用户身份执行,而非执行文件的用户 | 无 |
sgid | 以文件所属组身份运行 | 在该目录中创建的任意新文件的所属组与该目录的所属组相同 |
sticky | 无 | 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件 |
设置特殊权限
- 设置 suid : chmod u+s linuxcast.net
- 设置 sgid : chmod g+s linuxcast.net
- 设置 sticky : chmod o+t linuxcast.net
与普通权限一样,特殊权限也可以使用数字方式表示
- -SUID = 4
- -SGID = 2
- -Sticky = 1
- 所以,我们可以通过以下命令设置:
chmod 4755 linuxcast.net
七、Linux 网络基本配置
7.1、网络基础
7.1.1 网络编址
- 网络编址就相当于身份证上的家庭住址和姓名,功能就是在互联网中唯一的定位一台设备,可以是计算机,可以是服务器,也可以是其他一些网络服务设备等等
7.1.2 IP 编址
- IP 编址是一个双层编址方案,一个 IP 地址标识一个主机(或一个网卡接口)
- 现在应用最为广泛的是IPv4 编址,已经开始逐渐向 IPv6 编址切换
- IPv4 地址为32位长,IPv6 地址为128位长
- 一个 IPv4 地址分为两个部分:网络部分 和 主机部分
- 网络部分用来标识所属区域,相当于身份证的地址;主机部分用来标识该区域中的哪个主机,相当于身份证的姓名。
7.1.3 IP 地址
- IPv4 地址共32位,通常使用点分十进制方式表示
- 整个 IP 地址分为4个部分,每个部分8位
- 例如:
- 192 . 168 . 1 . 1
- 11000000.10101000.00000001.00000001
7.1.4 子网掩码
- IPv4 地址的 32bit 分为网络部分和主机部分
- 我们通过子网掩码来确定网络部分的位数
- 子网掩码与 IP 地址一样,拥有 32bit ,每一位与 IP 地址中的每一位一一对应
- IP 地址中相对应子网掩码中为1的部分为网络部分
例如:
IP: 192 . 168 . 1 . 1
11000000.10101000.00000001.00000001
子网掩码: 255 . 255 . 255 . 0
11111111.11111111.11111111.00000000
- 证明此 IP 地址前24位是网络部分,也就是说,与此 IP 地址处在同一网络的其他主机的 IP 地址前24位相同,以证明他们在同一网络
- 例:通过比较网络部分是否相同来判断是否处于同一网络
如上图所示,有三个网段在三个区域,北京地区的网段是 192.168.1.0,/24 是子网掩码的简写,代表前24位是网络部分,写成点分十进制就是 255.255.255.0 ,主机A、B、C 都是属于192.168.1.0 网段,/24 的子网掩码代表A、B、C 或者其他主机只要是在这个网段之内,它的前24位或者前三部分必然都是 192.168.1 ,分别用 .1 、 .2 、.3 去标识这个网段中不同的主机。同样,处于西安地区的网络是 172.16.1.0 ,也是 /24 的网络,表示这个网络当中所有主机的前3部分都是172.16.1 ,分别用 .1 、 .2 、 .3 去标识不同的主机。那上海地区的网络是 10.0.0.0 /8 ,也就是说第一个8位组或者点分十进制的第一部分或者二进制部分的前8位是用来规定网络部分的,这个网络中只要是以 10. 开头的网络都属于同一网段,如 10.0.0.1 , 10.1.1.1 ,10.100.32.45 等都是属于这同一个网段。
7.1.5 同一个网络主机之间的通信
- 同一个网络内主机之间的通信还需要用到一个编址就是 MAC 地址
- MAC 地址就是用来在同一个网络之内的主机之间通信的,通常同一个网络之内主机都是直接连接的
- ARP :地址解析协议
7.1.6 不同网络之间通信
- 只要是去访问不在同一网段的网络,都需要使用到路由器去转发,路由器就是一个中间人的角色
7.1.7 路由
- 在不同网络之间传输数据的功能叫做路由功能,一般有多个接口,连接到不同的网络中,并且通过路由表进行数据转发,
- 路由表
目标网络 | 子网掩码 | 出接口 |
---|---|---|
192.168.1.0 | 255.255.255.0 | eth0 |
172.16.1.0 | 255.255.0.0 | eth1 |
61.1.1.0 | 255.255.255.252 | eth2 |
- 通常指的网关就是路由器的 IP 。
7.1.8 域名
- IP 地址往往难以记忆,所以我们一般使用域名进行管理,例如:www.baidu.com
- 域名分为三个部分,用 “ . ” 分隔
- 类型 :标识此域名的类型,如:com、net、org、edu、gov 等
- 域名 :域名称,如:baidu
- 主机名:该域中的某台主机名称,如:www
- 域名大小写不敏感
- 主机名是可以随变起的,之所以大家都用 www 是因为约定俗成 www 是网页服务器,网页服务器也可以不叫这个名字,随变叫什么都可以
7.1.9 DNS
- 每个域名代表一个 IP ,而 DNS 服务就是用来在 IP 与域名之间进行转换的
7.1.10 基本网络参数
要配置一个局域网通信的计算机:
- IP 地址
- 子网掩码
要配置一个跨网段通信的计算机:
- IP 地址
- 子网掩码
- 网关
要配置一个可上网的计算机:
- IP 地址
- 子网掩码
- 网关
- DNS
7.2、Linux 网络基础配置
7.2.1 以太网连接
- 在 Linux 中,以太网接口被命名为: eth0、eth1 等,0、1代表网卡编号
- 通过 lspci 命令可以查看网卡硬件信息(如果是 usb 网卡,则可能需要使用 lsusb 命令)
- 命令 ifconfig 用来查看接口信息
- ifconfig -a 查看所有接口
- ifconfig eth0 查看特定接口
- 命令 ifup 、 ifdown 用来启用、禁用一个接口
- ifup eth0
- ifdown eth0
7.2.2 配置网络信息
- 使用 setup 命令可以配置网络信息,配置一个或多个网卡步骤如下,
- setup -> Network configuration -> Device configuration -> eth0...(如果是多个网卡,第二次这个页面选择 New Device ) -> 按下键选到 Use DHCP 按空格键,默认选择的* 会消失掉 ,Static IP 输入:192.168.1.210,Netmask 输入:255.255.255.0,Default gateway IP 输入:192.168.1.1,Primary DNS Server 输入:61.134.1.4,还可以配置多个 DNS ,在 Secondary DNS Server 输入:210.30.19.40,设置完成后选择 OK 键,Select A Device 页面选择 Save 保存,再选择 SaveQuit 保存退出,最后选择 Quit 退出。(输入的 IP 地址要根据自己的实际情况输入!)
- 配置完成后,使用 ifup 启用网卡,并使用 ifconfig 命令查看信息
- ifup eth0
7.2.3 网络相关配置文件
- 网卡配置文件
- /etc/sysconfig/network-scripts/ifcfg-eth0
- DNS 配置信息
- /etc/resolv.conf
- 主机名配置文件
- /etc/sysconfig/network
- 静态主机名配置文件
- /etc/hosts
7.2.4 网络测试命令
- 测试网络连通性 ( Ctrl + C 结束 )
- ping 192.168.1.1
- ping www.linuxcast.net
- 测试 DNS 解析
- host www.linuxcast.net
- dig www.linuxcast.net
- 显示路由表
- ip route
- 追踪到达目的地址的网络路径
- traceroute www.linuxcast.net
- traceroute www.douban.com
- 使用 mtr 进行网络质量测试 (结合了 traceroute 和 ping)
- mtr www.linuxcast.net
7.2.5 修改主机名
- 实时修改主机名(重启后会恢复)
- hostname train.linuxcast.net
- 永久性修改主机名
- /etc/sysconfig/network 文件下修改 HOSTNAME = train.linuxcast.net
7.2.6 故障排查
- 网络故障排查遵循 从底层到高层、从自身到外部 的流程进行
- 先查看网络配置信息是否正确
- IP 网址
- 子网掩码
- 网关
- DNS
- 再查看到达网关是否连通
- ping 网关 IP 地址
- 再查看 DNS 解析是否正常
- host www.linuxcast.net
- host www.126.com
- host www.douban.com