linux上如何让other用户访问没有other权限的目录
目前遇到一个问题,一个other用户要访问一个目录,他需要在这个目录下创建文件,因此这个目录需要一个写权限,于是就给了这个目录777的权限,这样这个权限有点太大了,很容易出现安全问题,那我们应该怎么办呢。
我们先来看为什么一定要给这个目录777的权限呢?例如这个other用户为lbh,这个目录为/home/tmp_test/。我们在/home目录下创建tmp_test目录,创建好后,这个目录的默认权限是与umask值相关的。
~]:/home # umask ~]:/home # mkdir tmp_test
~]:/home # ll | grep tmp_test
drwxr-x--- root root Apr : tmp_test
~]:/home # umask
~]:/home # mkdir tmp_test_1
~]:/home # ll | grep tmp_test_1
drwx------ root root Apr : tmp_test_1
默认情况下,这个目录是不会给other权限的用户有读写权限的,所以以lbh这个用户来访问这个目录时访问不到的,更何况是写。
[lbh@linux-home]$ cd tmp_test
bash: cd: tmp_test: Permission denied
所以如果other要访问这个目录,需要修改这个目录的权限,我们将这个目录改为777权限,这个样lbh这个用户就可以访问了,但是这样其他用户也可以访问这个目录了,这对安全造成很大的隐患。那怎么办呢?
一、给这个目录加一个组账号,然后访问的other用户加入到这个组里。
1、我们先创建一个组账号:
groupadd lbh_grp
创建之后,可以在/etc/group这个文件中看到新增的组名,以及组ID信息。
lbh_grp:x::
2、修改tmp_test目录的所属组
root创建的目录默认的所属组都是root,使用chgrp命令来修改所属组。
chgrp lbh_grp tmp_test
3、将other用户加入到所属组中
先用groups lbh命令查看这个用户所属组
:~ # groups lbh
lbh : lbh
然后使用命令usermod -g lbh_grp lbh 为lbh这个用户添加一个组,主要要加-a选项,-a表示append,这样不会改变lbh原来所属的组,只是给lbh添加一个组。
:~ # groups lbh
lbh : lbh lbh_grp
这时再使用lbh这个用户,就可以访问/home/tmp_test这个目录了
二、第二种办法,为进程添加capabilities
Capabilities机制,是在Linux内核2.2之后引入的。它将root用户的权限细分为不同的领域,可以分别启用或禁用。从而,在实际进行特权操作时,如果euid不是root,便会检查是否具有该特权操作所对应的capabilities,并以此为依据,决定是否可以执行特权操作。linux 本身对权限的检查就是基于 capabilities 的,root 用户有全部的 capabilities,所以啥都能干。也就是说给进程加入相应的cap能力后,其他用户使用这个进程时,就可以像root用户一样使用这个cap能力。cap能力有很多,可以参考capabilities(7)。
比如我们现在给touch这个命令加入一个cap能力,如下:
setcap 'cap_dac_override+epi' /usr/bin/cd//多个cap能力可以用,分隔,如
setcap 'cap_chown,cap_dac_override,cap_kill,cap_net_bind_service,cap_sys_nice+eip' /home/register
使用getcap来查询
+ 表示启用,- 表示禁用。
e:表示是否激活该 capability
p:是否允许进程设置该 capability
i:子进程是否能继承 capabilities
查看linux手册,这个cap_dac_override的解释如下:
CAP_DAC_OVERRIDE
Bypass file read, write, and execute permission checks. (DAC is an abbreviation of "discretionary access control".)
这样,lbh这个用户,就可以使用cd命令访问/home/tmp_test这个目录了。
参考 http://www.cnblogs.com/chenmh/p/5459359.html
http://blog.51yip.com/linux/1137.html
http://blog.51cto.com/343308530/1249842
http://blog.51cto.com/343308530/1249842
capabilities 参考:
https://xiezhenye.com/2017/06/linux-capabilities.html
http://rk700.github.io/2016/10/26/linux-capabilities/
http://man7.org/linux/man-pages/man7/capabilities.7.html
https://feichashao.com/capabilities_basic/
linux上如何让other用户访问没有other权限的目录的更多相关文章
- linux上给其他在线用户发送信息(wall, write, talk, mesg)
linux上给其他在线用户发送信息(wall, write, talk, mesg) 2018-01-05 lonskyMR 转自 恶之一眉 修改 微信分享: 设置登录提示 /et ...
- Linux 配置SFTP,配置用户访问权限
之前我服务器是使用的Windows Server 2003,这段时间由于访问量变大我还是机智的换成Linux了,在搭建FTP的时候看到网上都是推荐vsftpd,不过我不推荐这个家伙,看官且看下文. 我 ...
- Linux上使用程序相对路径访问文件【转】
转自:http://blog.csdn.net/yinxusen/article/details/7444249 今天一个朋友问我这个问题,说为什么在Windows上跑得很好的应用程序,移植到Linu ...
- linux上启动tomcat远程不能访问
linux上关闭防火墙同样访问不了,执行iptables -f即可. 你试一试这个“iptables -F”然后再访问,如果能够访问了,那么需要执行“firewall-cmd --add-port=8 ...
- 解决Linux上tomcat启动却无法访问
linux中tomcat的安装 安装tomcat前首先要安装对应的jdk并配置Java环境 下载tomcat安装包 下载路径:https://tomcat.apache.org/download-80 ...
- 在 Linux 上为特定的用户或用户组启用或禁用 SSH
由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统.或者你可能只能够允许几个用户组中的用户访问 Linux 系统.那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实 ...
- Linux思维导图之用户、组和权限
安全3A: Authenticanion认证:验证用户身份; 授权授权;依据身份进行不同权利的分配.Acouting | 劲舞团审计:监督工作. user:id -u 令牌:(护符)ID号 .Linu ...
- 【Linux】【Basis】用户、组和权限管理
1. 概念: 1.1. 每个使用者都有,用户标识UID和密码:并且有身份(Authentication),授权(Authorization),审计(Audition):组(用户组,用户容器) 1.2. ...
- linux(centOS7)的基本操作(三) 用户、组、权限管理
用户和组 1.用户.组.家目录的概念 linux系统支持多用户,除了管理员,其他用户一般不应该使用root,而是应该向管理员申请一个账号.组类似于角色,系统可以通过组对有共性的用户进行统一管理.每个用 ...
随机推荐
- [找工作] 2019秋招|从春招到秋招,Java岗经验总结(收获AT)
转自(有更多) https://blog.csdn.net/zj15527620802/article/month/2018/10 前言 找工作是一件辛酸而又难忘的历程.经历过焦虑.等待.希望,我们最 ...
- 深入剖析kafka架构内部原理
1 概述 Kakfa起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cl ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 参数验证
示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 参数验证 参数验证功能是基于JSR303实现的,用户只需标识JSR303标准的验证Annotation,并通过声明filter来 ...
- 20175329 2018-2019-3《Java程序设计》第三周学习总结
学号 20175329 2018-2019-3<Java程序设计>第三周学习总结 教材学习内容总结 第四章 第四章主要介绍JAVA中的类与对象的划分,其中有很多复杂的概念以及知识点需要花很 ...
- Java多线程(九)—— interrupt()和线程终止方式
一.interrupt() 说明 interrupt()的作用是中断本线程.本线程中断自己是被允许的:其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限.这有可 ...
- 自己制作Chrome便携版实现多版本共存
本文只针对Windows下的Chrome浏览器的使用. 有时候我们需要使用老版本Chrome,或者仅仅体验一下最新版. 上古时代有IETester用来测试多个IE版本,和本机的IE不冲突. Chrom ...
- Jquery遍历之获取子级元素、同级元素和父级元素
Jquery遍历之获取子级元素.同级元素和父级元素 Jquery的遍历,其实就当前位置的元素相对于其他元素的位置的关系进行查找或选取HTML元素.以某项选择开始,并沿着这条线进行移动,或向上(父级). ...
- 容器互联(linking)
容器互联(linking)是一种让多个容器中的应用进行快速交互的方式. 它会在源和接受容器中间创建连接关系,接受容器可以通过容器名快速访问到源容器而不用指出具体的IP地址.
- Redux 入门教程(二):中间件与异步操作
上一篇文章,介绍了 Redux 的基本做法:用户发出 Action,Reducer 函数算出新的 State,View 重新渲染. 但是,一个关键问题没有解决:异步操作怎么办?Action 发出以后, ...
- C++常用代码优化策略
C++代码常用的优化策略 1.不存在指向空值的引用,意味着引用比指针的效率更高,因为在使用引用之前不需要测试它的合法性:指针可以被重新赋值以指向另一个不同的对象,但是引用总是指向它初始化时指定的对象. ...