linux0775权限,Linux权限管理
1、基本权限
文件权限位,10位:-rwxr-xr-- 第一位表示文件类型,后面3组就是权限,第一组是u所有者,第二组是g所属组,第三组是o其他人 r 读,w 写 ,x 执行
权限修改:chmod [选项] 模式 文件名
选项-R表示递归全部赋予命令指定权限
比如:chmod u+x abc.avi 给当前用户可执行权限
chmod g+w,o+w abc.avi
减权限:chmod u-x,g-w abc.avi
不用考虑之前的,直接对应赋予对应组权限:chmod u=rwx,g=rw abc.avi
给所有用户赋权限:chmod a=rwx abc.avi 三组权限都一样,一般不常用
常用的数字方式:chmod 755 abc.avi
chmod 644 abc.avi 使用比较灵活,r=4,w=2,x=1,二进制指数,避免的歧义和重复
读权限r:对于普通文件,有r权限就可以查看文件内容,如果对目录有读权限,那么可以查看目录下的文件列表
写权限w:对于普通文件,有w权限就可以用vi vim echo编辑文件内容,但是不能删除文件
文件的数据本身属于文件本身的权限控制,文件名称属于目录存放的数据
如果对目录有w权限,就可以修改文件的名称或者删除文件,以及修改目录名称,在目录下面进行任何的操作
执行权限x:对于文件可以运行可执行的脚本;如果对目录有x权限,那么可以进入目录,cd进去
对于文件来说最高权限是执行,对目录来说最高权限是写
对目录来讲 只有0 5 7是有意义的
这些权限限制对root用户是没有用的,root用户可以操作任何权限的目录和文件
chown改变文件所有者
chown user1 abc 然后权限仍然是:755这样user1用户权限是7,就可以正常访问了
chgrp group abc 是修改文件的所属组
chown user1:group1 abc 可以同时修改用户和组,冒号前面是用户,后面是组
同样加-R是递归修改,-v查看修改过程详细信息
对于web服务器等服务端平台,实际开发过程中分配权限的核心原则是:在最小权限下能够满足要求即可,符合最小权限原则
umask 查看默认权限:root用户:0022 普通用户:0002 (文件刚建立时的默认权限,根据这个可以分析默认情况下文件和目录的权限)
第一位0代表特殊权限
文件默认权限是不能执行的,所以最大权限是666,所以文件的默认权限是666换算成字母减去umask值换算成字母相减就是rw-rw-rw- 减去 --- -w- -w- = rw-r--r-- = 644
如果umask是033,则rw-rw-rw- 减去 --- -wx -wx = (空减去x仍为空,所以仍然为644) rw-r--r-- = 644
暂时修改umask值:umask 0033
目录的最大权限是777,所以仍然是:rwxrwxrwx 减去 --- -w- -w- = 755
umask值最小,权限最大,umask值最大,权限最小
永久修改umask值,配置文件和环境变量在同一个文件:/etc/profile
这里面的if语句是用来判断普通用户还是root用户的,修改这个文件可以永久修改umask值
2、特殊权限
ACL权限:任何目录都只能有一个用户和一个组,某些特殊要求下需要ACL权限,ACL权限是为了解决用户身份不够用的情况
原来ACL是为了挂载分区使用的
dumpe2fs -h /dev/sda5 列出超级块信息,可以查看acl权限的存在状态
临时给分区赋予acl权限,重新挂载即可,比如根分区:mount -o remount,acl /
如果分区默认没有acl权限,设置默认挂载需要修改配置文件:/etc/fstab
即把后面的defaults添加修改为defaults,acl
查看文件的acl权限:getfacl 文件名 默认是没有的,查看只显示普通权限
设置权限:setfacl 选项 文件名
添加ACL权限:setfacl -m u:lw:rx av 给用户lw设置av文件为rx权限,这样再使用ls -l查看最后一位从之前的.变成了+
然后通过getfacl av可以看到多了一行user:lw:r-x这就是acl权限,如果是给组设置就用g
还有一行mask::rwx这是指控制用户最高权限,需要和实际的权限进行与运算得到的才是用户真正的权限
r && r=r r && - = - - && r = - - && - = -,所以实际权限为:r-x && rwx = r-x 还是一样的
修改mask值:setfacl -m m:rx av
这时候就算设置:setfacl -m u:lw:rwx av 最后用户lw的权限仍然是r-x
权限可以设置多个用户
删除指定用户权限:setfacl -x u:lw av 同样删除组是用g:组名
删除文件所有的acl权限,所有用户和组的权限都会被删除:setfacl -b av
递归设置目录下所有文件都有对应用户的acl权限:setfacl -m u:lw:rx -R av
但是上面方法导致av下所有的文件都有x可执行权限,这样文件权限就太高了,不可避免的导致了权限溢出
默认情况下目录默认mask为rwx,文件是r-x
给目录设置默认acl权限,以后该目录下所有新建文件或者目录都会继承这个acl权限
设置默认acl权限命令:setfacl -m d:u:lw:rw -R /home/av
设置后使用getfacl查看配置都变成了默认的,设置默认acl只会对之后产生的文件赋予acl权限,之前已经有的文件不会被设置权限
递归权限设置当前存在的文件,默认权限设置以后目录新放进去的文件
默认权限和递归权限都是针对目录来说的,对普通文件没有任何意义
sudo是用户操作命令的权限,重点是针对于命令,而其他都是针对用户操作所有文件的权限
超级用户应该赋予权限,普通用户才可以使用
通过命令visudo可以配置权限,相当于修改配置文件/etc/sudoers
user ALL=(ALL) ALL
user是要赋予权限给哪个用户,ALL是被管理主机的地址,(ALL)是可使用的身份,ALL是授权使用的命令的绝对路径(一定是绝对路径)
如果是本地一台主机,ALL和本地IP作用一样
%group ALL=(ALL) ALL
这里是修改组名
命令可以带参数,写的越详细限制就越严格,只写命令代表可以执行所有的参数
比如执行visudo打开文件定位到最后一样添加:user1 ALL=(ALL) sbin/shutdown -r now
这样就给user1用户赋予了重启计算机的权限
普通用户通过命令:sudo -l 回车后按提示输入密码可以查看自己可以执行哪些命令,否则默认没有sudo权限
普通用户执行命令必须严格执行(必须写绝对路径):sudo /sbin/shutdown -r now 这样才可以正确执行
添加visudo也可以写成:user1 ALL=/usr/sbin/useradd 效果是相同的
比如更改密码添加:user1 ALL=/usr/bin/passwd 这样一定是不可以的!这样普通用户一旦得到权限,就有可能更改root用户的密码,所以应该使用正则表达式匹配
user1 ALL=/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd "", !/usr/bin/passwd root
这样就可以更改一般用户密码,但是不能更改root用户密码了,注意上面逗号后面必须加空格,
这样用户在执行上面设置的命令时,身份是root用户,一定要注意这个关系
某些特殊的权限是系统内部使用的权限,一般不太常用,比如SetUID,SetGID等,强烈建议不要修改,对服务器影响很大
umask第一位是特殊权限的定义
只有可执行的文件才可以设置SUID权限,如果文件不可执行则没有任何意义
对可执行文件赋予SUID可以写成:chmod 4775 abc 第一位补充一个4,这样文件的权限就设置为rwsrwxr-x了,s就代表SUID权限,此时文件颜色变为红色,表示警告,如果没有r权限 ,那么文件权限会变为S权限,大写的S代表错误,所以s=r+S才可以正确执行
命令执行者必须可执行文件有x执行权限才可以执行s权限,
系统中passwd命令就有s权限,所以普通用户可以间接的通过passwd的s权限提升为所有者即root用户,对/etc/shadow密码文件进行修改,修改完毕,权限回归(灵魂附体只在普通用户执行带s权限的命令的过程中有效),如果文件没有SUID权限,则普通用户权限不会提升
设置SUID权限的命令是:chmod 4775 文件名或者chmod u+s 文件名
取消SUID权限的命令是:chmod 0775 文件名或者chmod u-s 文件名
设置SGID权限的命令是:chmod g+s 文件名或者chmod 2775 文件名,作用和前面一致,提升用户组的权限
正常情况下严格控制文件,不要手动设置SetUID权限,系统中定期检查是否出现不常见的SUID权限的文件,如果出现服务器就有可能被注入后门,要尽快清除
清除方法如下:
首先系统正常情况下设置模板文件保存系统中所有带SUID权限的文件:
find / -perm -4000 -o -perm -2000 > /root/suid.log
然后编写脚本,(注意:shello脚本空格严格区分,注意关键词间的空格间隔):
#!/bin/bash
find / -perm -4000 -o -perm -2000 > /tmp/setuid.check
for i in $(cat /tmp/setuid.check)
do
grep $i /root/suid.log > /dev/null
if [ "$?" != "0" ]
then
echo "i isn't in listfile!" >> /root/suid_log_(date +%F)
fi
done
rm -rf /tmp/setuid.check
然后执行脚本:
chmod 755 suid_check.sh
./suid_check.sh
当脚本执行完毕后,在root目录下就会出现suid_log_当前日期这样一个文件,这个时候打开这个文件,里面就是所有除系统默认之外的拥有SUID权限的文件,只需要把列表文件删除即可
SGID权限既可以对可执行文件设置也可以对目录设置,
如果对于文件SGID和SUID相似,只有可执行权限的文件才可以设置SGID权限,
chmod g+s abc或者chmod 2777 abc,设置后组权限有个s,只有普通用户执行时权限提升为组权限,执行完毕同样权限回归
比如普通用户可以执行locate命令提升组为slocate从而搜索数据库文件/var/lib/mlocate/mlocate.db
如果对于目录赋予权限,普通用户必须对目录有r和x权限,如果此时目录也有SUID权限,如果普通用户进入目录时,用户在此目录中的组权限就是该目录的所属组,用户如果对该目录有w权限,则用户在该目录下新建的文件或者目录所属组都是用户的所属组,而不是用户本身的所属组
SGID权限比SUID权限稍微安全一些,同样不建议随便使用
SBIT权限只针对目录有效,如果用户和用户组外其他用户对目录有rwx权限,即7权限,即可以查看并且在目录中创建文件,
首先建立目录,设置权限为chmod 777 abc
默认情况下其他用户虽然不能修改abc目录下root用户和组建立的文件内容,但是由于对目录有写权限,所以可以删除abc下面的文件,当设置SBIT粘着位之后,那么其他用户就算对目录拥有rwx权限,但是也不能删除这个目录下root用户创建的文件了,而只能删除自己的文件
设置SBIT权限,chmod o+t abc,设置后第三组其他用户权限变为rwt,t就代表SBIT
/tmp目录就拥有SBIT权限,默认情况下所有用户都拥有新建文件的权限等,默认情况下对指定文件没有写权限,所以不能删除也不能对其他用户的文件有任何操作,这样就发挥临时目录的作用
在web服务器目录中,不要设置目录权限为777,虽然这样方便,最好的方法是要更合理的调整用户符合分配最小权限原则,够用即可
之前设置给目录设置SBIT权限后,虽然目录下文件不能删除,但是可以修改内容,用不可改变位权限可以解决这个问题
不可改变位设置:
对于文件和目录都生效:chattr +i abc
通过lsattr abc可以查看这个文件具体的权限,可以看到+i后权限里面除了e还多出来一个i
通过lsattr -d abc可以查看目录的不可改变位权限
给普通文件设置i权限后,所有用户包括root都不能修改该文件的内容或者删除文件,但是root用户本身可以赋予或者取消该权限设置,同样拥有控制权
如果给目录设置i权限后,只能修改目录下文件内的内容,不能建立和删除下面的文件也不能对文件重命名
取消i权限:chattr -i abc
a权限,对文件或者目录设置a权限:chattr +a abc
给文件赋予a属性,属性中会多一个a,则文件里面只能追加内容,但是不能删除文件也不能减少内容,用vi/vim追加是无效的,会被系统禁止,但是可以用 echo abcd >> abc这样的方式正确追加
如果对目录设置a属性,则只可以在目录中建立新文件,但是不能删除或者修改旧文件名,但可以修改文件内容,但是会有警告,已经建立的新文件也无法删除
取消a权限:chattr -a abc
i和a权限同样不建议随便使用,还是建议灵活使用系统的基本权限以及默认权限,必要时再使用特殊权限,提高系统的稳定性和安全性。
linux0775权限,Linux权限管理相关推荐
- o在linux是什么权限,Linux权限管理基本知识大全
Linux权限管理基本知识大全 Linux系统有什么基本权限,权限管理命令是什么?下面跟yjbys小编一起来看看吧! 一.基本权限 linux权限机制采用UGO模式.其中 u(user)表示所属用户. ...
- 【Android 逆向】Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )
文章目录 一.Linux 权限简介 二.系统权限 / 用户权限 / 匿名用户权限 1.系统权限 2.用户权限 3.匿名用户权限 一.Linux 权限简介 Linux 是基于文件的系统 , 内存 , 设 ...
- php linux权限,Linux权限详细介绍
在理解权限之前我们要知道linux中的用户组: 在Linux中每个用户都属于一个组,Linux中每个文件都都有所有者.所有组.其他组.这几个概念我们可以用现实中的例子来理解.比如说你有一本书,那么你就 ...
- linux中ugo什么权限,Linux权限机制:UGO | 昆特斯的控
权限 权限是操作系统用来限制对资源访问的机制,权限一般分为读.写.执行.系统中每个文件都拥有特定的权限.所属用户及所属组,通过这样的机制来限制哪些用户.哪些组可以对特定文件进行什么样的操作. 每个进程 ...
- linux中来宾用户权限,linux权限分配
查看当前目录,附带上权限级别的 ll [root@localhost text]# ll total 24 drwxr-xr-x. 3 root root 4096 Sep 26 00:29 a d ...
- linux递归访问文件权限,Linux基础管理——文件权限管理(访问控制)
1.文件权限 1.1.三类权限简述 读.写.执行:rwx. 1.2.文件属性操作chown :设置文件的所有者(属主信息): chgrp :设置文件的属组信息: 1.3.修改文件的属主和属组 1.3. ...
- linux 774是什么权限,Linux 权限位,权限值,权限管理
Linux 是个多用户操作系统.由于是个人计算机,一般都是被信任的人使用,可以直接登录并且管理.但是在服务器上,不是所有的用户都使用管理员的身份登录,根据不同的工作需要和职位需要,和权限等级合理分配用 ...
- linux的rwx权限,linux权限管理:rwx
标签:rwx 权限管理简介: r,w,x 对文件及目录进行权限管理,从而达到文件及目录管理. 1.rwx对于文件而言: r:可读,可以使用类似cat等命令查看文件内容: w:可写,可以编辑或删除此文件 ...
- linux alc权限,Linux账号管理与ALC权限设定(二)
接上篇.鸟哥提出了一个问题.就是 如果myuser1用户是这个项目的助理,他只能查看该目录下的内容,而无法修改删除.那该如何操作呢? 首先,不能将该用户加入projecta这个群组,否则他也可以修改删 ...
最新文章
- java 路径 工具类,java 绝对路径工具类
- C# ThreadPool类(线程池)
- 单片机与外设模块数据传输不成功各种原因分析总结
- Jrebel最新激活破解方式
- 如何在 Flink 中规划 RocksDB 内存容量?
- Java日历compareTo()方法与示例
- 城市轨道交通运营管理属于什么院系_专业介绍|城市轨道交通运营管理专业
- python故事_python的故事
- .NET 5中的EF Core 5数据迁移:在单独的库中并自动部署
- 各大搜索引擎提交地址
- 问题2----网速问题?造成的ORA-01034和ORA-27101
- java文件下载和导出文件名乱码浏览器兼容性问题
- 马哥Linux学习笔记2-3Linux命令帮助的获取详解
- Latex角标 左侧角标 左上角角标 左下角角标
- 计算机基础知识如何打钩,打勾的符号怎么输入电脑上(对勾符号在word和Excel的输入方法)...
- 自定义可折叠和展开的View
- Redis进击(二)搭建Redis主从复制服务集群(一主两从、反客为主)【Windows环境】
- 实习生如何在平淡无奇的工作中凸显自我价值?
- 台式电脑耳麦合一接线方式
- 王见:手机创业很简单,去县城获取粉丝更简单!