Linux 文件权限与文件类型
一、 文件权限的概念
1.Linux下用户分类
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
- 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
root(root可以省略),此时系统会提示输入root用户的口令。
2.权限概念
权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中的每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样操作。
在Linux下一切皆文件
二、 Linux权限管理
1.文件访问者的分类(人)
- 文件和文件目录的所有者:u—User
- 文件和文件目录的所有者所在的组的用户:g—Group
- 其它用户:o—Others
2.文件类型和访问权限(事物属性)
① 文件类型
简称 | 文件类型 |
---|---|
d | 文件夹 |
- | 普通文件 |
l | 软链接(类似Windows的快捷方式) |
b | 块设备文件(例如硬盘、光驱等) |
p | 管道文件 |
c | 字符设备文件(例如屏幕等串口设备) |
s | 套接口文件 |
② 基本权限
- 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
- 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
- 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
- “—”表示不具有该项权限
权限符号 | 说明 | 八进制 | 二进制 |
---|---|---|---|
r– | 只读 | 4 | 100 |
-w- | 仅可写 | 2 | 010 |
–x | 仅可执行 | 1 | 001 |
rw- | 可读可写 | 6 | 110 |
r-x | 可读可执行 | 5 | 101 |
-wx | 可写可执行 | 3 | 011 |
rwx | 可读可写可执行 | 7 | 111 |
— | 无权限 | 0 | 000 |
3. 所属组是什么
文件所属组用于帮助文件所有者管理文件的访问权限。每个文件都关联着一个用户组,组中的所有成员都可以根据文件设置的组权限来访问文件
4.为什么要有所属组
①用户分组
用户组是一种将用户分类的方法,组中的用户可以共享文件权限。这对于团队协作、项目开发或服务管理非常有用。
例如,一个开发团队可以拥有一个共同的组,组内的每个成员都可以访问特定项目的文件,而不需要单独为每个用户设置权限。
②提高安全性
通过将文件的权限限制在特定的组内,系统管理员可以减少不必要的权限暴露,避免非授权用户访问敏感文件。这种方式有效地提升了系统的整体安全性。
③简化权限管理
当需要为多个用户赋予同样的权限时,通过将这些用户添加到一个组,并设置文件的组权限,可以大大简化权限管理的过程。避免逐一配置每个用户的权限。
④所属组的创建与管理
groupadd命令
创建组群
groupadd GroupName
groupdel命令
删除组
参数 | 作用 |
---|---|
-f | 组内存在用户时,强制删除 |
groupdel GroupName
强制删除Group组
groupdel -f GroupName
gpasswd命令
在附属组中增加、删除用户,只有root用户和组管理员可以使用
参数 | 作用 |
---|---|
-a | 把用户加入组 |
-d | 把用户从组中删除 |
-r | 取消组的密码 |
-A | 给组指派管理员 |
把User用户添加进Group组
gpasswd -a User Group
把User用户从Group组中删除
gpasswd -d User Group
5.默认权限
在 Linux 系统中,文件和目录的默认权限是通过 umask
命令来确定的。umask
是一个值,用于定义创建新文件或目录时的默认权限掩码。
- 普通文件的默认权限为 666
- 目录文件的默认权限为777
但是在日常使用中,我们所创建的目录文件和普通文件都与上述不同,这是由于umask
掩码的存在,系统会应用权限掩码来减去默认权限的某些部分。
最终权限 = 默认权限 & umask
默认权限值与umask进行按位与运算
一般情况下linux系统的默认权限掩码为0002,可以通过umask命令查看权限掩码,umask 后跟三位八进制的数字来改变系统默认的权限掩码。
$ umask
0002
$ touch test.c
$ mkdir test
$ ll
drwxrwxr-x 2 c c 4096 Aug 30 15:46 test
-rw-rw-r-- 1 c c 0 Aug 30 15:45 test.c
$ umask 003
$ mkdir test_change
$ touch test_change.c
$ ll
drwxrwxr-x 2 c c 4096 Aug 30 15:46 test
-rw-rw-r-- 1 c c 0 Aug 30 15:45 test.c
drwxrwxr-- 2 c c 4096 Aug 30 15:48 test_change
-rw-rw-r-- 1 c c 0 Aug 30 15:48 test_change.c
可以看到修改umask值后,创建文件的默认权限发生更改
6.文件权限的设置
chmod
修改文件或者目录的权限
将文件Name权限改为rwxrwxrwx
chmod 777 Name
( 使用数字表示法修改权限)
将文件Name权限改为rwxr-xrw-
chmod rwxr-xrw- Name
(使用文字表示法修改权限)
chown
文件或者文件夹属主及属组的修改
将Name文件属主改为User
chown User Name
将Name文件属主改为User、属组改为Group
chown User.Group Name
chown User:Group Name
(可用. 也可用:)
将Name文件下所有的目录及文件的属主改为User
chown -R User Name
chgrp
修改文件属组
charp User Group
(将文件User属组改为Group)
三、目录权限与粘滞键
1.目录权限
用户查看目录的文件列表需要 r
权限
用户在目录下新建文件需要 w
权限
用户进入一个目录需要 x
权限
- 一个文件一定是属于一个目录的,一个文件的属性能不能查看,是由目录的权限决定的
- 一个文件一定是属于一个目录的,一个文件能不能被删除,是由目录的权限和对应用户是否拥有
w
权限决定的
drwx---r-- 2 root root 4096 Aug 29 20:32 testdir
[c@mix test]$ ll testdir
ls: cannot access testdir/test3.c: Permission denied
ls: cannot access testdir/test5.c: Permission denied
ls: cannot access testdir/test1.c: Permission denied
ls: cannot access testdir/test2.c: Permission denied
ls: cannot access testdir/test4.c: Permission denied
total 0
-????????? ? ? ? ? ? test1.c
-????????? ? ? ? ? ? test2.c
-????????? ? ? ? ? ? test3.c
-????????? ? ? ? ? ? test4.c
-????????? ? ? ? ? ? test5.c
//当用户只拥有某目录的`r`权限时,用户只能查看此中的文件名列表,不能查看文件的属性
//此时用户为other用户
2.粘滞键
在 Linux 系统中,粘滞位(Sticky Bit)是一种文件权限位,用于目录中的文件和子目录管理。它最常用于公共目录,如 /tmp,以防止用户删除或修改其他用户的文件。粘滞位有助于更好地管理和保护多用户环境中的共享资源。
粘滞位设置在一个目录上时,该目录中的文件或子目录只能由以下几类用户删除或重命名:
- 文件的所有者:创建该文件的用户。
- 目录的所有者:拥有该目录的用户。
- 超级用户(root):系统管理员。
其他用户,即使在该目录中有写权限,也无法删除或重命名他们不拥有的文件。这在共享目录中非常有用,可以防止用户误删除或恶意删除他人的文件。
设置粘滞位:
使用 chmod 命令来设置和移除粘滞位。
例如,要为 /shared 目录设置粘滞位:
chmod +t /shared
可以使用 chmod 命令来移除粘滞位:
chmod -t /shared