一、Linux的文件权限
Linux最优秀的地方之一在于它的多用户、多任务环境。而为了让各个用户具有较保密的文件数据,文件的权限管理就相当重要了。Linux一般将文件可存取访问的身份分为三个类别:owner(文件所有者)、group(用户组)、others(其他人)。
Linux用户组最有用的功能之一就是,当你在团队开发资源的时候,每个帐号可以有多个用户组的支持。
首先介绍一个十分重要的命令:ls,显示文件及其相关属性。ls -al,列出所有文件的详细的权限与属性。注意,需要root权限。终端输出如下:
注意每一行和列的含义。这7列的含义分别是:文件或目录的权限、有多少文件名链接到此结点、文件的所有者帐号、文件的所属用户组、文件的容量大小、文件的创建日期或者最近的修改日期、文件名.
注意,文件名之前多一个.,表示该文件是隐藏文件。
第一列是权限。其中第一个字符代表文件的类型。这里需要注意的是文件和目录的权限的意义是不相同的。
文件种类及其在权限中的属性:
一般文件:-。
目录:d
l:连接文件,类似于windows下的快捷方式。
设备与设备文件:
块设备文件:b
字符设备文件:c
套接字:s
管道:p
下面解释一下rwx权限的意义。
对文件而言:
r:可读取文件内容
w:可以修改文件内容,但是并不具备删除文件的权限。
x:文件具有可被系统执行的权限。Note:注意Linux文件执行和Windows文件执行的区别。Windows下文件是否具有执行能力是看扩展名。
对目录:
r:具有读取目录列表的权限。不具备进入该目录成为工作目录的权限。
w:可以更改目录结构列表。
x:用户能够进入该目录成为工作目录。
Note:要开放目录给任何人浏览时,应该至少要给予r及x的权限,但是w权限不能随便给。
如何改变文件属性和权限呢?
chgrp:改变所属用户组。注意:要被改变的组名必须要在/etc/group文件内存在才可以。否则会显示错误。
语法:chgrp [-R] 新组名 dirname/filename
参数-R表示进行递归的持续更改,即连同子目录下的多有文件、目录都进行更新。
chown:改变文件所有者。注意:用户必须是存在于系统中的帐号,即在/etc/passwd中有记录。
语法:chown [-R] 新帐号名称 dirname/filename
chown [-R] 新帐号名称:新组名 dirname/filename 可以同时改变所有者和用户组。注意:user.group中间也可以加小数点,但是当帐号名中含有小数点的时候容易造成系统误判。所以推荐使用冒号。其实chown也可以单纯修改组名:chown .newGroupName dirname/filename
改变文件权限使用得最多的时候是复制文件的时候,因为文件复制了之后,新文件文件权限和旧文件权限是一样的。
chmod:改变权限。权限的设置方法有2种:用数字或者符号。
用数字的时候,r:4,w:2,x:1.用累加和表示三种身份的权限。
举例说明:有权限:-rwxrwx—。则各个身份的权限是:owner=4+2+1=7.group4+2+1.others=0+0+0=0.
chmod语法:chmod [-R] xyz dirname/filename
xyz就是各个身份的数字类型的权限属性。
字符形式:用u,g,o代表三种身份,a代表全部身份。
语法:chmod u/g/o/a +/-/= r/w/x irname/filename
+代表加入权限,-代表出去权限,=代表设置权限。
例如:把文件.bashrc的权限设置为-rwxr-xr-x。
+和-的用法如下:
注意:在+和-的情况下,没有被指定到的选项,该权限不会改变。
二、Linux目录配置
要想掌握Linux,了解它的目录配置是十分重要的。
Linux目录配置标准是FHS标准(Filesystem Hierarchy Standard)。正因为有了这个标准的约束,所以各个不同的distributions版本的目录大体是一样的。FHS定义的是最上层(/)及子层(/usr,/var)的目录应放置的文件和目录数据。在其他子目录层级里面,可以随开发者自行配置。不过差异也是有限的。FHS的重点在于规范特定的目录下应该要存放什么样子的数据。FHS将目录定义为四种交互作用的形态:可分享的、不可分享的、不变的和可变的。
下面首先介绍根目录(/)。根目录是整个系统中最重要的一个目录。所有的子目录都是由根目录衍生出来的,而且根目录也与开机、还原、系统修复等操作有关。
注意:最好保持根目录越小越好,这样不仅性能较好,根目录所在的文件系统也不容以发生问题。
根目录下面的子目录(以我的电脑为例:ubuntu11.10):
/bin:放置的是单用户模式下还能被操作的命令。可以被root和一般帐号所使用。
/boot:主要放置开机会使用到的文件。包括linux内核文件爱你及开机菜单与开机所需配置文件等。
/dev:linux中,任何设备与接口设备都以为呢见的形式存在与这个目录当中。
/etc:系统中主要的配置文件几乎都放置在这里。一般可以为一般用户查阅,但是只有root能修改。
/home:用户主文件夹。在创建一个一般用户时,默认的用户主文件夹会规范到这里来。
/lib:放置开机时会用到的函数库。
/media:放置可删除的设备:软盘、DVD等。
/mnt:暂时挂在额外设备。
/opt:第三方软件放置目录。
/root:系统管理员主文件夹。
/sbin:开机过程中所需的命令。注意与/bin的区别。
/srv:一些网络服务启用后,这些服务所需要取用的数据目录。
/tmp:让一般用户或者是正在执行的程序暂时放置文件的地方。
Note:根目录与开机有关,开机过程中仅有根目录被挂载,其他分区则是在开机完成之后才会持续进行挂载。因此,根目录下与开机过程有关的目录就不可以与根目录放置到不同的分区中去。这些目录有5个:
/etc:配置文件
/bin:重要执行文件
/dev:所需的设备文件
/lib:执行文件所需的函数库与内核所需的模块。
/sbin:重要的系统执行文件。
其他目录介绍:
/usr:是UNIX Software Resource的缩写。放置的数据属于可分享的与不变动的。所有系统默认的软件都会被放置在此目录下。类似于windows下的C:\Windows\和C:\Program files\的综合体。子啊系统刚安装完毕时,这个目录会占用最多的硬盘空间。
/var:在系统运行后才逐渐占用硬盘容量。主要放置经常变动的文件。
目录树
在Linux下面,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树枝,故称这种目录配置方式为“目录树”。
目录树架构示意图:
旅行,不要害怕错过什么,