欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux权限管理-特殊权限

程序员文章站 2023-10-18 22:38:39
[toc] linux权限管理 特殊权限 一,特殊权限 1.suid(4000) SetUID(suid):会在属主权限位的执行权限上写个s 如果该属主权限位上有执行权限,则:s 如果该属主权限位上没有执行权限,则:S 授权方式 setuid总结: ​ 1.让普通用户对可执行的二进制文件,临时拥有二 ......

linux权限管理-特殊权限

一,特殊权限

1.suid(4000)

setuid(suid):会在属主权限位的执行权限上写个s
如果该属主权限位上有执行权限,则:s
如果该属主权限位上没有执行权限,则:s

授权方式

chmod u+s filename
chmod 4755 filename

setuid总结:

​ 1.让普通用户对可执行的二进制文件,临时拥有二进制文件的属主权限
​ 2.如果设置的二进制文件没有执行权限,那么suid的权限显示就是s
​ 3.特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效

2.sgid(2000)
[root@oldboyedu ~]# ll /bin/write 
-rwxr-sr-x. 1 root tty 19624 oct 31  2018 /bin/write    

setgid(sgid):会在属组权限位的执行权限上写个s
如果该属组权限位上有执行权限,则:s
如果该属组权限位上没有执行权限,则:s

授权方式

[root@db04 ~]# chmod 2755 /tmp/test/
[root@db04 ~]# chmod g+s /tmp/test/

作用:1.针对用户组权限位修改,用户创建的目录或文件所属组和该目录的所属组一致。
2.当某个目录设置了sgid后,在该目录中新建的文件不在是创建该文件的默认所属组
3.使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

3. sbit

粘滞位:

[root@oldboyedu ~]# ll -d /tmp/
drwxrwxrwt. 8 root root 105 jul  2 10:15 /tmp/

​ 如果该其他用户权限位上有执行权限,则:t
​ 如果该其它用户权限位上没有执行权限,则:t

授权方式:

[root@db04 ~]# chmod 1755 /opt
[root@db04 ~]# chmod o+t /opt

sticky(si ti ki)粘滞,目前只对目录有效,作用如下:
普通用户对该目录拥有w和x权限,即普通用户可以在此目录中拥有写入权限,如果没有粘滞位,那么普通用户拥有w权限,就可以删除此目录下的所有文件,包括其他用户建立的文件。但是一旦被赋予了粘滞位,除了root可以删除所有文件,普通用户就算有w权限也只能删除自己建立的文件,而不能删除其他用户建立的文件。

注意:系统中存在的/tmp目录是经典的粘滞位目录,谁都有写权限,因此安全成问题,常常是木马第一手跳板。

特殊权限总结

  • suid

    主要是对命令,或者二进制文件,以该二进制文件的属主权限来执行该文件 命令:passwd

  • 2.sgid
    主要是针对目录进行授权,共享目录

  • 3.sbit
    粘滞位,即便是该目录拥有w权限,但是除了root用户,其他用户只能对自己的文件进行删除、移动操作

一个普通用户:zls 属于 oldboyedu这个组
一个文件权限:rwxrw-r-x root.oldboyedu filename1

zls对文件的权限:rw-

r:读

w:写

x:执行

suid:4000

sgid:2000

t:1000

linux权限属性chattr概述

chattr只有root用户使用,用来修改文件系统权限属性,建立凌驾于rwx基础权限之上的授权

chattr命令格式:[root@db04 ~]# #chattr【 +-=】[选项] 文件名或目录名

lsattr:查看特殊权限

chattr:设置特殊权限

i:锁定文件,不能编辑,不能修改,不能删除,不能移动,可以执行

a:仅可以追加文件,不能编辑,不能删除,不能移动,可以执行

设置文件属性(权限)针对所有用户,包括root

#选项:+增加权限 -减少权限 =等于某个权限
#a:让文件或目录仅可追加内容
#i:不得任意更动文件或目录

#创建文件并设置属性
[root@zls ~]# touch file_a file_i
[root@zls ~]# lsattr file_a file_i
---------------- file_a
---------------- file_i

#设置属性
[root@zls ~]# chattr +a file_a
[root@zls ~]# chattr +i file_i
[root@zls ~]# lsattr file_a file_i
-----a---------- file_a
----i----------- file_i

#a权限, 无法覆盖写入和删除文件
[root@zls ~]# echo "aa" > file_a
bash: file_a: operation not permitted
[root@zls ~]# rm -f file_a
rm: cannot remove ‘file_a’: operation not permitted

#a权限, 只能追加, 适用于日志文件
[root@zls ~]# echo "aa" >> file_a

#i权限, 无法写入, 无法删除
[root@zls ~]# echo "i" > file_i
bash: file_i: permission denied
[root@zls ~]# echo "i" >> file_i
bash: file_i: permission denied
[root@zls ~]# rm -f  file_i
rm: cannot remove ‘file_i’: operation not permitted

#解除限制
[root@zls ~]# chattr -a file100 
[root@zls ~]# chattr -i file200

linux进程掩码umask

umask如何改变新文件权限

系统默认umask为022,那么当我们创建一个目录时,正常情况下目录的权限应该是777,但是umask表示要减去的值,所以新目录文件的权限应该是777-022=755。至于文件的权限也依次类推:666-022=644

umask涉及的配置文件

/etc/bashrc

/etc/profile

~/.bashrc

~/.bash_profile

注意:

umask影响的范围

shell (vim,touch) --umask--> 新文件或目录权限
vsftpd --umask--> 新文件或目录权限
samba --umask--> 新文件或目录权限
useradd --umask--> 用户 home

1,在shell进程中创建文件

//查看当前用户的umask权限
[root@zls ~]# umask
0022
[root@zls ~]# touch file0022
[root@zls ~]# mkdir dir0022
[root@zls ~]# ll -d file0022  dir0022/
drwxr-xr-x 2 root root 6 jan 24 09:02 dir0022/
-rw-r--r-- 1 root root 0 jan 24 09:02 file0022

2,修改shell umask值(临时生效)

[root@zls ~]# umask 000
[root@zls ~]# mkdir dir000
[root@zls ~]# touch file000
[root@zls ~]# ll -d dir000 file000
drwxrwxrwx 2 root root 6 jan 24 09:04 dir000
-rw-rw-rw- 1 root root 0 jan 24 09:04 file000

3,修改shell umask(永久生效,不建议)

[root@zls ~]# vim /etc/profile
if [ $uid -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then 
umask 002
else
umask 022
fi

//立即在当前 shell 中生效
[root@zls ~]# source /etc/profil