本系列文章由@超人爱因斯坦出品,转载请注明出处。
文章链接:
http://hpw123.net/member/index.php?uid=hpw&action=viewarchives&aid=66
作者:超人爱因斯坦 个人网站:http://www.hpw123.net
CSDN:http://blog.csdn.net/u010283694
这篇文章主要是介绍Linux,让大家认识Linux是什么,着重讲解其目录树及文件权限;
嘿嘿,开始之前呢,再说些废话,不要嫌烦哦,大家也许都还没有用过Linux系统吧,那么刚装好一个系统后,是不是也得像windows装好后还得装驱动啥的,好吧,如果是第一次玩ubuntu14.04,建议大家先看看这两篇文章,Ubuntu
14.04 LTS使用全攻略之一:系统安装和基本配置 Ubuntu
14.04 LTS使用全攻略之二:常用软件安装和系统详细设置 相信大家会有很大收获的。特然觉得Linux so easy,后期会写一些关于Linux各种编程环境搭建的博客,比如C++编程用什么IDE,安卓开发环境怎么搭建,Eclipse怎么安装,OpenCV怎么配置等等
好了,让我们进入主题吧:
一.Linux是什么
1.百科
(1)Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
(2)Linux常见版本:Debian,Mandrake,Ubuntu,Red Hat Linux,SuSE,Linux Mint,Gentoo,Fedora Core,centos
2.基本思想
Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近。
3.特性
(1)完全免费
(2)完全兼容POSIX1.0标准
哈哈,一头雾水了吧,这什么东东啊,点击百度百科:POSIX
其使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑,爽吧。
(3)多用户,多任务
Linux支持多用户,各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响。多任务则是现在电脑最主要的一个特点,Linux可以使多个程序同时并独立地运行
(4)良好的界面
(1) 现今主流的桌面环境有KDE,gnome,Xfce,LXDE等,除此之外还有Ambient,EDE,IRIX
Interactive Desktop,Mezzo,Sugar,CDE等。
(2) Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。
(5)支持多种平台
Linux可以运行在多种硬件平台上,如具有x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux
2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。
二.用户,用户组
(1)文件所有者
Linux有这么多用户,还分什么用户组,有什么用呢?
嘿嘿,由于Linux是个多用户,多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作的情况发生,为了考虑每个人的隐私权以及每个人喜好的工作环境,因此,这个”文件所有者"的角色就显得相当重要了呢。例如你将你的Email情书转存成文件后,放在你自己的主文件夹中,你总不希望被别人看见自己的情书吧?这个时候你就把改文件设置成只有文件所有者才能查看与修改这个文件的内容,那么即使其他人知道有这个相当“有趣“的东东,不过由于你设置了适当的权限,呵呵,你懂得。
(2)用户组概念
那么用户组呢?为何要配置文件还有所属的用户组呢?
额,其实用户组最有用功能之一就是当你在团队开发资源的时候,举例技术哪家强?假设主机上有两个竞争关系团体project1、project2,两个团体组员分别为class1、class2,还有一人是老师teacher,当然老师可以看两个团体的资料内容,两个竞争团队肯定是相互保密的啊,怎么办呢?这时用户组权限就有用了啊,组内可以相互查看,组外不可查看,每个用户都可以被多个用户组支持,即老师同时是两个组的成员,一切都被解决了吧
用户的概念:自己可见,其他人不可见,当然神(root)除外
用户组的概念:组内成员可见,其他人不可见,加入一个用户组,开启用户组读、写、执行等权限,组内成员就读、写、执行了
(3)其他人的概念
这个就不用多说了吧,除了自己,用户组成员,还有一个天神(root)
(4)用户身份与用户组记录的文件
一般情况下一般用户和神(root)的相关信息都记录在/etc/passwd这个文件中,个人密码记录在/etc/shadow这个文件中,用户组信息记录在/etc/group内,千万别删这三个文件啊,会要命的。
三.Linux文件权限
(1)Linux文件属性
上图啦(图来自网络,在windows下写的,就没打开我的ubuntu)
找一个目录打开终端输入ls -al ubuntu直接ll就好,会出现类似上面画面
|
2 | root | root | 4096 | 2011-12-03 | bin | ||||
文件权限 | 连接数 | 文件所有者 | 文件所属用户组 | 文件大小 | 文件最后修改的时间 | 文件名 | ||||
权限rwx-分别为读,写,执行,无权限 |
文件类型:
[d] 目录
[-] 文件
[l] 连接文件
[b] 设备文件里面的可供存储的接口设备
[c] 设备文件里面的串行端口设备,如键盘,鼠标(一次性读取设备)
第二列表示有多少文件名连接到此节点(i-node)
每个文件都会将它的权限与属性记录到文件系统的i-node中,不过我们使用的目录树却是势使用文件名来记录,因此每个文件名都会连接到一个i-node,这个属性记录的就是有多少不同过的文件链接到相同的一个i-node(这个以后说)。
(2)目录与文件的权限意义(注意不太一样的呢)
(1)权限对文件的意义
文件是实际含有数据的地方,包括一般文本文件,数据库内容文件,二进制可执行文件等
r(read):可读取此文件的实际内容,如读取文本文件的文字内容等。
w(write):可以编辑,新增或者是修改文件的内容(但不含删除该文件)
x(execute):该文件具有可以被系统执行的权限
注:在Windows下面一个文件是否具有执行的能力是通过“扩展名”来判断的,例如exe,bat,com等,但是在Linux下,我们的文件是否能被执行则是由是否具有“x”这个权限来决定的哦,而跟文件名没有绝对的关系。
(2)权限对目录的意义
文件是存放实际数据的所在,目录主要的内容是记录文件列表,文件名与目录由强烈的关联
r(read contents in directory):便是具有读取目录结构列表的权限,你可以查询该目录下的文件名数据,即ls可以将目录的内容列表列出来哦
w(modify contents of directory):具有更改目录结构列表的权限
(1)目录下可以新建新的文件或目录(子目录)
(2)删除已经存在的文件与目录(不论该文件的权限如何)
(3)将已存在的文件或目录进行重命名
(4)转移该目录内的文件,目录位置
x(access directory):代表的是用户能否进入该目录成为工作目录的用途,那么工作目录是什么东东啊,其实它就是你目前所在的目录,变换目录的命令是cd(change directory)
(3)Linux文件种类与扩展名
前面也强调过,Linux中一切皆文件,任何设备在Linux下都是文件,不仅如此,连数据通信的接口也是专门的文件负责呢,所以,你会了解到,Linux的文件种类真的很多呢,那么问题就来了,除了前面提到的一般文件(-)目录文件(d)之外,还有那些种类的文件呢?
- 文件种类
普通文件(regular
file)
1.纯文本文件(ASCLL)
2.二进制文件(binary)
3.数据格式文件(data)
目录(directory)
连接文件(link)其实就是Windows系统下的快捷方式吧
设备与设备文件(device)
1.块设备文件(block)就是一些存储数据,以提供系统随机访问的接口设备,如硬盘
2.字符设备文件(character) 就是一些串行端口的接口设备,如键盘鼠标等
3.套接字(sockets)数据接口文件,通常被用在网路上的数据连接,如WIFI数据通信
4.管道(FIFI,pipe)主要目的在解决多个程序同时访问一个文件所造成的错误问题
- Linux文件扩展名
哈哈,这么多种类,那么问题就来了?怎么辨别,扩展名是啥了啊,通常通过ll命令查看文件属性,文件权限的第一个字母标识的就是文件种类
其实Linux文件是没有扩展名的,虽然如此,我们仍然希望可以有扩展名来了解该文件是什么东东呢
*.sh 脚本文件或批处理文件(scripts)
*Z, *.tar, *.tar.gz, *.zip, *.tgz 经过打包的压缩文件
*.html, *.php 网页相关文件
基本上Linux系统上的文件名真的是让你了解文件可能的用途而已,真正的执行与否仍然需要权限的规范才行
未完待续。。。
ok,今天的内容大概就是这些,如果有什么写的不对的,求大神指正,我们下篇文章见:)