件内容。如果没有读权限,则用户无法查看文件内容
写权限(w)表示可以修改文件内容,如没有写权限,则用户无法修改文件内容
执行权限(x)表示可以将文件作为可执行文件执行,如果没有执行权限,则用户无法运行可执行文件
目录文件:
- 读取权限(r):表示允许查看目录中的文件列表。如果没有读取权限,则用户无法查看目录列表。
- 写入权限(w):表示可以在目录中创建、删除、重命名、移动文件或目录
- 执行权限(x):表示允许进入该目录。如果没有执行权限,则用户无法进入该目录。
目录文件的最小权限:
目录文件的最小权限是可执行权限,因为目录是一种特殊的文件类型,用于存储其他文件和目录。对于一个目录来说,必须拥有执行权限才能进入这个目录。
如果一个目录没有执行权限,那么用户就不能进入这个目录,也就无法访问该目录下的任何文件或子目录,即使这些文件或子目录的访问权限是允许的,所以目录的最小权限是可执行权限。
例如:执行 cp /etc/issue /data/dir/ 所需要的最小权限?
/bin/cp # 需要x权限,需要对cp有可执行的权限
/etc/ # 需要x权限,需要进入到etc目录下
/etc/issue # 需要r权限,需要能读取issue文件的内容
/data # 需要x权限,需要能进入data目录下
/data/dir # 需要w,x权限,需要能进入dir目录,并且能在下面创建一个叫做issue的文件。
3、文件所有者
文件所有者指的是创建该文件的用户的UID或进程的UID,这个UID会被写入文件的元数据中作为文件的所有者属性,文件所有者属性不会随着文件的复制或移动而改变。
如何理解文件所有者指的是创建该文件的用户的UID或进程的UID
例如当tom用户执行touch命令创建一个文件A的时候,因为touch的本质就是一个用户空间的应用程序,当在终端中输入touch命令并按下回车键时。系统会为该命令创建一个新进程,并将该进程的有效用户ID设置为tom的UID,然后,该进程创建文件A时,文件A的所有者就会被设置为该进程的有效用户ID,也就是tom的UID。因此,文件A的所有者就是tom用户。
如何理解文件的所有者和所属组不会随着文件的移动而改变:
例如创建了一个新文件A,文件系统会为这个新文件A分配一个唯一的inode号,并在系统中为其分配空间,在文件系统中,每个文件都有一个与之相关联的inode数据结构,这个数据接口就是用来存放文件属性信息的包括文件所有者、所属组、权限等,创建文件的时候就把A文件的所有者属性写入文件的inode中了,当使用mv命令将文件从一个目录移动到另一个目录时,实际上是在文件系统中修改了文件的路径。文件本身的内容和属性不会被修改,包括文件的所有者和所属组。因此,无论您将文件移动到哪个目录,文件的所有者和所属组都将保持不变。
注意:复制的本质就是创建一个新的文件,使用cp命令将文件复制到另一个目录中,则复制的文件将具有与原始文件相同的所有者和所属组。
六:Linux文件权限管理
Linux文件权限包含了普通权限,特殊权限,特殊属性和ACL。
1、默认权限属性
在Linux中,新建文件时,文件的默认权限由umask的值来进行控制。umask是一个权限掩码,它会在创建新文件时掩盖某些默认权限。
- root用户:umask 默认值通常是 0022
- 普通用户: umask 默认值通常是 0002
# 查看umask默认值
root@ubuntu1804:~# umask
0022
如何计算文件的默认权限:
普通文件默认权限: 666 - umask
,如果值为奇数就 + 1
目录文件默认权限 :777 - umask
计算普通文件默认权限的时候结果是奇数需要 +1的原因:
因为结果存在奇数,说明包含有可执行权限,所以需要 +1 来保证这个文件默认不具备可执行权限,保证系统的安全。
计算普通文件使用666和计算目录使用777的原因:
为了保证目录文件默认就有可执行权限,不然用户没法访问,因为只有拥有可执行权限的目录,才能让用户进入并访问该目录下的文件和子目录(目录的执行权限表示是否允许访问该目录)。
普通文件不需要考虑可执行权限,拥有可执行权限太危险,所以就使用666(包含了读和写权限)来计算默认权限。
root用户创建的文件权限和普通用户创建的文件权限不同的原因:
root用户和普通用户的umask值默认是不同是为了保护系统的安全和完整性,并为不同的用户角色提供不同的默认权限。
对于普通用户来说:只需要考虑对自己的文件和目录具有读、写、执行的权限,默认即拒绝组和其他用户的写权限。所以默认的umask是002。所以普通用户创建的文件和目录的默认权限是 664 和 775
对于root用户来说:因为root用户具有系统管理的特权,需要确保文件和目录对所有用户都是可读的,但只有所有者才能修改或删除它们。所以默认的umask是022,所以root 用户创建的文件和目录的默认权限是 644 和 755
一个文件是否能被删除取决于这个文件所在目录的权限:
一个文件是否能被删除和自身权限无关,取决于这个文件所在的目录文件是否对执行删除操作的用户具有写权限。
2、修改默认的权限
chown工具
用于更改文件或目录的所有者,同时也可以用于更改文件所属组。
更改文件所有者:
chown owner file_name
# 将/home/user1/file.txt的所有者更改为user2
chown user2 /home/user1/file.txt
更改文件所属组:
chown :group file_name 或 chown .group file_name
更改文件所有者和所属组:
chown ower:group file_name 或 chown ower.group file_name
更改一个目录文件以及目录文件中所有文件的属性:
# 需要使用 -R 参数进行递归修改
chown -R ower:group file_name 或 chown ower.group file_name
chgrp工具
用于更改文件的所属组
例如:更改文件或目录的所属组
chgrp group_name file_name
# 将/home/user1/file.txt的所属组更改为dev
chgrp dev /home/user1/file.txt
chmod工具
方法一:符号法:
# who opt permission(谁对谁做什么操作)
who:u,g,o,a (a:all,所有)
opt: + - = (=:会修改用户的所有权限)
permission:r,w,x
owner 属主, u
group 属组, g
other 其他, o
r Readable
w Writable
x eXcutable
例如:
# 给文件所有者加上可执行权限
chmod u+x filename
# 让文件所有者只有r的权限
chmod u=r file_name
# 给文件所有者读写执行权限,给所属组读和执行权限,不给其它用户任何权限
chmod u=rwx,g=rx,o= file_name
方法二:数字表示法
在Linux系统中,文件和目录的权限可以用数字表示法来表示。
数字表示法由三个八进制数字组成,每个数字代表一个权限组,从左到右依次是文件所有者权限、文件所属组权限