ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux文件和目录的属性及权限

2019-11-23 21:03:48  阅读:315  来源: 互联网

标签:文件 rw oldboy inode Linux 权限 root block 属性


1.Linux中的文件

1.1 文件属性概述

Linux系统中的文件或目录的属性主要包括:

  • 索引节点inode
  • 文件类型
  • 权限属性
  • 链接数
  • 所归属的用户和用户组
  • 最近修改时间 等内容:

下面我们看执行 ls -lih 命令的结果(共10列):

  • -l 长格式
  • -i 显示 索引节点 inode
  • -h 以人类熟悉的方式显示文件大小
[root@oldboy oldboy]# ls -lhi
total 32K
275427 -rw-r--r-- 1 root root    8 Sep  4 14:56 123.log
275423 -rw-r--r-- 1 root root    0 Sep  4 14:46 dd.tx
275576 drwxr-xr-x 3 root root 4.0K Oct  1  2019 ext
275695 -rw-r--r-- 1 root root   71 Sep  4 19:45 file.txt
275582 -rw-r--r-- 1 root root    0 Oct  1  2019 jeacen
275694 -rw-r--r-- 1 root root  101 Sep  4 18:30 nginx.conf
275583 -rw-r--r-- 1 root root    0 Oct  1  2019 oldboy
275424 -rw-r--r-- 1 root root    0 Sep  4 14:47 second
275578 drwxr-xr-x 2 root root 4.0K Oct  1  2019 test
275584 -rw-r--r-- 1 root root    0 Oct  1  2019 wodi.gz
275579 drwxr-xr-x 2 root root 4.0K Oct  1  2019 xiaodong
275580 drwxr-xr-x 2 root root 4.0K Oct  1  2019 xiaofan
275581 drwxr-xr-x 2 root root 4.0K Oct  1  2019 xingfujie
275585 -rw-r--r-- 1 root root    0 Oct  1  2019 yingsui.gz

 

索引节点inode文件类型文件权限硬链接个数文件属主文件所属用户组文件大小文件修改时间文件名
275581 d rwxr-xr-x 2 root root 4.0K Oct 1 2019 xingfujie

 

 

 

文字解释

  • 第 1 列:inode 索引节点 编号(相当于身份证,唯一);
    • 系统读取文件时,首先通过文件名找到inode,然后才能读取到文件内容
  • 第 2 列:文件类型及权限(共10个字符)
    • 第一个字符为 文件类型
    • 后9个字符为 文件权限
  • 第 3 列:硬连接个数(详细看ln命令) 
  • 第 4 列:文件或目录所属的用户(属主)
    • 在Linux里面,文件和程序的存在必须要有用户和组,满足相应的存在需求。
  • 第 5 列:文件或目录所属的组
  • 第 6 列:文件或目录的大小
  • 第 7,8,9 列:文件或目录的修改时间
  • 第 10 列:实际的文件名或目录名
    • 严格来讲,文件名不算文件的属性

2. 索引节点

2.1 inode概述

硬盘要存储数据(房子要主人),首先要分区(隔断),然后格式化创建文件系统(装修),最后存数据。

 

Inode,中文意思是 索引节点(index node)。 

在每个Linux存储设备或存储设备的分区(存储设备可以是硬盘、软盘、U盘...)被格式化为ext4文件系统 (CentOS6.7)后,一般都有两部分:

  • 第一部分是Inode(很多个)
  • 第二部分是Block(很多个)

 

Block 是用来存储实际数据用的,例如:照片,视频等普通文件数据。

而 inode 就是用来存储这些数据属性信息的(也就是 ls -l的结果),inode包含的属性信息包括

  • 文件大小、
  • 属主、
  • 归属的用户组、
  • 读写权限、
  • 文件类型、
  • 修改时间,
  • 还包含指向文件实体的指针的功能( inode节点--block的对应关系)等,

但是,inode 里面唯独不包含文件名

 

Inode 除了记录文件属性的信息外,还会为每个文件进行信息索引,所以就有了inode 的数值。
操作系统根据指令,即可通过 inode 的值最快的找到相对应的文件实体。 

 

文件,inode,block之间的关系如下:

 

这就相当于,教室们门口贴一张纸(inode),有大家的位置信息,以及学生姓名,性别,座位就相当于block。 

 

打个比方,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页内容,而inode就相当于这本书前面的目录。
一本书有很多内容,一个知识点可能有很多页,如果想查找某部分或某知识点的内容,我们一般先查书的目录,通过目录能更快的找到我们想看的知识点的内容。
虽然不太恰当,但还是比较形象的。

 

当我们用 ls 查看某个目录或文件时,如果加上 -i 参数,就可以看到 inode 节点了。

 

ls -li 查看目录下所有文件和目录的属性和inode节点

[root@oldboy oldboy]# ll -i /oldboy
total 32
275427 -rw-r--r-- 1 root root    8 Sep  4 14:56 123.log
275423 -rw-r--r-- 1 root root    0 Sep  4 14:46 dd.tx
275576 drwxr-xr-x 3 root root 4096 Oct  1  2019 ext
275695 -rw-r--r-- 1 root root   71 Sep  4 19:45 file.txt
275582 -rw-r--r-- 1 root root    0 Oct  1  2019 jeacen
275694 -rw-r--r-- 1 root root  101 Sep  4 18:30 nginx.conf
275583 -rw-r--r-- 1 root root    0 Oct  1  2019 oldboy
275424 -rw-r--r-- 1 root root    0 Sep  4 14:47 second
275578 drwxr-xr-x 2 root root 4096 Oct  1  2019 test
275584 -rw-r--r-- 1 root root    0 Oct  1  2019 wodi.gz
275579 drwxr-xr-x 2 root root 4096 Oct  1  2019 xiaodong
275580 drwxr-xr-x 2 root root 4096 Oct  1  2019 xiaofan
275581 drwxr-xr-x 2 root root 4096 Oct  1  2019 xingfujie
275585 -rw-r--r-- 1 root root    0 Oct  1  2019 yingsui.gz

 

查看指定某个文件的包括inode在内的所有属性的命令为:stat filename

  • 文件大小,
  • Block块数,
  • Inode索引节点, 
  • 链接数, 
  • 权限 
  • 访问时间atime,修改时间mtime,改变时间ctime
[root@oldboy oldboy]# stat nginx.conf
  File: `nginx.conf'
  Size: 101             Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 275694      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-09-04 18:30:51.437111190 +0800
Modify: 2019-09-04 18:30:51.422111642 +0800
Change: 2019-09-04 18:30:51.434111276 +0800

 

第1列inode值是 275694:查看一个文件或目录的inode,通过 ls命令的 -i 参数即可。 

因为 inode 要存放文件的属性信息,所以 inode 是有大小的。 

CentOS5 inode 的默认大小是128字节,而CentOS 6 inode 的默认大小是256 字节,inode的大小在分区被格式化创建文件系统之后就定下来了,格式化以后就无法更改inode大小了。格式化前可以通过参数指定 inode大小,但是一般工作环境没这个需求。

 

不同CentOS版本 inode 大小不同:

[root@oldboy oldboy]# dumpe2fs /dev/sda3|grep -i "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               256

boot分区,inode大小默认128字节:

[root@oldboy oldboy]# dumpe2fs /dev/sda1|grep -i "inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               128

 

查看文件系统inode总量以及剩余量:

[root@oldboy oldboy]# df -i
Filesystem     Inodes IUsed  IFree IUse% Mounted on
/dev/sda3      462384 56099 406285   13% /
tmpfs          127522     1 127521    1% /dev/shm
/dev/sda1       51200    38  51162    1% /boot

查看的对应信息为:文件系统名,Inode总数量,使用的Inode数量,剩余的Inode剩余量,使用的百分比占比,挂载所在分区。

 

查看磁盘的使用量:(其中,inode也算磁盘的空间)

[root@oldboy oldboy]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       6.9G  1.5G  5.1G  22% /
tmpfs           499M     0  499M   0% /dev/shm
/dev/sda1       190M   36M  145M  20% /boot

 

 

磁盘空间是否满了,由两项参数决定的:

  • 第一个是 inode 满了
  • 第二是是 block 满了

任何一项满了,都无法进行存储。

 

磁盘满的一个特征( no space left on device).

 

有关 inode 的小结:

  1. 磁盘被分区并格式化为 ext4 文件系统后,会生成一定数量的 inode 和 block
  2. inode 称为 索引节点,它的作用是存放文件的属性信息以及作为文件的索引(指向文件的实体)
  3. ext3/ext4 文件系统的 block存放的是文件的实际内容
  4. inode 是磁盘上的一块存储空间,CentOS 6 非启动分区 inode 默认大小 256 字节,CentOs5是128字节。
  5. inode 的表现是形式一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的。
  6. inode 节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
  7. ext3/ext4文件系统下,一个文件被创建后至少要占用一个 inode 和一个 block
  8. ext3/ext4文件系统下,正常情况,一个文件占用且只能占用一个 inode (人和身份证)
  9. block是用来存储实际数据的,每个block的大小一般有 1k,2k,4k几种。 其中引导分区等为 1k,其他普通分区为 4k(CentOS 6)
  10. 如果一个文件很大(几个G),可能占多个block;如果文件很小(0.01k),至少占一个,并且这个block的剩余空间就浪费了,即无法再存储其他数据了。
  11. inode大小和总量查看:
    • dumpe2fs /dev/sda3|egrep -i 'inode count|block count'
    • dumpe2fs /dev/sda3|egrep -i 'inode size|block size' 默认 block count 一般会大于inode count的数量。
  12. 查看inode的总量和使用量:
    • df -i
  13. 查看文件的inode信息方法
    • ls -li
    • stat filename
  14. 如何生成及指定 inode 大小
    • mkfs.ext4 -b 2048 -l 256 /dev/sdb
[root@oldboy oldboy]# dumpe2fs /dev/sda3|egrep -i 'block count|inode count'
dumpe2fs 1.41.12 (17-May-2010)
Inode count:              462384
Block count:              1849088
Reserved block count:     92454

[root@oldboy oldboy]# dumpe2fs /dev/sda3|egrep -i 'block size|inode size'     
dumpe2fs 1.41.12 (17-May-2010)
Block size:               4096
Inode size:               256

有关block的知识小结:

  1. 磁盘读取数据是按 block为单位读取的
  2. 一个文件可能占用多个block。每读取一个block就会消耗一次 磁盘I/O.
  3. 如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多
  4. 一个block只能存放一个文件的内容,无论内容有多小。如果block 4K,那存放1K的文件,剩余3K就不能存放被的文件,只能浪费了
  5. Block并非越大越好。Block太大对于小文件存放就会浪费磁盘空间,例如:1000k的文件,Block的大小为4k,占用250个block;如果block默认大小为1k,占用1000个block。访问效果谁更高?消耗IO分别为250次和1000次。
  6. 根据业务需求,确定默认的block大小。如果是大文件(大于16K)一般设置block大一点,小文件(小于1k)一般设置block小一点。
  7. block太大,例如4k,文件都是0.1k的,大量浪费磁盘空间,但是访问性能高
  8. block太小,例如1k,文件都是1000k,消耗大量磁盘IO
  9. block的设置也是格式化分区时候
    • mkfs.ext4 -b 2048 -I 256 /dev/sdb
  10. 企业里文件都会比较大(一般大于4k),block设置大一些会提升磁盘访问效率
  11. ext3/ext4 文件系统(CentOS 5和6),一般都设置为 4K
 

当前的生产环境一般设置为4k。特殊的业务,如视频可以加大block大小。


总体小结:

  1. 磁盘被分区格式化文件系统后,会分为 inode 和 block 两部分内容。
  2. inode 存放文件的属性以及指向文件实体的指针,文件名不在inode里,一般在上级目录的block里。
  3. 访问文件,原理通过文件名--> inode --> blocks
  4. inode一般情况下默认大小为256B,block大小1,2,4k,默认是4k,注意,引导分区等特殊分区除外
  5. 通过 df -i 查看inode的数量及使用情况,dumpe2fs /dev/sda3 查看inode和block的大小及数量
  6. 一个文件至少要占用inode 及一个block,多个文件可以占用同一个inode(硬链接),相同文件。
  7. 一个block 只能被一个文件使用,如果文件很小,block很大,剩余空间浪费,无法继续被其他文件使用
  8. block不是越大越好,要根据业务的文件大小进行选择,一般CentOS6 就是默认 4K
  9. 可以在格式化的时候改变inode和block的大小
    • mkfs.ext4 -b 2048 -I 2048 /dev/sdb

通过inode 删除文件

  1. 查看文件
    • ls -li
  2. 通过inode删除文件
    rm `find . -inum 159004`
    
    find . -inum 159004 -exec rm {} \;

     


文件删除恢复 ext3grep

数据恢复需要重启,恢复数据会影响生产环境。

所以,应该养成好习惯,先备份再操作,要能快速还原,不容易还原的,先通过多套测试环境测试,然后再操作。

 

企业面试题:一个100M(100000K)的磁盘分区,分别写入 1K 的文件或写入 1M 的文件,分别可以写多少个?

错误解答:1k的个数:100 x 1000=100000个,1M的文件个数:100/1=100个

 

正确答案: 

假设 Block的默认大小为 4K,写入1k的文件的数量基本上就是block的数量: 

  • 假设 inode数量够多的情况下,就是Block的数量,浪费3/4的容量; 
  • 假设 inode 数量小于block的数量,就是inode的数量,浪费3/4的容量。
 

假设 Block的默认大小为 4K,写入1M的文件的数量:
总的block数量/ 250 block = 存放1M的数量

磁盘空间多大,基本就可以写入100/1M数量,一般情况下inode和block都是足够的。

 

知识点: 

  • 上面的考试题考察的是文件系统inode 和block的知识
  • inode是存放文件属性信息的(也包含指向文件实体的指针),默认大小128byte(CentOS58),256byte(CentOS64)
  • block是存放文件实际内容的,默认大小1k(boot)或4k(非系统分区默认给4k),一般企业多用4k的block
  • 一个文件至少要占用一个inode及一个block
  • 默认较大分区常规企业真实场景下,inode数量是足够的。而block数量消耗会更快。

企业面试题:一个100M(Block的总大小,个数和单个block大小有关)的磁盘分区,分别写入 0.5K 的文件,及写入 1M 的文件,分别可以写多少个?为什么?

 

答案相关知识点

  1. Inode 是存放文件属性信息的,默认大小为128byte(CentOS58), 256byte(CentOS64)
  2. block是存放文件实际内容的,默认大小为 1k(boot) 或 4k(非系统分区默认给4k)
  3. 一个文件至少要占用一个 inode 和一个block
  4. 默认分区常规情况下,inode数量是足够的。而 block数量消耗的会更快。
 

正确解答

  1. 默认分区常规情况下, 对大文件来讲 inode是足够的。而block数量消耗的会更快,Block为 4k的情况,1M的文件不会有磁盘浪费情况,所以文件数量大概为 100/1 =100个
  2. 对于小文件 0.1k, inode会消耗的更快。默认分区的时候block数量是大于inode数量的。
    • 每个小文件都会占用一个inode和一个block,所以最终文件数量:
      • inode会先消耗完,文件总量是 inode的数量。

企业案例:如果向磁盘写入数据提示如下错误:No space left on device,通过 df -h查看磁盘空间,发现没满,请问可能原因是什么?企业场景,什么情况下会导致这个问题发生呢?

 

答案

可能是inode数量被消耗尽了。

 

企业工作中邮件临时队列/var/spool/clientmqueue这里很容易被大量小文件占满导致No space left on device的错误。
Clientmqueue目录只有安装了sendmail服务,才会有,是sendmail邮件的临时队列。 

CentOS5.8默认就会安装sendmail服务,CentOS6.6 默认没有sendmail。


3.文件类型及文件扩展名

 

3.1 文件类型介绍 

Linux系统不同于Windows系统,两者的文件类型和文件扩展名也有很大的差异。 

Linux系统中的文件类型和文件扩展名所代表的意义和Windows系统中是不同的。

在Linux系统中,我们一般通过应用程序或命令创建的文件,如file.txt, file.tar.gz,这些文件的扩展名不同,且要用不同的程序或命令来打开,但都是常规文件(也被称为普通文件)。

后面附带的后缀文件扩展名(.txt,.tar.gz),除了让曾经习惯windows的用户易读外,大多数对于Linux系统来说没有特别实际的意义,在Linux系统中也是为了易读,而Windows系统中的扩展名就是实实在在表示文件的类型格式

 

例如: 

  • windows图片文件扩展名:jpg, jpeg, png, gif 等
  • 文本文件扩展名: doc, docx, txt, pdf等

3.2 Linux中的文件类型

在Linux系统中,可以说一切设备(包括目录、普通文件)皆为文件。 

 

文件类型包含有:

  • 普通文件
  • 目录
  • 字符设备文件
  • 块设备文件
  • 符号链接文件
  • 管道文件等等
 

当执行 ls -l 或 ls -al 命令后显示的结果中:

[root@oldboy oldboy]# ls -al
total 40
drwxr-xr-x   7 root root 4096 Sep  4 19:45 .
dr-xr-xr-x. 28 root root 4096 Sep  5 04:54 ..
-rw-r--r--   1 root root    8 Sep  4 14:56 123.log
-rw-r--r--   1 root root    0 Sep  4 14:46 dd.tx
drwxr-xr-x   3 root root 4096 Oct  1  2019 ext
-rw-r--r--   1 root root   71 Sep  4 19:45 file.txt
-rw-r--r--   1 root root    0 Oct  1  2019 jeacen
-rw-r--r--   1 root root  101 Sep  4 18:30 nginx.conf
-rw-r--r--   1 root root    0 Oct  1  2019 oldboy
-rw-r--r--   1 root root    0 Sep  4 14:47 second
drwxr-xr-x   2 root root 4096 Oct  1  2019 test
-rw-r--r--   1 root root    0 Oct  1  2019 wodi.gz
drwxr-xr-x   2 root root 4096 Oct  1  2019 xiaodong
drwxr-xr-x   2 root root 4096 Oct  1  2019 xiaofan
drwxr-xr-x   2 root root 4096 Oct  1  2019 xingfujie
-rw-r--r--   1 root root    0 Oct  1  2019 yingsui.gz

第一列第2-10个字符(比如rw-r--r--)是用来描述文件权限的。
而一列的第一个字符就是描述文件类型的,比如上面结果中就有-, d两种类型。

文件类型标识符英文名称文件类型说明
     
     
d directory 表示这是一个目录,如上文ext,在ext2fs中,目录是一个特殊的文件
- regular file 表示这是一个普通的文件,如上文的oldboy
l link 表示这是一个符号链接文件,实际上它指向另一个文件
b block 表示块设备和其他的外围设备,是特殊类型的文件
c character 表示字符设备文件
s socket 表示socket文件
p named pipe 表示管道文件

 

find -type 的文件类型的参数:

File is of type c:

              b      block (buffered) special

              c      character (unbuffered) special

              d      directory

              p      named pipe (FIFO)

              f      regular file

              l      symbolic link; this is never true if the -L  option  or  the
                     -follow  option  is  in  effect, unless the symbolic link is
                     broken.  If you want to search for symbolic links when -L is
                     in effect, use -xtype.

              s      socket

              D      door (Solaris)

3.3 文件类型分别介绍

3.3.1 普通文件regular file

[root@oldboy oldboy]# ls -l nginx.conf
-rw-r--r-- 1 root root 101 Sep  4 18:30 nginx.conf

通过ls -l查看nginx.conf的属性,可以看到第一列内容为-rw-r--r--,值得注意的是第一个符号是-,在Linux中,以这样的字符开头的文件就表示普通文件

 

这些文件一般是用相关的应用程序或系统命令创建,比如:

  • touch
  • cp
  • tar
  • echo
  • cat
  • >, >> 等工具命令。
 

普通文件的删除方式可以使用 rm 命令。

 

windows下的doc,ppt,zip,jpg等格式的文档在Linux下都属于普通文件。
Linux下的二进制文件,各种服务的配置文件,如:/etc/exports,/etc/rc.local等都是纯文本文件。

 

普通文件(regular file):第一个属性为"-",按照文件内容,又大略可以分为:

  • 纯文本文件ascii:文件内容可以直接读取到数据,例如:字母、数字、特殊符号等。
    • 可以用cat命令读文件,比如配置文件几乎都是这种类型的
  • 二进制文件binary:linux的命令程序就是这种格式。
    • 例如:cat命令就是一个二进制文件
  • 数据格式文件data:有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件。 
    • 例如:linux在用户登录时,都会将登录的数据记录在/var/log/wtmp按个文件内,该文件是一个数据文件。通过last命令读出来。cat命令会读出乱码。因为它属于一种特殊格式的文件。
 

补充:通过 file 命令可以查看文件类型。

[root@oldboy oldboy]# file nginx.conf 
nginx.conf: ASCII text

[root@oldboy oldboy]# file ext
ext: directory

[root@oldboy oldboy]# file /var/log/wtmp
/var/log/wtmp: data

 

3.3.2 目录文件 directory

执行 ls -ld 查看当前目录的目录属性:

[root@oldboy oldboy]# ls -ld
drwxr-xr-x 7 root root 4096 Sep  4 19:45 .

我们在oldboy目录下执行 ls -ld 目录名 时,可以看到第一列内容为 drwxr-xr-x,这种开头带有 d 字符的文件就表示目录。 

目录在Linux中是比较特殊的文件。

 

创建目录的命令可以用 mkdir 命令 或 cp命令(带-r 或 -a 参数),cp可以把一个目录复制为另一个目录。 

删除目录用 rm -r 或 rmdir(删空目录才可以)命令。

 

提示:执行 ls -F的结果,在写脚本时可以直接区别目录和文件,注意,每个目录的后面多了斜线。

[root@oldboy oldboy]# ls -F
123.log  ext/      jeacen      oldboy  test/    xiaodong/  xingfujie/
dd.tx    file.txt  nginx.conf  second  wodi.gz  xiaofan/   yingsui.gz

在生产场景中,我们一般通过下面办法过滤出所有目录文件:

  • ls -F /etc/ |grep '/$'
  • ls -F /etc/ |grep '^d'

 

3.3.3 字符设备或块设备文件 character or block 

如果我们进入/dev 目录,列一下文件:

[root@oldboy dev]# ls -la /dev/tty
crw-rw-rw- 1 root tty 5, 0 Sep  5 05:25 /dev/tty

我们看到/dev/tty 的属性是 "c",表示这是 字符设备文件。

字符设备就是串行端口的接口设备,如猫等串口设备。

[root@oldboy dev]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Sep  4 21:25 /dev/sda

我们看到/dev/sda的属性是"b", 表示这是 块设备。 

块设备就是存储数据供系统及程序访问的接口设备,如:硬盘,光驱等都属于块设备。

 

以上种类的文件,一般可用 mknod (mknod - make block or character special files)来创建,用 rm 来删除。 

目前在最新的 Linux 发行版本中,我们一般不需要自己来创建 设备文件 了。
因为这些文件是和内核相关联的。

 

3.3.4 套接口文件 socket 

当我们启动 MySQL 服务时,会产生一个 mysql.sock 文件。这个文件的属性的第一个字符是 s。

 

 

.sock 文件也是一类特殊的文件,这类文件通常在网络之间进行数据连接,如:我们可以启动一个程序来监听客户端的请求,客户端可以通过套接字来进行数据通信:

 

mysql -uroot -ppass -S /data/3306/mysql.sock
这个就是mysql 数据库 客户端程序连接服务器端命令,通过套接字文件来和数据库服务器通信的例子。

   

符号链接文件 也被称之为 软链接文件

[root@oldboy /]# ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 Aug 30 07:19 /bin/sh -> bash

当我们查看文件属性时,第一个字符是'l',这类文件标识链接文件(提示:上面的是软链接文件)。

[root@oldboy /]# ls -l /etc/rc.d/init.d /etc/init.d -d
lrwxrwxrwx. 1 root root   11 Aug 30 07:19 /etc/init.d -> rc.d/init.d
drwxr-xr-x. 2 root root 4096 Sep  5 01:05 /etc/rc.d/init.d

/etc/rc.d/init.d 是真实的文件,/etc/init.d指向的是/etc/rc.d/init.d

 

3.3.6 管道文件 FIFO,pipe 

FIFO 也是一个特殊的文件类型,主要是解决多个程序同时访问一个文件所造成的错误,第一个字符为p。
FIFO是fifo - first-in first out的缩写。

 

3.4 文件扩展名 

一般来说,Linux中的文件是不需要扩展名的。

Windows中可执行文件扩展名结尾通常是.ext, .com, .bat,而在Linux中文件可否执行就是看权限位的 x 位是否会有 x,图片文件扩展名结尾通常是.jpg, .gif, .bmp, .png等。

 

3.4.1 Linux下扩展名的作用

在Linux中,虽然扩展名没什么实际意义,但是为了兼容windows,同时,便于我们大部分习惯了windows的用户区分文件的不同,所以,我们还是习惯通过扩展名来表示不同文件的类型。

  1. .tar, .tar.gz, .tgz, .zip, .tar.bz 表示压缩文件,创建命令一般为 tar , gzip , unzip等
  2. .sh表示shell脚本文件,通过shell语言开发的程序
  3. .pl 表示perl语言文件,通过perl语言开发的程序
  4. .py 表示python语言文件,通过python语言开发的程序
  5. .html, .htm, .php, .jsp, .do 表示网页语言的文件
  6. .conf 表示系统的配置文件
  7. .rpm 表示rpm 安装包文件

 

4. 用户和用户组 

Linux/Unix 是一个多用户、多任务的操作系统。

 

用户user介绍:

Linux是一个多用户,多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。 

这个账户和用户是一个概念,通过建立不同属性的用户,一方面,可以合理的利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。 

 

每个用户都有一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能登入系统和相应的目录(除了密码验证外,还可以是密钥验证)。

 

在生产环境中,我们一般会为每个有权限管理服务器的运维人员分配一个独立的普通用户账号及8位(包含数字、字母、特殊字符)以上的密码,如oldboy。 

该人员只能通过建立的这个账号登录到系统中进行维护,当需要超级用户权限时,可以通过"sudo 命名名"的方法来执行仅有root用户才允许执行的权限。 

当然,sudo权限要尽量的小,还有,当运维人员人数不多时,如2-3个,也可以直接 su - 切换到超级用户root下,在执行相应的维护工作,在这里要特别提醒大家,维护时,如果不需要root权限,就不要进入root用户下操作,以减少误操作对系统带来的损失。

 

用户组介绍group

Linux系统中的用户组group,就是具有相同特征的用户user的集合。 

不设定组的话,默认的组和用户名相同,uid和gid也相同

[root@oldboy ~]# id oldboy
uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)
[root@oldboy ~]# id zoe
uid=501(zoe) gid=501(zoe) groups=501(zoe)

Linux系统中用户角色划分

在Linux系统中用户是分角色的,在Linux系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是,对于Linux系统来说,用户的角色是通过UID和GID识别的
特别是UID,在Linux系统运维中座中,一个UID是唯一标识一个系统用户的账号(相当于我们的身份证)。用户系统账号的名称(如oldboy)其实就是给人(管理员)看的,linux系统能够识别的仅仅是UID和GID这样的数字。 

用户的UID就相当于我们的身份证一样,用户名就相当于我们的名字。 

  • UID:User Identify 用户ID,相当于各位的身份证,在系统中是唯一的
  • GID:Group Identify 组ID,相当于各位的家庭或者你们的学校ID
 

用户和组的关系:

  • 一对一
    • 即一个用户可以存在在一个组里,也可以是组中的唯一组员,如:root
  • 一对多
    • 即一个用户可以存在多个用户组中。
  • 多对一
    • 多个用户可以存在于一个组中,这些用户具有和组相同的权限
  • 多对多
    • 多个用户可以存在于多个组中,并且几个用户可以归属相同的组。其实多对多关系就是前面三条的扩展

 

 

用户及用户组配置文件介绍

Linux系统下的账户文件主要有/etc/passwd, /etc/shadow, /etc/group,/etc/gshadow 四个文件。

 

与用户相关的配置文件: 

  • /etc/passwd
    • 用户的配置文件
  • /etc/shadow
    • 用户的影子口令文件
 

useradd username 添加用户,会对/etc/passwd, /etc/shadow, /etc/group, /etc/gshadow这四个文件进行改动。

 

[root@oldboy ~]# useradd beaty
[root@oldboy ~]# tail -1 /etc/passwd
beaty:x:502:502::/home/beaty:/bin/bash
[root@oldboy ~]# tail -1 /etc/shadow
beaty:!!:18144:0:99999:7:::
[root@oldboy ~]# tail -1 /etc/group
beaty:x:502:
[root@oldboy ~]# tail -1 /etc/gshadow
beaty:!::

用户的配置文件/etc/passwd

/etc/passwd 文件中每行定义一个用户账号,有多少行就表示多少个账号,在一行中可以清晰地看出,各内容之间又通过":"号划分了多少个字段,共7部分,这7部分分别定义了账号的不同属性,passwd文件实际内容如下:

[root@oldboy ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
rootx00root/root/bin/bash
账号名称 账号密码 账号UID 账号组GID 用户说明 用户家目录 shell解释器

 

 

 

 

 

标签:文件,rw,oldboy,inode,Linux,权限,root,block,属性
来源: https://www.cnblogs.com/zoe233/p/11919603.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有