特殊权限
1.suid (set uid)
在使用命令的过程中,如果我们为某个命令添加了suid,则无论是什么用户,在使用该命令时,都会以属主的身份来暂时的使用该命令来运行该命令,便于完成相应命令所对应的的操作.
示例:对/usr/bin/passwd添加一个SUID
1)通过使用chmod u+s 来为该文件添加suid
通过使用chmod u-s可对该文件的suid进行去除
2)suid==4000,通过数字的形式对该文件添加suid,如chmod 4755 /usr/bin/passwd
在去除该文件的suid时可使用chmod 755来进行更改
通过添加suid的方式可以让所有用户在使用一些本身没有权限的命令时临时的切换用户身份为该命令的所属主来对该命令进行使用,便于完成操作.
suid优点:可以让一些普通用户完成一些其本身并不能通过自己身份完成的操作,以此来方便使用.
suid缺点:如果为rm命令所在的文件添加了suid,那么任何用户都可以删除系统的任何资源.
图中可以看出,进程能够以何种身份去查看一个文件,取决与运行这个进程的用户,对该文件有没有权限
没有对cat命令添加suid时
添加了suid以后
2.sgid(set gid)
将目录设置为sgid后,如果在往该目录下创建文件,都将与该目的所属组保持一致.
示例:创建一个组两个用户,使两个用户同时都属于这个组,创建一个目录并将这个目录的所属组更改为这个组
为这个目录添加一个GID为2777,使在该目录下所创建的文件的所属组都是devops,并且这个组中的用户分别创建一个文件
使用张三用户查看李四建立的文件并对其删除
使用李四用户删除张三建立的文件
PS:使用sgid可以使得多个用户之间共享一个目录的所有文件变得简单,但同时也产生了一定的风险,同组的用户不仅可以查看其他人的文件还可以对其他用户的文件进行删除修改
3.sbit
如果一个目录设定了粘滞位, 那么谁都可以在该目录下创建文件,. 删除文件只能是有谁建的文件由谁删除, 除此以外 root 和/tmp/的所属主都能 删除该目录下的额内容.
示例:对/tmp目录设置粘滞位,使得所有用户都可以往该目录下写东西,但只有创建文件的属主才可以删除文件,除此之外只有/tmp的所属主和root也能删除,其他用户可以查看别的用户的文件但不能对文件进行删除
设定粘滞位的方法:
1)chmod o+t
图中可以看出可使用chmod o-t对粘滞位进行去除
2)chmod 1000
图中可以看出可通过chmod 777对粘滞位进行去除
示例:使用张三用户和李四用户分在/tmp目录下创建一个文件编辑并保存
1)用张三用户去查看/tmp目录下李四的文件并尝试删除李四创建的文件,对李四的文件进行编辑保存
2)用李四用户查看张三的文件并对其进行删除修改
3)root用户查看张三跟李四的文件,并删除
总结:
当给/tmp这个目录设置了粘滞位后所有用户可以往该目录中写入文件,也可以查看他人文件,但不能删除他人文件以及修改他人文件.但root用户可以随意删除其他用户的文件.
权限属性chattr lsattr
参数:
-a #只能追加,无其他操作
-i #锁定文件,不能删除,不能追加,不能移动
示例一:希望任何人都不能创建用户
利用chattr +i对/etc/passwd文件进行锁定,不能删除也不能怎家用户
利用chattr -i对/etc/passwd文件进行解锁
示例二:日志文件,希望能往里面追加内容,但不允许删除
进程掩码umask
默认权限 umask是用来控制默认创建文件或目录的权限
umask设定为022,表示要减去的权限
目录 777 -022 =755
文件 666 -022 =644
1.umask 设定为奇数 偶数 对文件和目录有什么影响?
文件: 如果umask出现了奇数, 要在奇数位+1
目录: 对目录毫无影响
PS:umask number 临时 (当前bash窗口有效,会随着bash的关闭一起结束)
vim /etc/profile /etc/login.defs #如果修改则都为永久.
PS: umask 是了解项, 一般不需要调整,默认就是安全的权限.