Linux系统中的一切事物都是文件。
Linux文件种类
文件种类
1)、普通文件
2)、纯文本文件(ASCII):Linux中最多的一种文件类型
3)、二进制文件:Linux中的可执行文件就是这种格式
4)、目录:文件夹
5)、链接文件:类似windows下的快捷方式
6)、设备文件
a、块设备文件,就是一些存储数据以提供系统随机访问的接口设备,如硬盘等。
b、字符设备文件,就是一些串行端口的接口设备,如键盘鼠标。
7)、套接字(sockets):通常被用在网络上的数据连接。我们可以启动一个程序来见他客户端的请求,二客户端就可以通过这个socket来进行顺序的通信。通常在/var/run这个目录中。
二、权限与归属
在Linux系统中,文件和目录是重要的组成部分,经常使用root用户登录系统没有感觉,什么都可以操作,但是一旦使用普通用户的时候,就会发现权限这个棘手的问题。
1、文件权限组成
首先查看文件权限怎么查看呢?
可以用以下命令去查看:
ll /etc/passwd
输出结果为:
-rwsr-xr-x 1 root root 430540 Dec 20 18:27 /etc/passwd
可将其分割成以下样子:
①-②rws③r-x④r-x ⑤1 ⑥root ⑦root ⑧430540 ⑨Dec 20 18:27 ⑩/etc/passwd
说明:
①. 首字符,表示该文件是什么类型
-,普通文件;
d,目录文件;
l,符号链接;
c,字符设备文件;
b,字节设备文件;
p,先进先出文件;
s,套接字文件。
②. 第2~4个字符,表示所有者(owner)的权限
③. 第5~7个字符,表示所属组(group)的权限
④. 第8~10个字符,表示其他用户(other)的权限
⑤. 第11个字符,表示硬链接数
⑥. 是文件所有者的用户名称(owner)
⑦. 是文件所属组的用户组名称(group)
⑧. 是文件大小,以块为单位。
⑨. 是最后修改日期
⑩. 是文件或目录的绝对路径
从上述内容我们可以得知Linux下的权限角色有三种,分别是所有者(owner)、所属组(group)和其他用户(other)。
2、基本权限和归属关系
1)、访问权限:
读取:允许查看内容-read
读取权限对目录来说,是否可以查看该目录中的内容
对文件来说,也是是否可以查看该文件中的文本内容
写入:允许修改内容-write
写入权限对目录来说,是否可以在该目录下创建、删除、重命名目录等操作;
而对文件来说,则是是否允许修改文件中的文本内容。
可执行:允许运行-excute
可执行权限对于目录来说,对应的位置有x权限,意为是否可进入该目录;
而对于文件来说,有x权限,意为该文件可执行,如程序(命令)的所有者权限中都有x权限。
2)权限的表示形式
a)、字母法表示
r,读权限;
w,写权限;
x,可执行权限。
b)、数字法表示:
4,读权限;
2,写权限;
1,可执行权限。
3、特殊权限
1)SUID——在所有者权限上出现个“s”
普通用户运行某程序时,会把该程序文件的所有者的权限授予给普通用户,让其临时拥有所有者的权限。
只对二进制程序文件有效。
如图,passwd这个命令,我们经常用来设置用户密码,普通用户也可以使用“passwd”来设置自己的密码。当普通用户去运行它的时候,其实是以其所有者“root”的身份去运行。
2)SGID——在所属组权限出现“s”
在某目录下,新建的文件或目录,所属组的权限和所属组跟该目录一致。
注:如果本身具有x,为s,否则为S
从上图可以看到,当使用普通用户tom创建目录后,器所属组还是属于root,且所属组权限与test的权限一致。
3)sticky——针对目录设置,会在其他人权限位上出现一个“t”
从单词字面上理解,叫粘滞位。就像被胶水粘住一样,所有也叫做防删除位,目的是为了防止被别的用户删除(PS: root 用户除外,它是超级管理员,防止不了)
作用:
除了该文件的创建者和root用户可以删除和修改,其他人只能修改查看,不可删除。
4、归属关系:
属主:拥有此文件或目录的用户-user
属组:拥有此文件或目录的组-group
其他用户:除属主、属组以外的用户-other
最终权限:访问权限和归属关系共同决定最终权限、
三、设置权限
1、chmod命令——设置文件的权限
有两种方式设置权限:
1)、数字类型设置权限:
格式: chmod xyz 文件名
其中,x代表所有者权限,y代表所属组权限,z代表其他人权限
注:xyz是一串整数。
r=4,w=2,x=1
以上三种身份的权限每个都是r+w+x的和,如果没有相应权限,则值为0。
x=所有者=rwx=4+2+1=7
y=所属组=rwx=4+2+1=7
z=其他人=---=0+0+0=0
注:
当执行“chmod 7 文件名”,是对文件的其他人权限设置
当执行“chmod 77 文件名”,是对文件的所属组和其他人权限设置
当执行“chmod 777 文件名”,是对文件的所有者、所属组和其他人权限设置
2、字母类型设置权限:
格式:chmod [augo][+-=][rwx] 文件名
其中:
u代表所有者
g代表所属组
o代表其他人
a代表所有人
读写执行的权限为r、w、x
“+”代表加入
“-”代表除去
“=”代表设置
例子:chmod u+rwx,g+rwx,o+rx 文件名
给所有者全部权限,所属组所有权限,其他人只有读和执行权限。
注:通常跟“-R”一起使用,代表递归的持续更改,即连同子目录下的所有文件、目录。
添加一个SUID权限:
方法一:chmod u+s 文件名
方法二:chmod 4000 文件名
添加一个SGID权限:
方法一:chmod g+s 文件名
方法二:chmod 2000 文件名
添加一个S:ticky (BIT):
方法一:chmod o+t 文件名
方法二:chmod 1000 文件名
2、chown——设置归属
格式:
chown 属主 文件或目录 //修改文件或目录的所有者
chown :属组 文件或目录 //修改文件或目录的所属组
chown 属主:属组 文件或目录 //修改文件或目录的所有者和所属组
例子:
chown [-R] user file #设置file的所有者为user
chown [-R] .group file #设置file的所属组为group
chown [-R] user.group file #设置file的所有者为user,所属组为group
chown [-R] user:group file #设置file的所有者为user,所属组为group
3、chgrp——设置所属组
格式: chgrp [-R] 组名 文件名
4、umask——反掩码,用于设置默认权限
一般文件默认不给x执行权限
其他取决于umask设置
umask值可以进行设置(为临时,umask 0027即讲umask值设置为0027,可使用umask查看)
注:由于文件默认不给x权限,所以创建一个新文件的最大权限为666,创建一个目录的最大权限为777
umask默认值为022
新创建的文件权限 = 文件的最大权限 - umask值
新创建的目录权限 = 目录的最大权限 - umask值
总结:
chmod,chown,chgrp这三个命令虽然参数很少,但是总是容易搞混,不过用的多了,用的熟练了就能记住了,chmod修改的是权限,chown修改的是所属用户和组,chgrp修改的是所属组。
最需要注意的是umask的值的设定,新建文件和文件夹时的默认权限!