文件权限管理-1

本文详细解读了Linux系统中的用户权限管理,包括基本权限(如文件和目录的rwx权限)、特殊权限(如suid、sgid和sticky),高级权限(如权限掩码和umask)以及隐藏权限的设置。还介绍了提权方法,如chmod、chown、sudo和setfacl的使用,以及访问控制和文件状态信息的查看。
摘要由CSDN通过智能技术生成

Linux用户权限解析

  1. 基本权限
  2. 特殊权限
  3. 高级权限
  4. 隐藏权限

我们linux服务器上有严格的权限等级,如果权限过高导致误操作会增加服务器的风险。所以对于了解linux系统中的各种权限及要给用户,服务等分配合理的权限十分重要

基本权限

基本权限:文件权限设置 可以赋于某个用户或组 能够以何种方式 访问某个文件

image-20191101152351943

-rw- r-- r--  1 root root    0 4月   8 11:10 test.txt
 u   g   o           
属主 属组 其他人
基本权限针对目录针对文件
读 r4限制用户能否查看目录下文件限制用户能否查看目文件内容
写 w2限制用户能否创建/删除目录下文件或目录限制用户能否编辑文件
执行 x1限制用户能否进入目录,如果没有该权限,即使有读权限也只能看见文件名,而无法查看该目录下文件详情信息只针对脚本,比如脚本文件叫做date.sh,能否使用./date.sh 方式去执行,或者是能否使用绝对路径的方式执行

r、w、x权限对文件和目录的意义

image-20191103151911043

对文件:
r ----cat
w ---vi、vim
x ---- bash /dir/file
​
对目录:
r  ---ls
w  -----touch、rm
x  ---- cd 

设置权限

chown:改变文件或目录的所属主以及所属组
chmod:为文件或目录设置访问权限

更改文件的属主,属组

#只修改文件属主
#语法 chown $username $filelname
#只修改文件属组
#语法 chown .$groupname $filelname
#修改文件属主、属组
#语法 chown $username.$groupname $filelname
#    chown $username:$groupname $filelname
#递归修改---针对目录
#语法 chwon -R $username.$groupname $dirname

更改权限

使用符号

文件权限-符号

例:

[root@linux-server ~]# chmod u+x file1.txt     #属主增加执行
[root@linux-server ~]# chmod a=rwx file1.txt   #所有人等于读写执行
[root@linux-server ~]# chmod a=- file1.txt     #所有人都没有权限
[root@linux-server ~]# chmod ug=rw,o=r file1.txt  #属主属组等于读写,其他人只读
[root@linux-server ~]# ll
-rw-rw-r--. 1 tom   it      0 Nov  1 15:30 file1.txt
使用数字

例:

#设置属主权限为读写,属组权限为只读,其他人权限为只读
[root@linux-server ~]# chmod 644 file1.txt 
[root@linux-server ~]# ll file1.txt 
-rw-r--r--. 1 tom it 0 Nov  1 15:30 file1.txt
​
#设置属主权限为读写执行,属组权限为读执行,其他人权限为读执行
[root@linux-server ~]# chmod 755 file1.txt
[root@linux-server ~]# ll
-rwxr-xr-x  1 root root    0 Jul 23 22:40 file1.txt
​
##设置属主权限为读执行,属组权限为只写,其他人权限为执行
[root@linux-server ~]# chmod 521 file1.txt
[root@linux-server ~]# ll
-r-x-w---x  1 root root    0 Jul 23 22:40 file1.txt

权限掩码

umask用户掩码:控制用户创建文件和目录的默认权限

查看用户掩码:umask #root用户默认掩码0022  普通用户默认掩码0002
在Linux中root用户默认拥有最高权限,目录的最高权限777,文件的最高权限666,因为文件系统默认不会给执行权限
​
由此得出root用户创建的目录最高权限为:755 创建的文件最高权限为:644
普通用户创建的目录最高权限为:775 创建的文件最高权限为:664
​
修改用户掩码:umask 四位掩码

高级权限

高级权限: suid 普通文件 sgid,sticky 目录 这三个权限不能给到同一个文件

解释:

suid ==== 4 提权 (只对二进制命令文件生效,其他不管用)所有普通用户可以像root用户一样执行这个命令
​
sgid ==== 2 继承属组权限(只能对目录设置)在目录下创建的文件继承该目录的属组
​
sticky == 1 (t权限)该目录下的文件。只有创建者和root可以删除

suid语法:

suid:chmod u+s $filename 
也可以是:chmod 4777 $filename 
例:chmod u+s /usr/bin/cat 
提权后/usr/bin/cat文件的权限变成了-rwsr-xr-x,可以发现除了文件名被高亮显示以外,属主权限出的执行权限x变为了s;此处需要知道的是x权限并没有被s覆盖,只是因为位置的原因被隐藏了;并且在文件本身没有执行权时,此处的s会是大写的S。

image-20240426203819122

sgid语法:

sgid:chmod g+s $direname 
也可以是:chmod 2777 $direname 
例:chmod g+s dir1/
再修改dir1/目录的继承属组权限后, dir1/的权限变为drwxr-sr-x,属组权限的由r-x变为了r-s,再查看随后创建的文件1.txt,属组已经变为了hr(继承自父目录dir1)

image-20240426205125544

sticky 语法:

sticky :chmod o+t $direname 
也可以是:chmod 2777 $direname 
例:chmod o+t dir1/
可以看到再未执行chmod o+t dir1/命令时,其他用户只要有权限就可以随意删除dir1/下的文件。而再执行chmod o+t dir1/后其他用户尽管有权限也无法删除dir1/下的文件,但创建者却可以。且执行后dir1/的其他人权限由rwx变为了rwt。

image-20240426211106382

未执行chmod o+t dir1/

image-20240426211451608

执行chmod o+t dir1/

特殊权限

提权

suid: 基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行。
sudo: 有针对性,例如针对某个用户以能够以root的身份执行某些命令。
sudo
放开所有命令使用权用法:
打开配置文件sudo:visudo / vim /etc/sudoers
按:?root / ?ALL 检索关键字

image-20240426220648607

在root    ALL=(ALL)       ALL这行下面插入需要提权的用户
例:$username ALL=(ALL)       ALL #如果用户设有密码,此方法在执行命令时会要求输入密码
执行命令是不输入密码:$username ALL=(ALL) NOPASSWD:ALL
​
还可以将用户添加到一个组中,将整个组都提权:
%wheel ALL=(ALL) ALL
gpasswd -a $username wheel
​
最后保存退出即可
​
配置解释
ALL=(ALL)     #表示sudo可以切换到任意用户登陆所有计算机执行命令
NOPASSWD: ALL  #表示所有命令都可以作为root身份执行时不需要root用户的密码
​
注意:退出后最好执行visudo -c 检查一下修改以后是否有语法错误
放开个别命令使用权用法:
打开配置的方法和上面一样
不同的是:
在root    ALL=(ALL)       ALL这行下面插入需要提权的用户
例:$username ALL=(ALL)   NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch        #不再是ALL所有命令了,而是有选择的在指定命令
访问控制权限
setfacl

setfacl 针对个人设置权限 一个人查看一个文件的权限 getfacl 查看权限

getfacl 查看权限:

语法:getfacl  $filename
此处我以chmod为例

image-20240426222332927

setfacl 语法:

setfacl -m u:username:rwx   $filename
例:setfacl -m u:root:rwx /usr/bin/chmod
可以看到有了明显变化,root用户拥有了/usr/bin/chmod的rwx权限

image-20240426223143403

回收授权语法:

setfacl -m u:username:---   filename
setfacl -x u:username       filename
setfacl -b filename

隐藏权限

隐藏权限的作用主要是为文件的安全提供保障,可以防止root用户误删文件,或者修改文件内容

查看文件的隐藏权限

语法:lsattr $filename

image-20240428125716455

设置文件的隐藏权限

语法:chattr [参数] $filename

+<属性>:开启文件或目录的该项属性;

-<属性>:关闭文件或目录的该项属性;

=<属性>:指定文件或目录的该项属性。

参数:i #即Immutable。设置该权限后,即使是root用户也不可以删除或修改该文件

image-20240428130445790

参数:a # 即Append Only。设置该权限后,即使是root用户也不可以删除文件,但可以向文件追加中追加内容

image-20240428130559446

参数:A #即Atime。设置该权限后,root用户可以删除或修改文件内容,但会告诉系统不要修改对这个文件的最后访问时间

image-20240428130640473

拓展

如何查看文件状态信息:stat

image-20240428131420681

小结

对目录有w权限,可以在目录中创建新文件,可以删除目录中的文件(跟文件权限无关)
其他人对目录单有W权限,但没有X权限是无法在目录中创建文件或删除文件的
其他人对目录单有X权限,可以进入目录但无法查看目录下文件内容
​
root用户对一个目录下的文件没有直接的权限,但拥有对该目录的全部权限,root用户仍然可以查看、修改和操作该目录下的文件。
  • 提权方法1:给某个命令提权

chmod u+s   /usr/bin/rm    #“命令”

缺点:一旦提权,所有用户都可以像root用户一样执行命令

  • 提权方法2:给某个用户某些命令的权限

visudo

缺点:被提权的用户将会拥有某些或者全部root用户的权限

提权方法3:给某个用户设置针对某个文件的特殊权限

setfacl

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
头歌Linux是一种基于Linux内核的操作系统,它采用了类Unix的文件权限管理机制。文件权限管理是指对文件或目录进行访问控制和权限设置的过程。在头歌Linux中,每个文件或目录都有三种基本权限:读取权限、写入权限和执行权限。以下是头歌Linux文件权限管理的介绍: 1. 文件权限表示方式: - r(读取权限):表示可以读取文件内容或查看目录中的文件列表。 - w(写入权限):表示可以修改文件内容或在目录中创建、删除文件。 - x(执行权限):表示可以执行文件或进入目录。 2. 文件权限组合: - 文件拥有者权限:文件的所有者对文件具有特定的权限。 - 文件所属组权限:文件所属组的成员对文件具有特定的权限。 - 其他用户权限:除了文件拥有者和所属组成员外的其他用户对文件具有特定的权限。 3. 文件权限设置: - 使用chmod命令可以设置文件或目录的权限。例如,chmod 755 file.txt表示将file.txt文件的拥有者设置为可读、可写、可执行,所属组和其他用户设置为可读、可执行。 - 使用chown命令可以修改文件或目录的拥有者。例如,chown user file.txt将file.txt文件的拥有者修改为user。 - 使用chgrp命令可以修改文件或目录的所属组。例如,chgrp group file.txt将file.txt文件的所属组修改为group。 4. 文件权限查看: - 使用ls命令可以查看文件或目录的权限。例如,ls -l file.txt将以长格式显示file.txt文件的权限信息。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值