创建文件,文件权限,所有权和粘滞位

如果需要创建给定大小的文件,可以使用dd命令。

dd会把给定的输入内容,克隆一份写入到输出。

stdin、设备文件和普通文件都可以作为输入,stdout、设备文件和普通文件也都可以做为输出。

$ dd if=/dev/zero of=out.data bs=1M count=10

if代表输入文件,/dev/zero是一个字符设备,会不断返回0值字节。

of代表输出文件。

bs代表块大小,count代表数目,两者相乘就是文件大小。

块大小的计量单位:

c 字节 1B

w 字 2B

b 块 512B

k 千字节 1024B

M 兆字节 1024KB

G 1024MB

dd命令可以用来测试内存的操作速度。

Linux系统中的每一个文件都与多种权限类型相关联。在这些权限中,通常包括三类权限,用户、用户组和其他实体。

用户user是文件的所有者,用户组group是多个用户的集合,系统允许这些用户对文件进行某些形式的访问,其他用户others是这两者之外的任何用户。

用命令ls -l可以列出文件的权限,输出结果的第一列往往如下:

-rw-r--r--

drwxr-xr-x

其中第一个字母说明了文件的类型:

-:普通文件

d:目录

c:字符设备

b:块设备

l:符号链接

s:套接字

p:管道

剩下的九个字符分为三组,第一组对应用户user权限,第二组对应用户组group权限,第三组对应其他用户others权限。

每组权限的三个字符又分别对应了文件的读、写和可执行权限,如果指定了权限,就会写上相应的字符,如果没有设置权限,就会写上“-”。

第一个字符对应读权限,如果可以读取,就写上“r”。

第二个字符对应写权限,可以改写,就写上“w”。

第三个字符对应可执行权限,可执行的话,就写上“x”。

用户user还有一个称为setuid(S)的权限,出现在可执行权限x的位置上。setuid权限允许用户以其拥有者的权限来执行可执行文件,形式如下:

-rwS------

目录也有读、写和执行权限,不过目录的读权限是允许读取目录中的文件和子目录列表,写权限是允许在目录中创建或者删除文件或者子目录,执行权限是允许访问目录中的文件和子目录。

第二组和第三组的权限与用户组的权限是一样的。不过用户组是没有setuid的,相应的是setgid。它允许以同该目录拥有者所在组相同的有效组权限来执行文件。形式如下:

----rwS---

其他用户没有setuid和setgid。

目录有一个特殊的权限,叫做粘滞位(sticky bit),你可以理解为写保护,当一个目录设置了粘滞位,只有创建了该目录的用户才能删除目录中的文件,即便用户组和其他用户也有写权限。粘滞位写在其他用户权限组的x位置,使用t或者T来表示。如果有仅仅只有粘滞位,就是t,如果同时设置了执行权限和粘滞位,就用T。形式如下:

发表评论

相关文章