Linux中的目录

目录

目录在文件类型上用d标识

用“/”分隔目录层

Linux操作系统都有且仅有一个起始目录,我们用一个单独的“/”来表示,称其为根目录

对每一个shell和操作环境,都有一个当前工作目录

[root@bogon home]# ls -ld test

drwxr-xr-x 2 root root 4096 Jun  9 05:02 test

.文件和..文件

在每一个目录下面都有一个.文件和一个..文件

.文件是对当前目录的一个硬链接

..文件是对上级目录的一个硬链接

[root@bogon test]# ll -a

total 16

drwxr-xr-x 2 root root 4096 Jun  9 05:02 .

drwxr-xr-x 4 root root 4096 Jun  9 05:04 ..

目录与权限

目录也是一种文件

目录上的读写执行权限与普通文件有所不同:

1)         读:用户可以读取目录内的文件

2)         写:单独使用没有作用,与执行权限链接可以在目录内添加与删除文件

3)         执行:用户可以进入目录,调用目录内的资料,修改可见文件的内容

强制位与冒险位

除了读写执行权限以外,ext2文件系统还支持强制位setuidsetgid)与冒险位sticky)的特表权限。

针对ugo分别有 set uidset gidsticky

强制位与冒险位添加在执行权限的位置上。如果该位置上已有执行权限。则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。

set uidset gidugx位置上各采用一个ssticky使用一个t

set gid对目录的作用

默认情况下,用户建立的文件属于用户当前所在的组。

目录上设置了set gid,表示在此目录中,任何人建立的文件,都会属于目录所属的组。

示例:在未设置gid的情况下

[root@bogon home]# mkdir test

[root@bogon home]# ls -ld test

drwxr-xr-x 2 root root 4096 Jun  9 06:05 test

[root@bogon home]# chgrp jojo test

[root@bogon home]# ls -ld test

drwxr-xr-x 2 root jojo 4096 Jun  9 06:05 test

[root@bogon home]# echo "hello world" > test/test1.txt

[root@bogon home]# ls -ld test/test1.txt

-rw-r--r-- 1 root root 12 Jun  9 06:08 test/test1.txt

示例:设置test目录的gid

[root@bogon home]# chmod g+s test

[root@bogon home]# ls -ld test

drwxr-sr-x 2 root jojo 4096 Jun  9 06:10 test

示例:在设置gid的目录下创建文件

[root@bogon test]# ls -l

total 8

-rw-r--r-- 1 root root 12 Jun  9 06:08 test1.txt

[root@bogon test]# mkdir test2.txt

[root@bogon test]# ll

total 16

-rw-r--r-- 1 root root   12 Jun  9 06:08 test1.txt

drwxr-sr-x 2 root jojo 4096 Jun  9 06:18 test2.txt

冒险位对目录的作用

默认情况下,如果一个目录上有wx权限,则任何人可以在此目录中建立与删除文件。

一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录拥有者与系统管理员可以删除文件

[root@bogon /]# ls -ld tmp

drwxrwxrwt 7 root root 4096 Jun  9 05:53 tmp

设置冒险位:

[root@bogon home]# ls -ld test

drwxr-sr-x 3 root jojo 4096 Jun  9 06:18 test

[root@bogon home]# chmod o+t test

[root@bogon home]# ls -ld test

drwxr-sr-t 3 root jojo 4096 Jun  9 06:18 test

强制位对文件的作用

在可执行文件上,用户可以添加set uidset gid

默认情况下,用户执行一个指令,会以该用户的身份来运行程序。(文件设置了uid,则任何人执行该文件都会以所属的user执行)

指令文件上的强制位,可以让用户执行的指令,以指令文件的拥有者或所属组的身份运行进程

Set uid 示例:

[root@bogon home]# which ping

/bin/ping

[root@bogon home]# ls -l /bin/ping

-rwsr-xr-x 1 root root 35864 Mar 15  2007 /bin/ping

可以看到,ping指令是设置了uid的。切换到另外一个用户执行ping命令,发现是可以执行该命令的。然后我们去除掉pingset uid

[root@bogon home]# chmod u-s /bin/ping

[root@bogon home]# ls -l /bin/ping

-rwxr-xr-x 1 root root 35864 Mar 15  2007 /bin/ping

如果我们再切换到其他用户执行ping命令,就会报如下错误:

ping: icmp open socket: Operation not permitted

原来icmp包只能给root用户调用,因此只有设置了set uid之后,其他用户执行该执行就相当于root用户执行该指令。再次设置uid之后,其他用户也可以执行了:

[root@bogon home]# chmod u+s /bin/ping

[root@bogon home]# su jojo

[jojo@bogon home]$ ping 127.0.0.1

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.

64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.286 ms

64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.103 ms

另外还有很多其他指令是设置了uid的,例如passwd

[jojo@bogon home]$ which passwd

/usr/bin/passwd

[jojo@bogon home]$ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 22984 Jan  7  2007 /usr/bin/passwd

设置强制位与冒险位

用户可以使用chmod指令来为文件设置强制位与冒险位。

l  set uidchmod u+x 文件名

l  set gidchmod g+x 文件名

l  stickychmod o+t 文件名

强制位与冒险位也可以通过一个数字加和,放在读写执行的三位数前来指定

l  4 set uid

l  2 set gid

l  1 sticky

Ps

Set gid 可以在目录上设定,也可以在文件上设定

Set uid 只能在文件上设定

Sticky 只能在目录上设定

Umask(文件权限掩码)

每个用户建立文件时,此文件都会有默认权限,默认权限的值由环境中的umask值来确定。

用户可以自主改动umask,并在改动后的文件上得到体现。

一般用户的默认umask值为002,系统用户的默认umask022

[root@bogon home]# umask

0022

[root@bogon home]# su jojo

[jojo@bogon home]$ umask

0002

理想情况下,在Linux系统中创建文件或目录的默认权限如下:

文件:rw_rw_rw_

目录:rwxrwxrwx

[root@bogon home]# mkdir test

[root@bogon home]# ls -ld test

drwxr-xr-x 2 root root 4096 Jun 13 21:37 test

上面是用root用户建立一个test目录,但是我们看到他的权限是rwx_r-x_r-x,而不是rwxrwxrwx,这是为什么呢?

因为root用户的默认掩码为:022,文件的真实权限是:(理想权限-文件权限掩码)即:(7-07-27-2

修改用户的umask,并新建目录:

[root@bogon home]# umask 003

[root@bogon home]# mkdir test

[root@bogon home]# ls -ld test

drwxrwxr-- 2 root root 4096 Jun 13 21:55 test

其他用户修改umask,并创建目录:

[jojo@bogon ~]$ umask 000

[jojo@bogon ~]$ mkdir test

[jojo@bogon ~]$ ls -ld test

drwxrwxrwx 2 jojo jojo 4096 Jun 13 21:57 test

根目录下的目录

1)         /bin:存储常用用户指令

2)         /boot:存储核心、模块映像等启动文件

3)         /dev:存储设备文件

4)         /etc:存储系统、服务的配置目录与文件

5)         /home:存放个人主目录

6)         /lib:存放库文件,诸如核心模块、驱动

7)         /lost+found:存储fsck用的孤儿文件

8)         /mnt:系统加载文件系统时用的常用挂载点

9)         /opt:第三方工具使用的安装目录

10)     /proc:虚拟文件系统,包含系统通讯等资料(在内存中)

11)     /rootroot用户的主目录

12)     /sbin:存储系统管理用指令

13)     /tmp:临时文件的暂存点

14)     /usr:存放于用户直接相关的文件与目录

15)     /var:存储在系统运行中可能会更改的数据

 

你可能感兴趣的:(linux,socket,配置管理)