您的位置:首页 > 运维架构 > Linux

Linux基础学习-属性与权限控制

2014-07-16 17:13 190 查看
1 多用户多任务-->需要权限控制:

存取方式:owner(所有者) group(组) other(其他)

档案属性:通过档案属性的设置来控制以上三种方式的访问权限

2 重点档案属性的格式和各项字段含义 ////实践

 

 用ls -al 以长格式的形式查看家目录下的档案:

  



每一行代表了一个档案属性所具有的内容。我们以某个档案test来说明各个字段:

档案属性  连接数  所有者  所属群组  档案大小  最后修改时间      档案名

例如:

-rwxrwxr-x  2    jmz    jmz    1698    2012-3-12 19:00      test

1)档案属性:-rwxrwxr-x

10个字符,第一个代表这个档案是『目录、档案或连结文件等等』:

  当为[ d ]则是目录

  当为[ - ]则是档案

  若是[ l ]则表示为连结档(link file);

  若是[ b ]则表示为装置文件里面的可供储存的接口设备;

  若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标。

上述test为档案

后面9个字符3个为一组,分别代表档案所有者,群组成员,其他成员对该档案的权限。

例如:rwxrwxr-x表示该档案所有者对它可读可写可执行,群组成员对它可读可写可执行,其他成员可读可执行,但不可写。

注意,当档案是目录的时候,要想对它可读可写,必须要先具备可执行的条件才行,所以假设-drwxr--r--的时候,群组成员和其他成员对它可读吗?答案是否定的,因为该档案是目录,对目录不可执行(访问,后面会解释)就不能进行读写。

在windows下,档案时候可执行是由档案的附档名(即后缀名)来决定的,例如exe,bat,com文件,但是在linux下附档名和文件是否可执行没有关系,档案的可执行是另外一层含义,下面会解释。

2)  连接数

  连接占用的节点数(inode),如果是目录的话,就与该目录下还有多少目录有关。后面介绍。

3)  表示这个档案的所有者

4)  表示这个档案的拥有任所在的群组

5)  档案大小 

6)  最后修改时间

7)  档案名称

  

3   重点如何改变档案权限 ///实践

1)  改变所有者   chown

    

  chown   -R   newusr  filename/dirname

  将档案的所有者改为newusr,若为目录,还可一使用R参数使目录下的档案都递归的改变。

    

2)  改变所属群组  chgrp

    方法同上

3)  改变9个属性: chmod 

    两种方式:

      A  数字方式:三个字符rwx分别代表4,2,1

      [root@linux ~]# chmod   [-R]   xyz   档案或目录

      参数:

        xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

        -R : 进行递归( recursive )的持续变更,亦即连同次目录下的所有档案、目录

        都更新成为这个群组之意。常常用在变更某一目录的情况。

      例如chomod  -R  740  testDir

      740即rwxr-----的意思

      B  符号类型改变档案权限

        还有一个改变属性的方法呦!从之前的介绍中我们可以发现,基本上就九个属性分别是(1)user (2)group

        (3)others 三群啦!那么我们就可以藉由 u, g, o 来代表三群的属性!此外, a 则代表 all 亦即全部的三群!

        例如:chmod  u=rwx,go=rx  .bashrc

        等价与第一种的chomod 
755  .bashrc

4 知道目录的属性的含义

    

  刚刚上面我们提到的属性几乎都是针对一般档案的特性在说明,那么如果是针对目录时, 那个 r, w, x 对

目录是什么意义呢?简单的说:

  •   r (read contents in directory): 表示具有读取目录结构清单的权限,所以当您具有读取 (r)

  一个目录的权限时, 您就可以利用 ls 这个指令将该目录的内容列表显示出来!

  •  w (modify contents of directory): 这个可写入的权限对目录来说,是很了不起的! 因为他

  表示您将具有异动该目录结构清单的权限,也就是底下这些权限:

    o 建立新的档案与目录;

    o 删除已经存在的档案与目录(不论该档案是属于谁的!)

    o 将已存在的档案或目录进行更名;

    o 搬移该目录内的档案、目录位置。

  所以说,如果您是一般身份使用者,例如鸟哥的账号 dmtsai ,那么在 /home/dmtsai 这个家目录内, 无论是谁 (包括 root) 建立的档案,无论该档案属于谁,无论该档案的属性是什么,dmtsai 这个使用者都『有权力将该档案删除』的喔!

  

  •x (access directory): 这个在上头我们已经稍微提过了, x 与能否进入该目录有关!!

5   了解知道档案的种类介绍

  任何装置在 Linux 底下都是档案, 不仅如此,连数据沟通的接口也有专属的档案在负责~所以,您会了解到, Linux 的档案种类真的很多~ 除了前面提到的那个 -, d 亦即所谓的一般档案与目录档案之外,还有哪些种类的档案呢?

1)  正规档案 (regular file ):

  就是一般我们在进行存取的类型的档案,在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ],例如 [-rwxrwxrwx ]。另外,依照档案的内容,又大略可以分为:

  o纯文字文件(ASCII):这是 Unix 系统中最多的一种档案类型啰,称为纯文字文件是因为内容为我们人类可以直接读到的数据, 例如数字、字母等等。

  o二进制文件(binary):还记得我们在『 Linux 是什么 』那一章里面的 GNU 发展史中提过, 我们的系统其实仅认识且可以执行二进制档案 (binary file) 吧?没错可执行档 (scripts, 文字型批次文件不算) 就是这种格式

  

  o数据格式文件(data): 有些程序在运作的过程当中会读取某些特定格式的档案,那些特定格式的档案可以被称为数据文件 (data file)。该档案是一个 datafile ,他能够透过 last 这个指令读出来! 但是使用 cat 时,会读出乱码~因为他是属于一种特殊格式的档案。

2)  目录 (directory):

  就是目录啰~第一个属性为 [ d ],例如 [drwxrwxrwx]。

3)   连结档 (link):

  就是类似 Windows 底下的快捷方式啦!第一个属性为 [ l ], 例如[lrwxrwxrwx] ;

4)  设备与装置文件 (device):

  与系统周边及储存等相关的一些档案, 通常都集中在 /dev 这个目录之下!通常又分为两种:

  

  o区块 (block) 设备档 :就是一些储存数据, 以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是 /dev/hda1 等等的档案啦!第一个属性为 [ b ];

  o字符 (character) 设备档 :亦即是一些串行端口的接口设备, 例如键盘、鼠标等等!第一个属性为 [ c ]。

5)  资料接口文件 (sockets):

    

    既然被称为数据接口文件, 想当然尔,这种类型的档案通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个socket 来进行数据的沟通了。第一个属性为 [ s ], 最常在 /var/run 这个目录中看到这种档案类型了。

6)  数据输送文件 (FIFO, pipe):

   FIFO 也是一种特殊的档案类型,他主要的目的在解决多个程序同时存取一个档案所造成的错误问题。 FIFO 是 first-in-first-out 的缩写。

第一个属性为 [p] 。

6 熟悉目录配置,各目录的含义以及建议规划,理解原理 ///原理

    

  因为 Linux 的开发者实在太多了,如果每个人都发展出属于自己的目录配置方法, 那么将可能会造成很多管理上的困扰。您能想象,您进入一个企业之后,所接触到的 Linux 目录配置方法竟然跟您以前学的完全不同吗?!很难想象吧~所以,后来就有所谓的 Filesystem Hierarchy Standard (FHS) 标准的出炉了!这个 FHS ( http://www.pathname.com/fhs/ )

  FHS 定义出两层规范出来,第一层是 / 底下的各个目录应该要放置什么样内容的档案数据,例如 /etc 应该要放置设定档, /bin 与 /sbin 则应该要放置可执行档等等。第二层则是针对
/usr 及 /var 这两个目录的次目录来定义的。 例如 /var/log 放置系统登录文件、 /usr/share放置共享数据等等。由于 FHS 仅是定义出最上层 (/) 及次层 (/usr, /var) 的目录内容应该要放置的档案数据, 因此,在其它个次目录层级内,就可以随开发者自行来配置了。

  

  1)  建议不可与 root partition 分开的目录

  

   那么是否有『一定』要放在 root partition 内的目录呢?有啊!那就是: /etc/, /sbin/,/bin/, /dev/ 以及 /lib/ 这几个目录了。为什么呢?因为我们的 Linux 系统在开机的时候,一开始进行核心加载时, 只会挂载一个 partition ,那就是 / 。但是开机的时候会用到很多的指令与函式库,举例来说,要挂载, 就得需要 mount
这支程序,而且我们也需要 init 这支程序,还需要用到很多的设定档,例如 /etc/inittab 等等。而我们核心的模块则是放置在 /lib 里面。当然, /dev 是所有装置放置的目录, 也需要在开机的时候使用到的。因此,这些目录都需要跟 / 绑在一起喔!

  2)  建议最好独立成为单一 partition 的目录

    

    至于有些目录则是因为安全性与特殊功能性,而希望能够独立成为一个自己的 partition 呢!例如: /home, /usr, /var, /tmp 等等。我们必须要先知道的,系统上的使用者个人家目录在 /home 里面, 这个目录也是可能被使用的最频繁的目录之一。此外,为了资源分配较为平均, 我们可能会希望针对每个人限制他可以使用的最大硬盘总量(quota),在这个前提之下,
您就必须要将 /home 独立出来,而且最好这个 partition 能够大一点,尤其是您的 Linux 是作为档案服务器 (file server) 时,就更形重要了。至于 /usr 则是一些程序安装的目录,也可以独立出来的;还有 /var/, 这个目录由于记录了相当多的常用数据,读取真的是很频繁,所以是『很容易挂点的 partition 一! 如果能够将他独立出来,』那么当
/var/真的、万一、不小心挂点时,就不会影响到其它的 partition , 最起码能有一定程度的安全性啦!

  3)  特别重要的几个目录

  

    除了针对 partition 的观念来谈目录的重要性之外,有几个比较重要的目录您也需要了解一下:

•/etc:

  这个目录是系统设定文件放置的地方, 包括您系统上的账号与密码 (/etc/passwd,

/etc/shadow),还有开机时所要用到的各项设定值 (/etc/sysconfig/*) ,还有各主要的网络服

务的设定文件,都在这个目录中。 意思就是说,如果这个目录底下的档案被删除或者是死掉了,

嘿嘿~ 您的系统大概也就需要『很花功夫』的重建了~ ^_^。因此, 一般鸟哥都会定期将这个

目录的所有档案给他备份下来, 反正这个目录的大小应该不会超过 50MB 才对,多多备份,有备

无患啊!

•/usr/local:

  虽然说目前已经将这个目录的重要性移动到 /opt 了, 但是鸟哥还是比较习惯将我

自己开发或自行额外安装的软件放置在这个 /usr/local 目录下。 如果您的 Linux 系统是多人

共管的话,那么,养成一个良好的操作习惯是有必要的。 那么安装软件的习惯也要好好建立起来

啊~不要随意安装呢! 统一放置在 /usr/local 或者是 /opt 底下吧! ^_^

•/var:

  在上面提过一次,这里再次强调。 这个目录是在管理系统运作过程中的重要中间暂存数据

的,例如 /var/lib 与 /var/run 。 此外,最终的数据例如邮件 /var/spool/mail 也是放置在

这个目录中~ 另外,几乎所有服务的登录文件 (可以记录谁、什么时候、由哪里登入主机、做了

什么事等等信息!) 都放在 /var/log 这个目录下,因此,这个目录也很重要。记得常常去检查

/var/log/messages 这个档案是否有异常啊~

好了,知道了 Linux 的档案权限,目前也知道了各个档案内可能摆放的数据是什么了, 那么再来说说你

的目录与磁盘分割之间的相关性。通常一般的大型主机都不会将所有的数据放置在一个磁盘中 ( 就是只有

一个『 / 』根目录 ),这有几个目的:

•安全性考虑:

  你的系统通常是在 /usr/ 中,而个人数据则可能放置在 /home 当中,至于一些开机数据则放置

在 /etc 当中。如果将所有的数据放在一起,当你的系统不小心被黑客破坏,或者不小心自己砍

了一个小东西, 则所有的咚咚也都跟着不见了.....这对于我们市井小民或许无所谓,再安装一

次就好了, 但是对于一些大型企业可不行这样!因此需要将数据分别放置于不同的磁盘中,会比

较保险些。

•便利性:

  如果你需要升级你的系统的话,是否需要重新 format 安装呢?有些数据例如 /home 里面的数据为个人用户的数据,似乎与系统无关!所以如果你将这些数据分别放置于不同的磁盘, 则你要升级或者进行一些系统更动时,将比较有弹性。

你或许可以将你的系统做成这样的 partition 分布:

/

/boot

/usr

/home

/var

这是比较常见的磁盘分布情况,其中:

  • / 根目录可以分配约 1 GB 以内;

  • /boot 大概在 50 MB 就可以了,因为开机档案并不大;

  • /var 就至少需要 1GB 以上,因为你的 mail 、 proxy 预设的储存区都在这个目录中,除非你要将一些设定改变!

  •/home 与 /usr 通常是最大的,因为你所安装的数据都是在 /usr/ 当中,而用户数据则放置在/home 当中,因此通常大家都会建议你将所剩下的磁盘空间平均分配给这两个目录说! 不过也不一定啦! /usr 大概给个 10G 就很多了~其它的可以都给 /home ,也可以保留一些剩余空间来作为以后的安装与设定用啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: