🔥个人主页:guoguoqiang. 🔥专栏:Linux的学习
Linux 权限管理
1.文件访问者的分类
Linux下有两种用户:超级用户(root)、普通用户。
1.超级用户(root)
root用户可以在Linux系统下做任何事情不受限制
2.系统用户(System Users):
系统用户是出于系统服务和管理任务需要创建的用户。这些用户通常不是为人而设的,而是为了让特定的服务(如web服务器进程、数据库服务等)运行在特定的权限下。
3.普通用户(Regular Users):
只能在linux下做有限的事情
4.虚拟用户(Virtual Users):
虚拟用户并非Linux系统本身使用或创建的用户账户,而是由一些具体应用程序(如FTP服务)为了特定需求而创建的用户。
这些用户可能没有系统上的一个真正的主目录,它们的用户信息可能存储在应用程序特定的数据库中。
5.用户组(Groups):
Linux中还有一个“用户组”的概念,这是将用户分类的一种方式。一个用户可以属于一个或多个用户组。
用户组允许你为一组用户设定特定的权限。这样,你可以授予特定组对特定文件或目录的访问权限,而无需逐一为每个用户设置。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”
命令: su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su
root(root可以省略),此时系统会提示输入root用户的口令
2.文件类型和访问权限
Linux权限分为三类
1.读(r/4): Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
2.写(w/2): Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
3.执行(x/1): execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
4.“—”表示不具有该项权限
权限又分别给三个用户
1.文件拥有者(Owner):创建文件或目录的用户,拥有对该文件或目录的默认权限。
2.用户组(Group):文件拥有者所在的用户组。在Linux中,一个用户可以属于多个用户组,但是每个文件有一个主要的用户组。
3.其他用户(Others):除了拥有者和用户组以外的所有用户
我们看到一个文件对应查看时,第一部分就是owner拥有者,第二部分为组,第三部分为其他用户 还包含了文件大小 以及文件最后的修改时间 还有文件名
文件类型:
d:文件夹
-:普通文件(文本文件,可执行程序,库等都叫普通文件)
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
linux不通过后缀来区分文件类型,但是linux上面的工具(如gcc)可能会区分!
3.文件访问权限的相关设置方法
chmod 和 chown 是两种用于管理Linux文件和目录权限的命令。它们用途分明,以下是每个命令的基本使用方法:
1.chmod(对文件的权限进行修改)
可以通过符号模式来对文件的权限进行修改
在符号模式下,您可以为特定的用户(u:用户,g:组,o:其他,a:所有)指定要添加(+)、删除(-)或设置(=)的权限(r:读,w:写,x:执行)。
例如 可以给文件拥有者增加全部权限
chmod u+x+w+r filename
删除组的写权限
chmod g-w filename
给其他用户设置只读权限
chmod o=r filename
然后值得注意的是 a代表ugw全部
给所有用户增加执行权限
chmod a+x filename
使用数字模式:
在数字模式中,权限由数字表示:4 stands for “读”(r),2 for “写”(w),1 for “执行”(x)。要为一个文件或目录设置权限,您需要为用户、组和其他用户选择它们的权限值。
给文件拥有者全部权限,给组读权限,给其他用户读权限
chmod 744 filename
如果想要移除所有账户的全部权限
chmod 000 filename
root账号不受权限的约束
然而对于普通用户来说,自身要受对应权限的约束,哪怕文件是自己的
2. chown(改变文件或目录的所有者)
chown 命令用于改变文件或目录的所有者和/或所属组。
chown [参数] 用户名 文件名
改变文件的拥有者
chown newowner filename
改变文件的拥有者和所属组
chown newowner:newgroup filename
只改变组别
chown :newgroup filename
chgrp newgroup filename
使用 chmod 和 chown 命令通常需要管理员权限,因此在使用它们时一般需要在命令前添加 sudo,这取决于您是否有足够的权限来对文件或目录进行更改。这里可以用su把自己变为root再修改
在Linux和其他类Unix系统中,“可执行权限”(execute permission),表示为 x,是用于控制用户或用户组是否有权限执行某个文件的一种文件权限。理解可执行权限需要考虑两种情况:对文件的可执行权限和对目录的可执行权限。
对文件拥有执行权限
当一个文件具有执行权限,意味着用户可以告诉操作系统运行这个文件。
./ adout.o
如果该文件没有可执行权限,您尝试执行它时会遇到 “Permission denied” 的错误。
对目录拥有可执行权限(x)
可执行权限表示用户(或用户组)能够"进入"该目录
如果一个目录没有可执行权限,即使用户有该目录的读(r)权限,也无法列出目录内容。此外,即使知道文件的完整路径,也无法直接访问目录中的文件,因为遍历该目录需要可执行权限。
创建的目录文件,起始权限是包含x的,普通文件,起始权限是去掉x的
4.umask
在Linux系统中,文件通常默认具有666(-rw-rw-rw-)的权限,而目录通常默认具有777(drwxrwxrwx)的权限。这些权限是在没有umask值作用时的默认权限。umask值用来从这些默认权限中减去特定的权限,以提供不同的默认设置。
假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
umask值默认为002
例如,如果umask值设置为022:
新文件将有 644(666-022)的权限,即 -rw-r–r–(所有者读写,组和其他只读)。
新目录将有 755(777-022)的权限,即 drwxr-xr-x(所有者读写执行,组和其他只读执行)。
当你要查找当前的umask值时只需输入umask
umask
一般建议设置umask值为022或者027
umask 022
umask的设置对系统安全非常重要。太宽松的umask(例如 ‘000’)可能会导致新创建的文件和目录过于开放,任何用户都可以读写执行,这是一个严重的安全风险。因此,通常推荐具有合理限制的umask设置,例如022或027,以确保系统不会无意中暴露敏感文件.
5.粘滞粒
当粘滞位设置在目录上时,它影响该目录中文件的删除。粘滞位可以确保只有文件的所有者或根用户(root)可以删除或重命名目录内的文件。
系统利用粘滞位可以防止用户删除或重命名不属于他们的文件。即便用户有目录的写权限,没有粘滞位他们也不能删除他人的文件。
设置粘滞粒
我们可以通过chmod来添加
chmod +t dir
那如果要取消粘滞粒呢?
chmod -t dir
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
权限设置表示法
使用八进制数字设置粘滞位时,前面会增加一个 1:
1777:代表所有用户都有读写执行权限,并且设置了粘滞位。
1755:代表所有者有读写执行权限,组和其他用户有读执行权限,并且设置了粘滞位。
本篇内容到此结束,感谢大家观看!!!