目录
一、linux 系统的简述
1.linux的简介
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux操作系统指的是“linux内核+各种软件”,Linux这个词只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
2.linux的历史
1)、想法诞生
众所周知,linux内核是林纳斯·托瓦兹(Linus Torvalds)最先设计的。在1988年,托瓦兹进入了赫尔辛基大学,选读了计算机科学系。在学校期间,因为学业的需要与自己的兴趣,接触到了unix这个操作系统。当时整个赫尔辛基只有一部最新的UNIX系统,但是仍然很难满足托瓦兹的需求。为此,他就想到自己写一个类unix操作系统。不久之后,托瓦兹又了解到,谭宁邦教授为了教育需要而编写的Minix系统。让自己的想法更加坚定。
2)、着手设计
1991年初,林纳斯·托瓦兹购买了最新的intel 386的个人计算机,安装了Minix系统,开始学习minix操作系统。经由Minix系统的源码学习到了很多的内核程序设计的设计概念。1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。
3)、分享与修改
当他发现自己的写的东西真的可以在386上面顺利运行,并且可以读取Minix的文件系统后,他将这个内核程序放置在当时芬兰最大的ftp网络上供大家下载,同时在BBS上面贴了一则消息,希望能获得大家的一些修改建议。因此当用户在安装使用时,发生问题,会反馈给托瓦兹。在托瓦兹能够解决的问题范围内,他能很快速的进行linux内核的更新和排错。
同时为了让自己的Linux能够兼容于UNIX系统,并让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX规范。
POSIX是可携式操作系统接口((Portable Operating System Interface))的缩写,重点在于规范核心内核与应用程序之间的接口,这是由美国电气与电子工程师学会((IEEE))所发布的一项标准喔!
4)、广大爱好者的加入
一个人的力量毕竟是有限的。有些硬件托瓦兹无法取得,因此无法编写相关驱动程序,这个时候,就有志愿者站出来帮忙写驱动程序。而且托瓦兹这个人还特别务实。只要经测试可以运行后,就会将这些程序代码加入到内核中。因为这样的状况,linux的开发逐渐模块化,可维护性也大大增加。
后来,因为Linux内核加入了太多的功能,光靠托瓦兹一个人进行内核的实际测试并加入内核源程序实在太费力,于是,就有很多的朋友跳出来帮忙。例如考克斯(Alan Cox)、与崔迪(Stephen Tweedie)等,这些重要的副手会先将志愿者的修补程序或者新功能的程序代码进行测试,并且将结果上传给托瓦兹看,让托瓦兹做最后内核加入的源码的选择与整并!这个分层负责的结果让Linux的开发更加容易!
特别值得注意的是,这些托瓦兹的Linux开发副手,以及自愿传送修补程序的黑客志愿者,其实都没有见过面,而且彼此分布在地球的各个角落,大家群策群力共同开发出现今的Linux。
5)、linux正式版的发布
这群素未谋面的虚拟团队,在1994年终于完成了Linux的内核正式版Version 1.0。代码量达17万行。这一版同时还加入了X Window System的支持!此外,托瓦兹指明了企鹅为Linux的吉祥物。
1996年6月,Linux 2.0内核发布,此内核有大约40万行代码,并可以支持多个处理器。此时的Linux 已经进入了实用阶段,全球大约有350万人使用。
二、linux的文件权限及目录配置
1.使用者 与 群组
1.文件拥有者
由于Linux是个多用户多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个“文件拥有者”的角色就显的相当的重要了!
例如当你将你的e-mail情书转存成文件之后,放在你自己的主文件夹,你总不希望被其他人看见自己的情书吧? 这个时候,你就把该文件设置成“只有文件拥有者,就是我,才能看与修改这个文件的内容”, 那么即使其他人知道你有这个相当“有趣”的文件,不过由于你有设置适当的权限, 所以其他人自然也就无法知道该文件的内容
2.群组
那么群组呢?为何要设置文件还有所属的群组?
其实,群组最有用的功能之一,就是当你在团队开发资源的时候啦!
举例来说,假设有两组专题生在我的主机里面,第一个专题组别为projecta,里面的成员有 class1, class2, class3三个;第二个专题组别为projectb,里面的成员有class4, class5, class6。 这两个专题之间是有竞争性质的,但却要缴交同一份报告。每组的组员之间必须要能够互相修改对方的数据, 但是其他组的组员则不能看到本组自己的文件内容,此时该如何是好?
在Linux下面这样的限制是很简单啦!我可以经由简易的文件权限设置,就能限制非自己团队(亦即是群组啰) 的其他人不能够阅览内容啰!而且亦可以让自己的团队成员可以修改我所创建的文件! 同时,如果我自己还有私人隐密的文件,仍然可以设置成让自己的团队成员也看不到我的文件数据。
很方便吧!另外,如果teacher这个帐号是projecta与projectb这两个专题的老师, 他想要同时观察两者的进度,因此需要能够进入这两个群组的权限时,你可以设置teacher这个帐号, “同时支持projecta与projectb这两个群组!”,也就是说:每个帐号都可以有多个群组的支持呢!
假设有一家人,家里只有三兄弟,分别是王大毛、王二毛与王三毛三个人, 而这个家庭是登记在王大毛的名下的!所以,“王大毛家有三个人,分别是王大毛、王二毛与王三毛”, 而且这三个人都有自己的房间,并且共同拥有一个客厅喔!
使用者的意义:由于王家三人各自拥有自己的房间,所以, 王二毛虽然可以进入王三毛的房间,但是二毛不能翻三毛的抽屉喔!那样会被三毛K的! 因为抽屉里面可能有三毛自己私人的东西,例如情书啦,日记啦等等的,这是“私人的空间”,所以当然不能让二毛拿啰!
群组的概念:由于共同拥有客厅,所以王家三兄弟可以在客厅打开电视机啦、 翻阅报纸啦、坐在沙发上面发呆啦等等的! 反正,只要是在客厅的玩意儿,三兄弟都可以使用喔! 因为大家都是一家人嘛!这样说来应该有点晓得了喔!那个“王大毛家”就是所谓的“群组”啰, 至于三兄弟就是分别为三个“使用者”,而这三个使用者是在同一个群组里面的喔! 而三个使用者虽然在同一群组内,但是我们可以设置“权限”, 好让某些使用者个人的信息不被群组的拥有者查询,以保有个人“私人的空间”啦! 而设置群组共享,则可让大家共同分享
3.其他人
好了,那么今天又有个人,叫做张小猪,他是张小猪家的人,与王家没有关系啦! 这个时候,除非王家认识张小猪,然后开门让张小猪进来王家,否则张小猪永远没有办法进入王家, 更不要说进到王三毛的房间啦!不过,如果张小猪通过关系认识了三毛,并且跟王三毛成为好朋友, 那么张小猪就可以通过三毛进入王家啦!呵呵!没错!那个张小猪就是所谓的“其他人,Others”
2.文件系统简介
作用:管理文件,包含了文件的组织结构,数据等等。
注意:操作系统与文件系统的区别
Unix系统把一切资源都看作是文件,包括硬件设备。硬件所形成的文件,通常称为设备文件。这样用户就可以用读写文件的方式实现对硬件的访问,这样带来的优势也是显而易见的。Unix 权限模型也是围绕文件的概念来建立的,所以对设备也就可以同样处理了。而有Unix系统而来的linux系统也尊崇这个理念即:一切都是文件
Linux文件系统的设计目的:就是用来存储文件和管理文件。Linux文件系统的文件是数据的集合,文件系统不仅包含着文件中的数据,而且还有文件系统的结构,Linux用户和应用程序看到的文件、目录、软连接及文件保护信息等都存储在其中。注意:操作系统是用来管理硬件和应用程序及其文件系统的,别弄混这个概念。
3.目录树
在Linux下面,所有的文件与目录都是由根目录开始的!那是所有目录与文件的源头~ 然后再一个一个的分支下
来,有点像是树枝状啊~因此,我们也称这种目录配置方式为:“目录树(directory tree)” 这个目录树有什么特性呢?他主要的特性
有:
目录树的启始点为根目录 (/, root);
每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。
System (NFS) 服务器挂载某特定目录等。
每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
我们来看一下“根” 下的最粗的几根“树干”
4.对于目录的简单了解
1)根(/)
根目录是整个文件系统中最重要的一个目录,位于Linux文件系统目录结构的顶层。因为不但所有的目录都是由根目录衍生出来的, 同时根目录也与操作系统的开机、还原、系统修复等行为有关。
因为根目录与开机有关,开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载行为。因此根目录下与开机过程有关的目录, 就应该与根目录放在同一个分区里。这些目录分别是:/etc,/bin,/dev,/lib,/sbin。
系统开机所需要的特定文件数据有:核心文件、开机程序、 函数库等等。如果系统出现错误,根目录也必须要包含有能够修复文件系统的程序才行。
因此FHS标准建议:根目录(/)所在分区应该越小越好, 且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。 如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。说白了,就是根目录和Windows的C盘一个样。因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能会有较多发生错误的机会。
2)枝干(/*)
/bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。
/boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。
/dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备(终端、磁盘驱动器、光驱及网卡等,包括字符设备和块设备)等,常用的是挂载光驱mount /dev/cdrom/mnt。
/etc: 系统配置文件目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。
/home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。
/lib,/usr/lib,/usr/local/lib:系统最基本的动态连接资源库,内核模块文件目录。几乎所有的应用程序都用到此资源库。/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。
/lost+fount: 在EXT2或EXT3文件系统中,系统意外崩溃或意外关机时,产生的一些文件碎片放在这里。当系统重新启动时,fsck工具会检查这里,并修复已经损坏的文件系统。
/mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点。
/opt: 给主机额外安装软件所摆放的目录。
/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。
/root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。
/sbin,/usr/sbin,/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。
/tmp: 存放系统产生的临时文件,因此重要文件不要放在此目录下。
/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。
/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。
/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容。建议单独分区,设置较大的磁盘空间。
/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。
/sys:这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。
5.绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意喔!因为根据文件名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样
绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
相对路径:相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的
. :代表当前的目录,也可以使用 ./ 来表示;
.. :代表上一层目录,也可以 ../ 来代
6.文件属性
我们可以使用ls 命令看一下文件属性
ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性 (包含隐藏
文件,就是文件名第一个字符为“ . ”的文件)。
[root@master ~]# ls -l
总用量 728
-rw-------. 1 root root 1610 12月 16 15:56 anaconda-ks.cfg
-rw-r--r--. 1 root root 46478 12月 16 15:56 install.log
-rw-r--r--. 1 root root 10033 12月 16 15:54 install.log.syslog
-rw-r--r--. 1 root root 641017 1月 5 16:06 service
drwxr-xr-x. 2 root root 4096 1月 5 10:44 公共的
drwxr-xr-x. 2 root root 4096 1月 5 10:44 模板
drwxr-xr-x. 2 root root 4096 1月 5 10:44 视频
drwxr-xr-x. 2 root root 4096 1月 5 10:44 图片
drwxr-xr-x. 2 root root 4096 1月 5 10:44 文档
drwxr-xr-x. 2 root root 4096 1月 5 10:44 下载
drwxr-xr-x. 2 root root 4096 1月 5 10:44 音乐
drwxr-xr-x. 3 root root 4096 1月 5 12:46 桌面
[root@master ~]#
第一栏代表这个文件的类型与权限
-:普通文件
d: 目录
l: 链接文件
s: 套接字文件
b: 块文件,设备文件
c: 字符文件,二进制
p:管道文件,在做io操作,由于错误产生的文件file: 查看文件类型
stat:格式: stat 文件名/目录名
显示的数据更详细
接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而
第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;
第二组为“加入此群组之帐号的权限”;
第三组为“非本人且没有加入本群组之其他帐号的权限
第二栏表示有多少文件名连接到此节点(硬链接)
每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node啰!这个属性记录的,就是有多少不同的文件名链接到相同的一个i-node号码去就是了。 关于i-node的相关数据
第三栏表示这个文件(或目录)的拥有者账号
第四栏表示此文件所属群组
在Linux系统下,你的帐号会加入于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3均属于projecta这个群组,假设某个文件所属的群组为projecta,且该文件的权限(-rwxrwx---), 则class1, class2,class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他帐号,对于此文件就不具有任何权限
第五栏为这个文件的容量大小,默认单位为Bytes;
第六栏为这个文件的创建日期或最近修改日期
这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。
可以利用ls的选项,亦即:“ls -l --full-time”就能够显示出完整的时间格式了!包括年、月、日、时间喔。
另外,如果你当初是以繁体中文安装你的Linux系统,那么日期字段将会以中文来显示。 可惜的是,中文并没有办法在纯文本的终端机模式中正确的显示,所以此栏会变成乱码。 那你就得要使用“export LC_ALL=en_US.utf8”来修改语系喔!如果想要让系统默认的语系变成英文的话,那么你可以修改系统配置文件“/etc/locale.conf”,
第七 栏为这个文件的文件名
这个字段就是文件名了。比较特殊的是:如果文件名之前多一个“ . ”,则代表这个文件为“隐藏文件”
-------------------------------------------------------------未完待续,敬请留意--------------------------------------------------------------------------------
引用
https://blog.youkuaiyun.com/Michael__One/article/details/84982592