#Linux简介
Linux是一套自由、开放源代码的类Unix(继承Unix的设计风格演变出来的系统)操作系统,诞生于1991年10月5日,其特点是多用户、多任务、且支持多线程和多CPU。Linux支持32位和64位硬件,能运行主要的Unix工具软件、网络协议和应用程序。
Linux的标志:

#发行版本
Linux有上百种不同的发行版,如基于社区开发的Debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
Debian GNU/Linux:最大的发行版,其社区规模更大,包含超过43000个二进制包,对稳定分支的测试更详细彻底。
Debian标志:

Ubuntu:基于Debian发行版和Gnome桌面环境,提供自动配置好了的系统,对新手来说更友好。
Ubuntu标志:

CentOS:完全开源的社区企业操作系统(community enterprise operating system),基于Red Hat Linux,相对于其他Linux发行版,其稳定性值得信赖。
CentOS标志:

#应用范围
1、桌面应用领域
随着Linux操作系统在图形用户接口方面和桌面应用软件方面的发展,越来越多的桌面用户转而使用Linux。Linux已经能够满足用户办公、娱乐和信息交流的基本要求。
2、高端服务器领域
由于Linux内核具有稳定性、开放源代码等特点,且可以提供企业网络环境所需的各种网络服务,如提供虚拟专用网络(VPN)或充当路由器(router)与网关(gateway),因此在不同操作系统相互竞争的情况下,企业掌握Linux技术并配合系统整合与网络等技术,便能够享有低成本、高可靠的网络环境。
3、嵌入式应用领域
目前能够支持嵌入式的常见操作系统有Palm OS、嵌入式Linux和Windows CE。虽然Linux在嵌入式领域刚刚起步,但是Linux的特性正好符合IA(基于Intel架构)产品的操作系统小、稳定、实时与多任务等需求,且开放源代码,不必支付许可证费用,许多世界知名厂商如IBM、索尼等纷纷采用Linux开发视频电话和数字监控系统等。
#相关实验
<Linux简介>
#基础命令
#查看版本信息
#相关实验
<Linux的发展>
#1、uname命令查看版本号
-r参数:查看Linux kernel版本号

可以看到这个linux kernel的版本是2.6.32-279.el6.x86_64,版本号都是偶数,说明这是一个稳定版。
#2、cat命令查看CentOS的版本

#查看系统信息
#相关实验:<了解你的系统>
#1、cat命令查看CPU信息
查看逻辑CPU个数:

查看物理CPU个数:

查看core id的数量:

#2、free命令查看内存信息

total:总大小
used:已经使用的大小
free:剩余的大小
shared:多个进程共享的内存总额
buffers:磁盘缓存的大小
#3、fdisk命令查看磁盘分区信息

#4、whoami命令查看身份信息

#5、top命令查看系统运行程序

#6、ps命令查看进程

USER:该进程属于哪个使用者账号
PID:该进程的号码
%CPU:该进程使用的CPU百分比
%MEM:该进程占用的物理内存百分比
VSZ:该进程使用的虚拟内存量
RSS:该进程占用的固定内存量
TTY:该进程是在哪个终端机上运作
STAT:该进程目前的状态(D 不可中断、R运行中、S休眠、T停止、Z僵死)
#7、chkconfig命令查看系统服务

最左边的一列表示服务名,右边指各个服务在系统启动级别上是否开启的状态
#8、service命令查看redhat、fedora和centos中的服务
查看ssh服务的状态:

#9、ifconfig命令查看系统网络连接状况

Inet addr:就是IP地址
Bcast:广播地址
Mask:子网掩码
inet6 addr:ipv6地址
RX:指接收
TX:指发送
#10、netstat命令查看系统建立连接情况

#文本编辑器
#相关实验
<文本编辑器之一>
<文本编辑器之二>
#1、vi命令与vim命令的区别
vi新建一个文件hetian.txt:

如果打开已经存在的文件是这样的:

vim命令打开:

同样一个文件,vim会用颜色来标记文件中不同的内容。
#2、灵活使用vim编辑文件
在/tmp这个目录下建立一个vimtest的目录,复制/etc/man.config到这个目录,然后用vim打开这个man.config:

设定显示行号:

移动光标到第58行第30个字符:

复制第30行到38行这9行的数据到最后一行(输入30G ,然后9yy,再输入G,最后按p就行):


将文件另存为:man.config.test(输入“:w man.config.test” 然后回车):

去到第10行,快速删除10个字符(先到第10行:10G,然后输入10x):

恢复刚刚删除的内容(按u就能往前恢复了):

#用户管理
#用户管理
#相关实验
<账号管理之用户管理>
<账户管理之普通用户常用查询命令>
<账户管理之查询使用者和对话用户>
#1、adduser命令添加用户

-d:指定home目录

可以在/etc/passwd文件中看到用户添加成功。
-D:查看useradd的默认值

内容分别代表默认的群组;默认的home目录所在的目录;密码失效日(shadow内容的第七字段)-1 则是代表口令永远不会失效;账号失效日(shadow内容的第八字段内容);默认的shell;用户home目录的内容数据参考目录;是否主动帮助用户创建邮箱。
#2、passwd命令设置用户密码

-l:锁定用户

-u:解锁用户

#3、usermod命令修改用户
-c:后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明

#4、userdel命令删除账号

-r:连同home目录一起删除

#5、finger命令查询用户信息

Login:为使用者账号,即/etc/passwd内的第一字段;
Name:为全名,即/etc/passwd内的第五字段(或称为批注);
Directory:就是home目录了;
Shell:就是使用的 Shell 文件所在;
Never logged in.:finger 还会调查用户登陆主机的情况;
No mail.:调查 /var/spool/mail 当中的信箱数据;
No Plan.:调查 ~heetian/.plan 文件,并将该文件取出来说明。
-s:仅列出用户的账号,全名,终端机代号与登陆时间等

#6、id命令查询用户信息

显示UID/GID以及支持的所有群组。
查询其他用户的信息:

#7、chfn命令修改用户信息

#8、chsh命令更改用户shell
-l:列出目前系统上面可以用的shell,就是/etc/shells的内容

-s:配置自己的shell

#9、w、who、last、lastlog命令查询用户相关数据
w、who命令查询目前已登录到系统上的用户:

第一行显示目前的时间、启动 (up) 多久,几个用户在系统上平均负载等;
第二行只是各个项目的说明;
第三行以后,每行代表一个使用者。

如上所示,root登陆并取得终端机名pts/0。
last检查使用者登录时间:

lastlog命令查询每个账号的最近登录时间:

lastlog会去读取/var/log/lastlog 文件,结果将数据输出如上图所示。
#10、write、mesg、wall命令与使用者对谈
需要创建heetian用户,并用putty以root身份和heetian用户的身份分别登陆到实验环境:


然后在heetian用户那边可以看到:

如果 heetian这个人不想要接受任何信息,直接下达这个动作:

用wall命令对所有系统上面的用户传送简讯 (广播):

#11、mail命令给用户寄邮件
例如以root寄信给heetian,信件标题是‘Heetian,hello‘:

那么heetian如何收信呢?直接输入mail就好了:

#用户组管理
#相关实验
<账户管理之新增与移除用户组>
#1、groupadd命令新增用户组
例如新建一个群组,名称为heetian:

-g:后面接特定的GID,用来直接给予某个GID

-r:创建系统群组

新建一个名为www的群组用来给www服务使用。
在新建用户的时候将用户添加到已有的群组:

#2、groupmod命令修改群组信息
-g:修改GID数字

-n:修改组名

#3、groupdel命令删除群组

#4、gpasswd命令创建群组管理员
例如将heetian这个用户设置为mooe组的群组管理员:

然后授权用户成为群管理员:

群组管理员管理用户:

新建一个账号test1,然后切换到heetian,将test1添加到mooe群组。
#5、newgrp命令实现用户切换到用户组
首先新建test2、test3用户,然后将用户分别加入对方群组:

然后切换到test2用户:

可以看到目前的组是test2,用newgrp命令切换到组test3:

#用户身份切换
#相关实验
<账户管理之用户身份切换>
#1、su命令实现用户身份切换
新建两个测试账号:test1、test2,密码设置为heetian2014:

由root切换到普通用户(无需输入密码):

由普通用户切换到root(需要输入root的密码):

普通用户切换到其他用户,都需要输入对方的密码:

#2、sudo命令以系统管理者的身份执行指令
例如以test1的身份在/tmp下创建一个名为test1的文件:

#权限管理
#相关实验
<Linux档案权限篇之一>
<Linux档案权限篇之二>
#1、ls命令列出所有档案的详细权限和属性

这7列分别是代表什么意思呢:

连接数:每个档案都会将他的权限和属性记录到文件系统的inode中,每个档案名都会连接到一个inode。这个连接数就是记录有多少不同的档案名连接到相同的一个inode号码去了;
拥有者:这个档案所属的拥有者账号;
用户组:表示这个档案所属的群组;
第五列就是这个档案占用的容量大小了,默认单位是bytes;
修改日期:这个档案最近被修改的日期。
#2、权限说明
划分成10列:

第一个字符代表档案的类型:
d:代表是目录;
-:代表是文件;
l:代表是连接文件(相当于windows里面的快捷方式);
b:代表块设备(如硬盘);
c:代表字符设备(如键盘,鼠标等)。
接下来的字符中,均为”rwx“的三个参数的组合。分别是r:可读;w:可写;x:可执行。注意,这三个权限的位置不会改变,如果没有权限,就是”-“。
第一组为拥有者的权限,第二组为同群组的权限,第三组为其他非本群组的权限。
#3、chown命令改变档案的属性与权限
例如改变/tmp/heetian 的拥有者为heetian这个用户:


#4、chgrp命令改变所属用户组
例如把刚刚的heetian这个文件所属用户组改成heetian:

#5、chmod命令改变文件权限
Linux可以用数字来代表权限:

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为[-rwxrwxr--]分数则是:
owner(所有者):rwx=4+2+1=7
group(用户组):rwx=4+2+1=7
others(其他用户):r--=4+0+0=4

使用符号类型改变权限:



#6、权限意义

#7、umask命令设置档案的默认权限
-S:以字符的形式来表示权限设置;第一组数字是留给特殊权限用的。

直接umask跟想要减去的权限组合的数字就可以设定umask的值:

#8、chattr命令配置档案隐藏属性值
语法:chattr [-RV] [-v<版本编号>] [+/-/=<属性>] [文件或目录]
说明:
-R,递归;
-v<版本编号>:设置文件或目录版本;
-V:显示执行过程;
+:开启属性;
-:关闭属性;
=:指定属性。
属性说明:


#9、特殊权限的设置
SUID:仅对二进制程序有效,执行者对于该程序需要具有x的权限,执行者将具有该程序拥有者的权限。

SGID:程序执行者对于该程序,需要具备x的权限,执行者在执行程序的过程中会获得该程序用户组的权限。

SBIT:只对目录有效,对文件无效;当用户对此目录具有wx权限,用户在该目录下建立目录或者文件时,仅有自己和root才有权力删除。
