一、Linux的文件权限
Linux最优秀的地方之一在于它的多用户、多任务环境。而为了让各个用户具有较保密的文件数据,文件的权限管理就相当重要了。Linux一般将文件可存取访问的身份分为三个类别:owner(文件所有者)、group(用户组)、others(其他人)。
Linux用户组最有用的功能之一就是,当你在团队开发资源的时候,每个帐号可以有多个用户组的支持。
首先介绍一个十分重要的命令:ls,显示文件及其相关属性。ls -al,列出所有文件的详细的权限与属性。注意,需要root权限。终端输出如下:
注意每一行和列的含义。这7列的含义分别是:文件或目录的权限、有多少文件名链接到此结点(软链接)、文件的所有者帐号、文件的所属用户组、文件的容量大小、文件的创建日期或者最近的修改日期、文件名.
注意,文件名之前多一个.,表示该文件是隐藏文件。
第一列是权限。其中第一个字符代表文件的类型。这里需要注意的是文件和目录的权限的意义是不相同的。
文件种类及其在权限中的属性:
一般文件:-。
目录:d
l:连接文件,类似于windows下的快捷方式。
设备与设备文件:
块设备文件:b
字符设备文件:c
套接字:s
管道:p
下面解释一下rwx权限的意义。
对文件而言:
r:可读取文件内容
w:可以修改文件内容,但是并不具备删除文件的权限。
/******************************************************************************************************************************************************
是否只要有写的权限就行?删除目录中的文件名就能删除文件? 还有今天见到有个权限这样子drwxrwxrwt 那个t什么意思,第一次见到。。。是/tmp的权限属性...
t 粘贴位作用:被设置了粘贴位的目录里面的文件,只有文件的拥有者才能删除。如果不设置,其它用户如果对这个目录有写入权限,就可以删除其用户文件。 /tmp目录被设置粘贴位 用户user1 touch /tmp/file1 用户user2 就不能删除/tmp/file1 如果 chmod 777 /tmp /test 目录没设置粘贴位 用户user1 touch /tmp/file1 用户user2 就能除/tmp/file1 (别做这个修改操作,会导致很多错误。原本的tmp权限是1777) t 粘贴位主要用于目录,如果看到文件带t位,说明此文件被放在交换分区。
******************************************************************************************************************************************************/
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:一些网络服务启用后,这些服务所需要取用的数据目录。 //服务器的安装目录。比如ftp服务器安装完毕后,/srv下会增加一个ftp目录。、
/tmp:让一般用户或者是正在执行的程序暂时放置文件的地方。
Note:根目录与开机有关,开机过程中仅有根目录被挂载,其他分区则是在开机完成之后才会持续进行挂载。因此,根目录下与开机过程有关的目录就不可以与根目录放置到不同的分区中去。这些目录有5个:
/bin:重要执行文件
/dev:所需的设备文件
/lib:执行文件所需的函数库与内核所需的模块。
/sbin:重要的系统执行文件。
其他目录介绍:
/usr:是UNIX Software Resource的缩写。放置的数据属于可分享的与不变动的。所有系统默认的软件都会被放置在此目录下。类似于windows下的C:\Windows\和C:\Program files\的综合体。子啊系统刚安装完毕时,这个目录会占用最多的硬盘空间。
/usr/sbin: super user commands for applications
/var:在系统运行后才逐渐占用硬盘容量。主要放置经常变动的文件。
/*************************************************************************************************************************************************/
/var文件系统
/var 包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.
/var/catman
当要求格式化时的man页的cache.man页的源文件一般存在/usr/man/man* 中;有些man页可能有预格式化的版本,存在/usr/man/cat* 中.而其他的man页在第一次看时需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了. (/var/catman 经常被清除,就象清除临时目录一样.)
/var/lib
系统正常运行时要改变的文件.
/var/local
/usr/local 中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var 目录,例如/var/lock .
/var/lock
锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.
/var/log
各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息. /var/log 里的文件经常不确定地增长,应该定期清除.
/var/run
保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp 包含当前登录的用户的信息.
/var/spool
mail, news, 打印队列和其他队列工作的目录.每个不同的spool在/var/spool 下有自己的子目录,例如,用户的邮箱在/var/spool/mail 中.
/var/tmp
比/tmp 允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp 有很旧的文件.)
/*************************************************************************************************************************************************/
目录树
在Linux下面,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头。然后再一个一个分支下来,有点像树枝,故称这种目录配置方式为“目录树”。
目录树架构示意图: