鸟哥的私房菜学习笔记九 关于文件。。。。。

来源:互联网 发布:香港青旅 知乎 编辑:程序博客网 时间:2024/06/08 02:16

一、用户身份与群组的记录文件

在linux系统中,系统上的账号记录在/etc/passwd文件中

个人的密码记录在/etc/shadow这个文件中

linux的所有组名都记录在/etc/group中


二、linux的文件属性

[root@www ~]# ls -altotal 156drwxr-x---   4    root   root     4096   Sep  8 14:06 .drwxr-xr-x  23    root   root     4096   Sep  8 14:21 ..-rw-------   1    root   root     1474   Sep  4 18:27 anaconda-ks.cfg-rw-------   1    root   root      199   Sep  8 17:14 .bash_history-rw-r--r--   1    root   root       24   Jan  6  2007 .bash_logout-rw-r--r--   1    root   root      191   Jan  6  2007 .bash_profile-rw-r--r--   1    root   root      176   Jan  6  2007 .bashrc-rw-r--r--   1    root   root      100   Jan  6  2007 .cshrcdrwx------   3    root   root     4096   Sep  5 10:37 .gconf      <=范例说明处drwx------   2    root   root     4096   Sep  5 14:09 .gconfd-rw-r--r--   1    root   root    42304   Sep  4 18:26 install.log <=范例说明处-rw-r--r--   1    root   root     5661   Sep  4 18:25 install.log.syslog[    1   ][  2 ][   3  ][  4 ][    5   ][     6     ][       7          ][  权限  ][连结][拥有者][群组][文件容量][  修改日期 ][      檔名        ]

上面这幅图很好的说明了每个文件的属性

文件属性的示意图

文件的类型与权限之内容

第一个字符代表这个文件是『目录、文件或链接文件等等』:

  • 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行;
  • 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
  • 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
  • 第二组为『同群组的权限』;
  • 第三组为『其他非本群组的权限』。
  • 文件的档名

这个字段就是档名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』,例如上表中的.gconf那一行,该文件就是隐藏档。 你可以使用『ls』及『ls -a』这两个指令去感受一下什么是隐藏档啰!


二、linux文件权限的重要性

1、系统保护的功能

2、团队开发软件或数据共享的功能

3、未将权限设定妥当的危害


三、改变文件属性与权限

1、chgrp:改变文件的所属群组:要改变的组名必须要在/etc/group内存在才可以   exp: chgrp users install.log

2、chown:改变文件的拥有者,要改变的用户必须要在/etc/passwd内存在才可以, exp: chown junson install.log,如果要莲目录项的所有此目录或者文件同时更改文件的拥有者的话直接加上-R即可。

3、chmod:改变文件的权限,SUID,SGID,SBIT等等的特性

这个就全抄了:

文件权限的改变使用的是chmod这个指令,但是,权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。我们就来谈一谈:

  • 数字类型改变文件权限

    Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限, 先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
    r:4
    w:2
    x:1
    每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others= --- = 0+0+0 = 0
    所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:
    [root@www ~]# chmod [-R] xyz 文件或目录选项与参数:xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。-R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
    举例来说,如果要将.bashrc这个文件所有的权限都设定启用,那么就下达: 
    [root@www ~]# ls -al .bashrc-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc[root@www ~]# chmod 777 .bashrc[root@www ~]# ls -al .bashrc-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
    那如果要将权限变成『 -rwxr-xr-- 』呢?那么权限的分数就成为 [4+2+1][4+0+1][4+0+0]=754 啰!所以你需要下达『 chmod 754 filename』。 另外,在实际的系统运作中最常发生的一个问题就是,常常我们以vim编辑一个shell的文字批处理文件后,他的权限通常是 -rw-rw-r-- 也就是664, 如果要将该文件变成可执行文件,并且不要让其他人修改此一文件的话, 那么就需要-rwxr-xr-x这样的权限,此时就得要下达:『 chmod 755 test.sh 』的指令啰!

    另外,如果有些文件你不希望被其他人看到,那么应该将文件的权限设定为例如:『-rwxr-----』,那就下达『 chmod 740 filename 』吧! 
还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!此外, a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:

chmodu
g
o
a+(加入)
-(除去)
=(设定)r
w
x文件或目录
来实作一下吧!假如我们要『设定』一个文件的权限成为『-rwxr-xr-x』时,基本上就是:

  • user (u):具有可读、可写、可执行的权限;
  • group 与 others (g/o):具有可读与执行的权限。

所以就是:
[root@www ~]# chmod  u=rwx,go=rx  .bashrc# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格![root@www ~]# ls -al .bashrc-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc
那么假如是『 -rwxr-xr-- 』这样的权限呢?可以使用『 chmod u=rwx,g=rx,o=r filename 』来设定。此外,如果我不知道原先的文件属性,而我只想要增加.bashrc这个文件的每个人均可写入的权限, 那么我就可以使用:
[root@www ~]# ls -al .bashrc-rwxr-xr-x  1 root root 395 Jul  4 11:45 .bashrc[root@www ~]# chmod  a+w  .bashrc[root@www ~]# ls -al .bashrc-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc
而如果是要将权限去掉而不更动其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:
[root@www ~]# chmod  a-x  .bashrc[root@www ~]# ls -al .bashrc-rw-rw-rw-  1 root root 395 Jul  4 11:45 .bashrc
知道 +, -, = 的不同点了吗?对啦! + 与 – 的状态下,只要是没有指定到的项目,则该权限『不会被变动』, 例如上面的例子中,由于仅以 – 拿掉 x 则其他两个保持当时的值不变!多多实作一下,你就会知道如何改变权限啰! 这在某些情况底下很好用的~举例来说,你想要教一个朋友如何让一个程序可以拥有执行的权限, 但你又不知道该文件原本的权限为何,此时,利用『chmod a+x filename』 ,就可以让该程序拥有执行的权限了。是否很方便?



四、linux的文件种类,扩展名基本上可以无视

在linux下一切皆文件

文件的种类有:

1、常规文件:【-】纯文本文件,二进制文件,数据格式文件

2、目录:【d】

3、连结档:【l】

4、设备与装置文件:系统周别及存储相关的的一些文件通常都几种在/dev这个目录下,通常文卫两种块设备【b】和字符设备【c】

5、数据接口文件:【s】

6、数据传送文件:【p】


五、linux文件长度的限制:

在linux地下,使用预设的ext2/ext3文件系统,针对文件的档名长度限制为:

1、单一文件或目录的最大容许文件名为255个字符

2、包含完整路径名臣攻击目录(/)的完整档名为4096个字符

文件名的限制

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因为这些符号在文字接口下,是有特殊意义的!另外,文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』喔!






0 0
原创粉丝点击