在Linux文件中,一切皆文件,对于文件来说,用户分为三类:属主(u-user)、属组(g-group)和其他用户(o-other),权限分为三种:读(r-read)、写(w-write)、执行(x-execute),本文将详细的介绍权限系统和相关操作。(本文将以Ubuntu示例)
drwxr-x--- 4 ubuntu ubuntu 4096 Aug 5 11:46 ubuntu/
权限 :drwxr-x---
链接计数 : 4
文件所有者 : ubuntu
文件所属组 : ubuntu
文件大小 : 4096
文件创建和修改的时间 : Aug 5 11:46
文件名 : ubuntu/
设置文件所有者
修改属主
root@ubuntu:/home# ll link1
-rw-r--r-- 2 root root 14 Aug 6 09:55 link1
root@ubuntu:/home# chown ubuntu link1
root@ubuntu:/home# ll link1
-rw-r--r-- 2 ubuntu root 14 Aug 6 09:55 link1
修改属组
root@ubuntu:/home# chown :ubuntu link1
root@ubuntu:/home# ll link1
-rw-r--r-- 2 ubuntu ubuntu 14 Aug 6 09:55 link1
同时修改属主和属组
root@ubuntu:/home# chown root:root link1
root@ubuntu:/home# ll link1
-rw-r--r-- 2 root root 14 Aug 6 09:55 link1
设置文件所属组
修改属组
root@ubuntu:/home# chgrp ubuntu link1
root@ubuntu:/home# ll link1
-rw-r--r-- 2 root ubuntu 14 Aug 6 09:55 link1
文件权限
权限作用
权限 | 文件 | 目录 |
r | 可查看文件内容 | 可查看目录中的文件名,但无法获取元数据内容 |
w | 可修改文件内容 | 可在目录中创建、删除文件 |
x | 可执行文件,启动一个进程 | 可查看目录中的文件名、文件内容,以及元数据内容 |
修改文件权限
字符 | 角色 |
u | 属主(owner) |
g | 属组(group) |
o | 其他用户(other) |
a | 包含以上三种角色(all) |
字符 | 含义 |
+ | 增加权限 |
- | 删除权限 |
= | 保留指定权限,直接覆盖 |
字符 | 数字表示(八进制) |
r | 4 |
w | 3 |
x | 1 |
# 常用写法
root@ubuntu:/home# chmod a= f1
root@ubuntu:/home# chmod u+x f2
root@ubuntu:/home# chmod g-r f3
root@ubuntu:/home# chmod ug=rx f4
root@ubuntu:/home# chmod 666 f5
root@ubuntu:/home# ll f*
---------- 1 root root 0 Aug 6 12:08 f1
-rwxr--r-- 1 root root 0 Aug 6 12:08 f2*
-rw----r-- 1 root root 0 Aug 6 12:08 f3
-r-xr-xr-- 1 root root 0 Aug 6 12:08 f4*
-rw-rw-rw- 1 root root 0 Aug 6 12:08 f5
思考
执行 cp /etc/issue /data/dir/ 所需要的最小权限是什么?
首先,cp 命令文件需要有执行的权限。--- x
其次,/etc 目录需要有执行的权限才能够进入目录。--- x
接着,/etc/issue 文件需要有读取的权限才能够进行复制文件内容操作。--- r
再次,/data 目录同样需要执行的权限才能够进入目录。--- x
最后,/data/dir 目录需要有执行和写入的权限才能够创建目录并将复制的数据写入文件中。--- w,x
要注意的,是,执行文件分为二进制文件和可执行文本文件,可执行文本文件需要可读可执行才能够执行(w,x),例如Shell脚本、Python脚本等。
umask 默认权限
umask值会间接影响新建目录与文件的权限,新建文件的权限等于666-umask值(如果结果的执行权限为奇数则结果+1,也就是说,新建文件永远都不会有执行权限),新建目录的权限等于777-umask值。
查看umask值
root@ubuntu:~# umask
0022
修改umask值
在某些情况下,可能需要临时修改 umask 值以适应特定任务。例如,在创建一组文件时,需要特定的权限设置。永久修改需要写入相关配置文件中。
root@ubuntu:/home# umask 002
root@ubuntu:/home# umask
0002# 查看默认文件权限
root@ubuntu:/home# umask -S
u=rwx,g=rwx,o=rx
root@ubuntu:/home# touch f1
root@ubuntu:/home# ll f1
-rw-rw-r-- 1 root root 0 Aug 7 12:17 f1