文件权限与目录配置

Linux文件属性

  • 第一栏代表这个文件的类型与权限

    • 第一个字符代表这个文件是“目录、文件或链接文件等等”:
      • 当为[ d ]则是目录,例如上表文件名为“.config”的那一行;
      • 当为[ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行;
      • 若是[ l ]则表示为链接文件(link file);
      • 若是[ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备);
      • 若是[ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)。
    • 接下来的字符中,以三个为一组,且均为“rwx” 的三个参数的组合。 [ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。
      • 第一组为“文件拥有者可具备的权限”,以“initial-setup-ks.cfg”那个文件为例, 该文件的拥有者可以读写,但不可执行;
      • 第二组为“加入此群组之帐号的权限”;
      • 第三组为“非本人且没有加入本群组之其他帐号的权限”。
  • 第二栏表示有多少文件名链接到此节点(i-node):

每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个文件名就会链接到一个i-node

  • 第三栏表示这个文件(或目录)的“拥有者帐号”
  • 第四栏表示这个文件的所属群组
  • 第五栏为这个文件的容量大小,默认单位为Bytes;
  • 第六栏为这个文件的创建日期或者是最近的修改日期:

这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份.

  • 第七栏为这个文件的文件名

改变文件属性与权限

  • chgrp :改变文件所属群组
  • chown :改变文件拥有者
  • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

1.改变所属群组, chgrp

[root@study ~]# chgrp [-R] dirname/filename ...
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
     都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。
范例:
[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May  4 18:01 initial-setup-ks.cfg
[root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group:  `testing' <== 发生错误讯息啰~找不到这个群组名~

2.改变文件拥有者, chown

[root@study ~]# chown [-R] 帐号名称 文件或目录
[root@study ~]# chown [-R] 帐号名称:群组名称 文件或目录
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更

范例:将 initial-setup-ks.cfg 的拥有者改为bin这个帐号:
[root@study ~]# chown bin initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 bin  users 1864 May  4 18:01 initial-setup-ks.cfg

范例:将 initial-setup-ks.cfg 的拥有者与群组改回为root:
[root@study ~]# chown root:root initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May  4 18:01 initial-setup-ks.cfg

3.改变权限, chmod

  • 数字类型改变文件权限

使用数字来代表各个权限,各权限的分数对照表如下:

r:4
w:2
x:1

[-rwxrwx—-]

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= —- = 0+0+0 = 0

如果要将.bashrc这个文件所有的权限都设置启用,那么就下达:

[root@study ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Dec 29  2013 .bashrc
[root@study ~]# chmod 777 .bashrc
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc
  • 符号类型改变文件权限

[root@study ~]# chmod  u=rwx,go=rx  .bashrc
# 注意喔!那个 u=rwx,go=rx 是连在一起的,中间并没有任何空白字符!
[root@study ~]# ls -al .bashrc
-rwxr-xr-x. 1 root root 176 Dec 29  2013 .bashrc

目录与文件的权限意义

  • 权限对文件的重要性

    • r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
    • w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
    • x (eXecute):该文件具有可以被系统执行的权限。
  • 权限对目录的重要性

    • r (read contents in directory):

      表示具有读取目录结构清单的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来。

    • w (modify contents of directory):

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

      • 创建新的文件与目录;
      • 删除已经存在的文件与目录(不论该文件的权限为何!)
      • 将已存在的文件或目录进行更名;
      • 搬移该目录内的文件、目录位置。 总之,目录的w权限就与该目录下面的文件名异动有关就对了啦!
    • x (access directory):

      能够进入该目录。

汇整一下数据:

元件 内容 叠代物件 r w x
文件 详细数据data 文件数据夹 读到文件内容 修改文件内容 执行文件内容
目录 文件名 可分类抽屉 读到文件名 修改文件名 进入该目录的权限(key)

举个栗子:

假设两个文件名,分别是下面这样:

  • /dir1/file1
  • /dir2
操作动作 /dir1 /dir1/file1 /dir2 重点
读取 file1 内容 x r - 要能够进入 /dir1 才能读到里面的文件数据!
修改 file1 内容 x rw - 能够进入 /dir1 且修改 file1 才行!
执行 file1 内容 x rx - 能够进入 /dir1 且 file1 能运行才行!
删除 file1 文件 wx - - 能够进入 /dir1 具有目录修改的权限即可!
将 file1 复制到 /dir2 x r wx 要能够读 file1 且能够修改 /dir2 内的数据

Linux文件种类与扩展名

文件种类:

  • 正规文件(regular file )

    依照文件的内容,又大略可以分为:

    • 纯文本文件(ASCII)
    • 二进制档(binary)
    • 数据格式文件(data)
  • 目录(directory)[d]

  • 链接文件(link)[l]

  • 设备与设备文件(device): 与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下。通常又分为两种:

    • 区块(block)设备文件[b] :就是一些储存数据, 以提供系统随机存取的周边设备,举例来说,硬盘与软盘等。
    • 字符(character)设备文件[c]:亦即是一些序列埠的周边设备, 例如键盘、鼠标等等!这些设备的特色就是“一次性读取”的,不能够截断输出。
  • 数据接口文件(sockets)[s]: 既然被称为数据接口文件, 这种类型的文件通常被用在网络上的数据承接了。 最常在/run或/tmp这些个目录中看到这种文件类型。

  • 数据输送档(FIFO, pipe)[p]: FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p] 。

Linux文件扩展名:

基本上,Linux的文件是没有所谓的“扩展名”的,虽然如此,不过我们仍然希望可以借由扩展名来了解该文件是什么东西,所以, 通常我们还是会以适当的扩展名来表示该文件是什么种类的。

Linux文件命名限制

  • 单一文件或目录的最大容许文件名为 255Bytes,以一个 ASCII 英文占用一个 Bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2Bytes 来说, 最大文件名就是大约在 128 个中文

  • 最好可以避免一些特殊字符比较好!例如下面这些:

    • ? > < ; & ! [ ] | ‘ “ ` ( )

文件目录结构

以下是对这些目录的解释:

  • /bin
    bin是Binary的缩写, 这个目录存放着最经常使用的命令。

  • /boot:
    这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。

  • /dev :
    dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。

  • /etc:
    这个目录用来存放所有的系统管理所需要的配置文件和子目录。

  • /home
    用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。

  • /lib
    这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。

  • /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

  • /media
    linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。

  • /mnt
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。

  • /opt
    这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

  • /proc
    这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
    这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    
  • /root
    该目录为系统管理员,也称作超级权限者的用户主目录。

  • /sbin
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。

  • /selinux
    这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。

  • /srv
    该目录存放一些服务启动之后需要提取的数据。

  • /sys

    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。

    sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

  • /tmp
    这个目录是用来存放一些临时文件的。

  • /usr
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。

  • /usr/bin:
    系统用户使用的应用程序。

  • /usr/sbin:
    超级用户使用的比较高级的管理程序和系统守护程序。

  • /usr/src:
    内核源代码默认的放置目录。

  • /var
    这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

  • /run
    是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。

/etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。

/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。

值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。

/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。

posted @ 2021-01-12 12:19  Max_hhg  阅读(260)  评论(0)    收藏  举报