文件权限管理-1

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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值