文件权限管理
来源:互联网 发布:java中冒泡排序法代码 编辑:程序博客网 时间:2024/05/16 01:57
一、基本权限管理
1.ll命令之后的文件:
-rw-r--r-- - 文件类型 (-文件 d目录 l软链接) u 所有者 g 所属组 o 其他人 (所有者可以不属于所属组) r 读 w 写 x 执行
2.chmod命令:
使用+、-、r、w、x
格式:chmod [选项] 模式 文件名 (-R 递归)
权限的数字表示
r ---- 4w ---- 2x ---- 1rwx:7 rx:5 rw:6 r:4644: rw-r--r--777: 755: rwxr-xr-xchmod 777 文件
其他命令
chown 用户名 文件名 //改变文件的所有者chgrp 所属组 文件名 //改变所属组chown 所有者:所属组 文件名 //同时修改所有者和所属组
3.sudo权限:
root把本来只能超级用户执行的命令赋予普通用户执行。
sudo的操作对象是《系统命令》
visudo命令实际修改的是/etc/sudoers文件 root ALL=(ALL) ALL 用户名 被管理主机的地址=(切换的身份) 授权命令(绝对路径) user1 ALL=(ALL) /sbin/shutdown -r now user1 ALL=/usr/sbin/useradd user1 ALL=/usr/sbin/passwd ***********可以更改root命令 解决: user1 ALL=/usr/sbin/passwd [a-zA-Z]*, !/usr/sbin/passwd "", !/usr/sbin/passwd root 注意:不要赋予普通用户vi权限。不然会有权限(以root身份)修改所有配置文件。 %wheel ALL=(ALL) ALL %组名 被管理主机的地址=(切换的身份) 授权命令(绝对路径)sudo -l 查看所有被允许的命令sudo 命令 //执行命令,之前会要求输入当前用户的密码,必须是绝对路径
4.权限的作用:
权限对文件的作用:
r:读取文件内容(cat more head tail)w:编辑、新增、修改文件内容(vi echo) 但是不包括删除。 文件夹保存文件,文件保存数据。删除文件需要对文件夹有写权限,理解:文件夹和文件都有自己的数据块,x:可执行对文件来讲,最高权限是执行x
权限对目录的作用:
r:可以查询目录下的文件名(ls)w:具有修改目录结构的权限。如新建文件和目录,删除此目录下文件和目录,重命名、剪切(touch rm mv cp)x:可以进入目录(cd)对目录来讲,最高权限是写w。有效的权限:0 5(rx) 7(rwx)无效的权限:4 1 6...(原因:没有x,就没有进入目录的权限,其他操作没有意义)
二、特殊权限介绍
1.默认权限:
window中默认权限继承至上一级文件,Linux中umask查看默认权限umask //0022,0文件的特殊权限,022文件默认权限文件默认值计算: 文件默认不能建立为执行文件,必须手工赋予执行权限。 文件默认权限最大666 默认权限需要换算成字母再相减 建立文件之后的默认权限,为666减去umask值。 666 rw-rw-rw- 默认权限最高值 022 ----w--w- umask //修改umask值来改变最终默认权限 644 rw-r--r-- 结果文件夹默认值计算: 目录权限最大为777 换算成字母后减去umask值。临时修改umask值: umask 0000永久修改umask值: vi /etc/profile 环境变量配置文件
2.特殊权限:
安全性考虑,若非必须,不要使用这些权限
s代表可执行的SUID,S代表不可执行的SUID
SetUID:仅能作用于文件
ll /usr/bin/passwd 用户修改自身密码 只有可以执行的二进制程序才能设定SUID权限 命令执行者要对该程序拥有x权限 命令执行者在执行该程序时获得该程序属主的身份(在执行程序的过程中灵魂附体为文件的属主) SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。 增加方法: chmod 4775 文件名 chmod u+s 文件名 rwsrwxr-x 取消方法: chmod 0775 文件名 chmod u-s 文件名 rwxrwxr-x 危险的SetUID: chmod 4755 /bin/vi *************给vi设定SUID,执行vi时身份是root。 关键目录应严格控制写权限,比如"/","/usr" 用户密码设置要严格遵守密码三原则 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文件设置了SetUID权限
SetGID:能作用于文件和目录
locate命令:用户对/usr/bin/locate命令有执行权限,/usr/bin/locate所属组为slocate,并设置了SGID。用户执行locate时,组身份会升级为slocate,而slocate对/var/lib/mlocate/mlocate.db拥有r权限,所以普通用户可以使用locate命令查询mlocate.db数据库。命令结束后用户身份返回为原组。 只有可执行文件的二进制程序才能设置SGID 命令执行者要对该程序拥有x权限 命令执行者在执行该程序时,组身份升级为该程序文件的属组 SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效。给目录设置SGID权限: 用户在此目录下新建文件默认的所属组为目录的组,而不是用户本身的组设定SGID: chmod 2755 文件名 //0755 chmod g+s 文件名 //g-s删除
一个监控系统中所有拥有SUID和SGID文件的脚本
#!bin/bashfind / -perm -4000 -o -perm -2000 > /tmp/setuid.check#搜索系统中所有拥有SUID和SGID的文件,保存到临时文件中for i in $(cat /tmp/setuid.check)#每次循环取出临时文件中的文件名do grep $i /root/suid.log > /dev/null #suid.log为预先保存的所有合法的拥有suid文件的模板,查看文件是否在模板中 #suid.log的创建命令:find / -perm -4000 -o -perm -2000 > /root/suid.log if("$?" != "0") #检测上一个命令的返回值,若不为0,证明上一个命令报错 then echo "$i isn't in listfile!" >> /root/suid.log.$(date+%F) #若文件名不在模板文件中,输出错误信息到日志文件 fidonerm -rf /tmp/setuid.check
Sticky BIT:粘着位权限,仅能对目录有效
普通用户对该目录拥有w和x权限,即普通用户可以在此目录拥有写入权限。(7) 要求目录给其他人的权限为7,除了系统自带的,不建议给其他目录增加SBIT权限。如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了root可以删除所有的文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。应用场景:共享目录,每个用户上传文件,但禁止删除其他用户的文件。 设置: chmod 1755 目录 chmod o+t 目录 删除: chmod 0755 目录 chmod o-t 目录/tmp 临时目录拥有777,默认拥有SBIT权限
3.不可改变位权限:(chattr权限)
chattr [+-=] [选项] 文件名或目录名+增加 -删除 =等于某权限SBIT选项: i和aa等价于append , i等价于insert 文件设置i属性:不允许对文件进行删除、改名,也不能添加和修改数据; 锁定,有此属性时,root都不可修改,但root可以去掉此属性 chattr +i 文件名 目录设置i属性:只能修改目录下文件的数据,但不允许建立和删除文件。 文件设置a属性:只能在文件中增加数据,不能删除和修改数据; 禁止vi增加数据(很难判断是否增加还是删除),只能输出重定向。 目录设置a属性:只允许在目录中建立和修改文件,不允许删除文件。lsattr 文件名lsattr -d 目录名
4.ACL权限
Access Control list,解决文件权限控制中,用户身份不足的问题。
查看分区ACL权限是否开启:(ACL权限是挂载权限,属于分区的)
df //查看分区dumpe2fs -h /dev/sda5 查询指定分区详细文件系统信息的命令。-h 仅显示超级块中信息,而不显示磁盘块组的详细信息。临时开启ACL,重新挂载: mount -o remount,acl / //重新挂载根目录,增加acl权限。永久开启: vi /etc/fstab //在分区表中修改:defaults,acl mount -o remount /
查看ACL权限:
getfacl 文件名 //查看文件的ACL权限,+表示有ACL权限。
设定ACL权限的命令:
setfacl 选项 文件名 -m 增加: setfacl -m u:user1:rx 文件名 //给用户user设置rx权限 setfacl -m g:group1:rx 文件名 //给用户组group1设置rx权限 setfacl -m m:rx 文件名 //指定最大有效权限 mask :指定最大有效权限,给用户赋予的ACL权限需要和mask的权限相与才能得到用户的真正权限。 -x 删除指定: setfacl -x u:用户名 文件名 -b 删除所有acl权限: setfacl -b 文件名 -d 默认acl权限:给父目录设定了默认ACL权限“之后”,在父目录中建立的所有子文件都会继承父目录的ACL权限。 setfacl -m d:u:用户名:权限 文件名 -R 递归设置acl权限: setfacl -m u:user1:rx -R 文件名 //递归,只能赋予目录。给父目录设定权限时,给“已有的”子文件和目录赋予相同的权限 递归时注意权限溢出: 执行权限对目录的作用和文件的作用是不一样的。目录需要执行权限来进入目录,但文件应尽量少给执行权限。
0 1
- 文件管理--文件权限
- 文件权限管理__2__rwx权限
- 文件权限管理
- 文件权限管理
- linux文件权限管理
- 文件权限管理
- 文件权限管理
- Linux文件权限管理
- 15. 文件权限管理
- Linux文件权限管理
- linux文件权限管理
- 文件权限管理
- linux文件权限管理
- linux文件权限管理
- linux文件权限管理
- 文件管理与权限
- RHEL7文件权限管理
- linux文件权限管理
- 统计中纬度与指标的区别
- 结合jdk源代码深入讲解Java中==及equals方法的机理
- java监控路径下文件变化
- 控制台小游戏之贪吃蛇
- poj 1363 Rails 数组模拟栈操作
- 文件权限管理
- PHP+MYSQL登录界面和数据库验证
- UI-1
- python操作mysql——插入、查询、删除
- 动画的重用
- Hibernate查询
- Leetcode-66. Plus One
- TCP的成块数据流
- Bitmap.createBitmap 得到 的bitmap 不一定是新的bitmap