Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

   2016-11-22 0
核心提示:一 ACL权限,我们来假设这么一种场景,在真实项目中有一个目录project,它的所属主的权限是rwx,它的所属组的权限也是rwx,其他人没有任何权限,我们的员工一般都会划分到所属组里,来完成日常工作,但是这个时候来了一个新员工,这个员工对linux操作不太熟悉

一 ACL权限

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

,我们来假设这么一种场景,在真实项目中有一个目录project,它的所属主的权限是rwx,它的所属组的权限也是rwx,其他人没有任何权限,我们的员工一般都会划分到所属组里,来完成日常工作,但是这个时候来了一个新员工,这个员工对linux操作不太熟悉,管理员只想给它分配读和执行的权限,不想给它写的权限,防止他误删文件或是其他,我们该怎么办呢,新建一个组?文件夹只能有一个所属组,把其他人的权限给读和执行,这样更不安全,所以这时ACL权限就有用武之地了,我们可以利用ACL权限给这个指定的用户设定读和执行的权限。

1 查看和设置ACL权限

好了,我们现在模拟这种情况,首先创建一个工作目录/project,然后给它赋予770权限,创建3个用户,zhangsan,lisi,st,创建一个tgroup组,把zhangsan和lisi添加到tgroup组里,改变project的所属组为tgroup

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

现在我们这个st用户,我们想特别对待,只给他rx权限,那么就设置ACL权限,我们在设置之前,先查看下ACL权限,用getfacl project

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

这里没有看到任何特殊权限

下面设置ACL权限

setfacl -m u:st:rx /project/

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

-m就是添加一个ACL权限,使用u:用户名:权限的格式,给st设置rx权限

我们再来查看下

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

我们看到多了两行

user:st:r-x,表明st这个用户有了rx权限,mask:rwx,其实用户st真正有的权限,是r-x和mask默认权限相与的结果,下面我们来验证下,比如我在project目录下创建一个文件,然后切换到st用户,看能否删除

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

,我们发现一开始我们假设的目的达到了,st这个用户只有rx权限,没有w权限,不能随便删除文件。

接下来看下给用户组设定ACL权限,格式是setfacl -m g:tgroup2:rx /project/

比如我们新建一个tgroup2的组,给它rx权限,然后新建一个st2,把st2加入tgroup2组中,给tgroup2组设置ACL权限rx,我们看下st2是不是一样不能删除文件

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限 Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

好了,所有属于这个组的用户有一样的rx权限,注意,组的acl权限同样是跟mask权限与的结果。

2 最大有效权限和删除ACL权限

我们上面说了,ACL权限的最终结果是跟mask权限与的结果,那如果我们想修改这个最大有效权限呢

setfacl -m m:rx 文件名

这样就可以了,这里就不演示了

那刚才我们添加了几个acl权限,如果想删除st1和tgroup2的acl权限

setfacl -x u:st1 文件名

setfacl -x g:tgroup2 文件名

如果想全部删除

setfacl -b 文件名 这样就全都删除了

3 递归ACL权限和默认ACL权限

递归是父目录在设定ACL权限时,所有的子文件和子目录也会有相同的ACL权限

setfacl -m u:用户名:权限 -R 父目录

默认ACL权限的作用是,如果给父目录设定了ACL权限,那么父目录中所有新建的子文件都会有默认的ACL权限

setfacl -m d:u:用户名:权限 文件名

二 文件特殊权限

1 SetUID

只有可以执行的二进制程序才能设定SUID权限,命令执行者要对该命令有x执行权限,

命令执行者在执行程序时,可以灵魂附体为文件的属主,SUID权限只在程序的执行过程中有效

举个例子:

我们来看下可执行文件passwd的详细信息

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

我们看到该可执行文件的 所有者是root,并且权限的用户权限是rws,表明passwd文件具有SUID权限,所以普通用户可以修改自己的密码,普通用户修改自己密码的过程,是灵魂附体为root,然后执行passwd,修改完又恢复自己的身份

我们再来看下cat命令的详细信息

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

cat命令就没用SUID权限,所以普通用户不能查看/etc/shadow 的内容

设定SUID的方法:

4代表SUID

chmod 4755 文件名

chmod u+x 文件名

取消SUID的方法:

chmod 755 文件名

chmod u-x 文件名

2 SetGID

SetGID针对文件的作用:

只有可执行的二进制文件可以设定SGID权限,命令执行者要对该命令具有x执行权限,在执行命令的过程中,组身份升级为该程序文件的属组,执行完恢复

举个例子,我们看下locate命令

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

我们知道在执行locate命令的时候,是去查询数据库

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

用户在执行locate命令的时候,组身份变为slocate组,而查询数据库时,slocate组具有读的权限,所有可以查询,查询完,恢复本身组的身份

SetGID针对目录的作用:

普通用户必须对此用户具有r和x权限,才能进入该目录,普通用户在此目录中的有效组会变成此名录的属组,若普通用户对此目录拥有w权限,那么新建的文件的默认属组是这个目录的数组

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

我们看到dtest目录的属组权限是r-s,这个s就是SGID权限,有了这个之后,新建的abc文件的属组就是root了,而不是st2

设定SetGID

2代表SGID

chmod 2755 文件名

chmod g+s 文件名

取消SetGID

chmod 755 文件名

chmod g-s 文件名

3 Sticky BIT

SBIT粘着位的作用:

SBIT只对目录有效,普通用户对该目录拥有W和X权限,如果没有SBIT,由于用户有W

权限,可以随便删除该目录下的文件,一旦有了SBIT,就算用户有W权限,也不能随便删除其他用户从黄金的文件

设置SBIT

chmod 1755 目录名

chmod o+t 目录名

取消SBIT

chmod 755 目录名

chmod o-t 目录名

三 chattr权限

命令格式

chattr [+-=] 选项 文件或目录名

+增加权限

- 删除权限

= 等于某权限

选项

i:如果对文件设置i选项,那么不允许对文件删除,改名,也不能添加和修改数据

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

lsattr是查看chattr属性

如果对目录设置i属性,那么只能修改该目录下的数据,不能新建和删除文件

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

a:如果对文件设置a属性,那么只能在文件中添加数据,不能修改也不能删除数据

如果对目录设置a属性,那么只允许在目录中建立和修改文件,不能删除文件。

四 sudo权限

把本来只有root可以执行的命令赋予普通用户

sudo的操作对象是系统命令

执行visudo命令

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限 Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

比如我现在想赋予st2用户重启服务器的命令

st2 ALL=/sbin/shutdown -r now

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

然后我们切换到st2

可以用sudo -l查看可用的命令

Linux权限管理ACL权限,文件特殊权限,chattr权限,sudo权限

那么在执行的时候

sudo shutdown -r now即可

好了,Linux权限管理ACL权限,文件特殊权限,chattr权限和sudo权限就总结到这里,如有问题,欢迎指正,谢谢。

本文永久更新链接地址 http://www.linuxidc.com/Linux/2016-11/137260.htm

 
标签: Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 每天一条linux命令——halt
    halt命令用来关闭正在运行的Linux操作系统。halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。 语法:halt(选项)选项:-d:不要在wtmp中记录;-f:不论目前的runlevel为何,不调用shutdown即强制关闭系统;-i:
    02-10
  • 几个linux命令查看堆栈内存问题 几个linux命令
      公司编写代码,发现整个在程序里面调用system时候总是失败,原因是can't allocate memory ,根本原因不是内存不足,而是堆栈内存不够。使用ulimit -s 2048后有所好转但是发现一旦系统进程开启多了后仍然会挂。后来使用objdump -x 后发现了原因有个动态库
    02-09
  • Linux命令总结--rm命令 linux的rmp命令
    (来源于http://www.cnblogs.com/xqzt/p/5398919.html)1、命令简介rm(Remove file 删除目录或文件)删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变。新手在删除文件之前一定要知道这些:很重要1.可以用mv代替rm的绝对不要用rm,不要着急
    02-09
  • Linux命令行批量创建目录详解 linux创建目录
    以前一直用-p创建目录链,觉得很方便了。在空目录/opt/app/myapp里创建src,再创建main,再创建javamkdir -p /opt/app/myapp/src/main/java没想到还可以这样玩##¥%……*(root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp}root@vm1:
    02-09
  • Linux命令之乐--script和scriptplay
    script和scriptplay可以把终端会话记录到一个文件中,可以用来制作命令行教学视屏。 开始录制会话[root@new test]# script -t 2timing.log -a output.sessionScript started, file is output.session[root@new test]# echo hellohello[root@new test]# echo
    02-09
  • java 开发常用的Linux命令
    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件。find . -name "*.xml" 递归查找所有的xml文件find . -name "*.xml" |xargs grep "hello world" 递归查找所有文件内容中包含hello world的xml文件grep -H 'spring' *.xml 查找所
    02-09
  • 常用Linux命令整理 Linux常用命令总结
    常用Linux命令整理常见系统命令export 查看或修改环境变量# 例:临时修改命令提示符为字符串$export PS1=$# 例:临时修改命令提示符显示系统时间 时间使用\t 表示export PS1="[\u@\h \t \W]\$"man 查看linux系统的手册# 例:查看ls命令如何使用man ls # 回车
    02-09 Linux
  • linux命令行—《命令行快速入门》 linux常用命令csdn
    linux命令行—《命令行快速入门》 linux常用命
    pwd print working directory 打印工作目录hostname my computer's network name 电脑在网络中的名称mkdir make directory 创建路径cd change directory 改变路径ls list directory 列出路径下的内容rmdir remove directory 删除路径pushd push directory 推
    02-09
  • Linux命令(五) 五个常用的linux命令
    Linux命令(五) 五个常用的linux命令
    jenkins触发钉钉报警机制1、安装钉钉插件钉钉报警需要安装Ding Talk插件,支持钉钉报警2、打开钉钉创建钉钉机器人2.1选择机器人类型——自定义2.2添加机器人2.3填写机器人信息填写机器人姓名—设置安全设置为加密类型,并复制出来加密值2.4创建完成保持webhoo
    02-09
  • 03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令
    03_Linux基础-文件类型-主辅提示符-第1提示符-L
    03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/与/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod博客
    02-09
点击排行