5.4 特殊目录和文件

admin 提交于 周四, 04/11/2019 - 09:04

1. 常见目录用途

  • /etc: 系统配置目录
  • /var: 动态文件或数据存放目录
  • /var/log: 存放所有日志文件的目录,里面存放很多系统、软件、用户等相关的日志信息
  • /var/www: Web服务器默认根目录
  • /var/spool: 里面主要都是一些临时存放,随时会被用户所调用的数据,打印机、邮件、代理服务器等假脱机目录存放在该目录下。
  • /tmp: 临时文件存放区域,可以被所有用户使用。主要存放一些比较小的、有效时间短的系统临时文件,许多系统开机时会清除/tmp下的文件。
  • /var/tmp: 通常位于物理磁盘上,可以较长时间保存一些较大的临时文件。值得注意的是,/var/tmp在早期启动过程中可能不可用,因为/var和/或/var/tmp可能是挂载点。因此,大多数启动脚本都使用/ tmp而不是/var/tmp作为临时文件夹。

 

2. Set UID

[root@localhost ~]# ls -l $(which passwd)

-rwsr-xr-x. 1 root root 27832 Feb 10 2014 /usr/bin/passwd

当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID。

这个特殊权限的特殊性的有以下作用:

1、SUID权限仅对二进制程序(binary program)有效;

2、执行者对于该程序需要具有x的可执行权限;

3、本权限仅在执行该程序的过程中有效(run-time);

4、执行者将具有该程序拥有者(owner)的权限。

SUID的目的就是:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源,passwd就是一个典型的例子。

linux系统中的用户密码是保存在/etc/shadow中的,而这个文件的权限是----------. (其他用户没有读写权限)。

[root@localhost ~]# ls -l /etc/shadow

---------- 1 root root 887 Oct 7 13:39 /etc/shadow

但是除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入权限,还能修改密码,就是因为这个SUID功能。

下面就是passwd这个命令的执行过程
1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。
2、而/usr/bin/passwd这个文件的权限是属于root的。
3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。
4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。
5、最后,密码修改成功。

注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。

3. Sticky Bit


SBIT(Sticky Bit)是针对others来设置的,目前只针对目录有效,对于目录的作用是:当用户在该目录下建立文件或目录时,仅有自己与 root才有权力删除。
最具有代表的就是/tmp目录,任何人都可以在/tmp内增加、修改文件(因为权限全是rwx),但仅有该文件/目录建立者与 root能够删除自己的目录或文件。SBIT对文件不起作用。

ls -l /

...

drwxrwxrwt  18 root root 28672 Apr 11 10:29 tmp

...

4.    大写S和T


如果没有x权限,则会变成大写S或T。


[root@localhost ~]# touch test && ls -l test
-rw-r--r-- 1 root root 0 Mar 12 16:43 test
[root@localhost ~]# chmod u+s,g+s test && ls -l test
-rwSr-Sr-- 1 root root 0 3月  13 14:04 test

[root@localhost ~]# mkdir testdir && chmod a-x testdir && ls -l
drw-r--r-- 2 root root 4096 Mar 13 14:08 testdir
[root@localhost ~]# chmod o+t testdir && ls -l
drw-r--r-T 2 root root 4096 Mar 13 14:08 testdir

5. 硬链接与软链接(符号链接)


创建硬链接命令: ln source target 。硬链接文件可以看做是“指向原始文件inode的指针”,硬链接文件与原始文件其实是同一个文件,不占用实际空间,只是名字不同而已。每添加一个硬链接,该文件的inode链接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。即便原始文件被删除,依然可以通过硬链接文件来访问。
创建一个文件a,ls –i显示文件索引节点号


[root@hostlocal ~]# echo 'hello world' >> a && ls -il
393368 -rw-r--r-- 1 root root 12 Mar 15 14:50 a
[root@hostlocal ~]# ln a a-hardlink && ls -il
393368 -rw-r--r-- 2 root root 12 Mar 15 14:50 a
393368 -rw-r--r-- 2 root root 12 Mar 15 14:50 a-hardlink

1. a和a-hardlink的链接数目都变为2。
2. a和a-hardlink的inode号是一样的。
3. a和a-hardlink的文件大小也是一样。
可见进行了ln命令的操作结果:a和a-hardlink是同一个文件的两个名字, 它们具有同样的索引节点号和文件属性,建立文件a-hardlink的硬链接,就是为 a的文件索引节点在当前目录上建立一个新指针。当删除其中任何一个,如rm a,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为0时,内核才会把文件内容从磁盘上删除。


总结起来有以下几点:
1. 以文件副本的形式存在。但不占用实际空间。
2. 不允许给目录创建硬链接
3. 硬链接只有在同一个文件系统中才能创建

 

软链接创建命令: ln -s source target。软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。


[root@VM_0_13_centos ~]# echo 'hello world' >> b && ls -il
393387 -rw-r--r-- 1 root root 12 Mar 15 15:20 b
[root@VM_0_13_centos ~]# ln -s b b-softlink && ls -il
393387 -rw-r--r-- 1 root root 12 Mar 15 15:20 b
393368 lrwxrwxrwx 1 root root  1 Mar 15 15:21 b-softlink -> b

与硬链接的区别:
1.硬链接原文件/链接文件共用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。
5.软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
当然软链接也有硬链接没有的缺点:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

下面演示一下硬链接的原理:

 

$ echo 'hello'>haha

$ ln haha hehe

$ echo 'hello world'>hehe

$ cat haha

hello world

$ rm hehe && echo 'hello'>hehe

// 删除hehe后重新创建文件hehe,haha和hehe将没有任何关系

$ cat haha

hello world
 

6. LPI考纲描述

5.4 Special Directories and Files

Weight: 1

Description: Special directories and files on a Linux system including special permissions.

Key Knowledge Areas:

  • Using temporary files and directories
  • Symbolic links

The following is a partial list of the used files, terms and utilities:

  • /tmp/, /var/tmp/ and Sticky Bit
  • ls -d
  • ln -s

参考:https://www.lpi.org/our-certifications/exam-010-objectives

 

返回目录

添加新评论

Restricted HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
请输入"汉语"