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,而是应该向管理员申请一个账号.组类似于角色,系统可以通过组对有共性的用户进行统一管理.每个用 ...
随机推荐
- [CQOI2018]破解D-H协议
嘟嘟嘟 这不就是个bsgs板儿嘛. 顺便就复习了一下bsgs和哈希表. 头一次觉得我的博客这么好用,一下就懂了:数论学习笔记之高次不定方程 这里再补充几点: 1.关于这一段代码: int S = sq ...
- hive并行执行作业; 强化在脑海的印象
如果集群资源充足可以设置:set hive.exec.parallel=true; (默认是false) 这样相互独立的job可以并行执行!!!! count(distinct) 最好改写为group ...
- pytorch .detach() .detach_() 和 .data用于切断反向传播
参考:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-autograd/#detachsource 当我们再训 ...
- node.js api文档生成
ApiDoc官网地址为:http://apidocjs.com/在Java中有Swagger及其升级版的Swagger2+Springfox自动生成接口管理文档.而在Node.js中则可以利用ApiD ...
- 初学Python——字典
一.定义 什么是字典? 字典是一种数据类型,是一系列数据的组合. 每一个数据单元都分为key和value,key也称主键,具有唯一性,不可重复.value可以理解成是key对应的值. info={ 1 ...
- leetcode 4:Median of Two Sorted Arrays
public double FindMedianSortedArrays(int[] nums1, int[] nums2) { int t=nums1.Length+nums2.Length; in ...
- vue编程式导航
vue项目中使用到了组件间传值,通过路由跳转实现从产品页进入产品详情页查看功能. 使用了this.$router.push(编程式导航) product页面中:因为只需要遮住产品列表页来显示产品详情页 ...
- C#里面滥用String造成的性能问题
前两天给我们的json写一个解析函数, 之前用的正宗的json parser, 支持完整的json特性. 但是实际上我们用到特性, 只有key-value的映射, value的类型只有数字和字符串两种 ...
- xadmin的使用
01-下载源码 GitHub地址:https://github.com/sshwsfc/xadmin # 安装xadmin 由于使用的是Django2.0的版本,所以需要安装xadmin项目djang ...
- 华为MAC Flapping , MAC的漂移
华为写的很详细,MAC 地址的漂移会导致流量的中断. 华为阻止MAC地址漂移的方法有三种: 一.端口配置静态MAC地址 在全局视图下,执行命令mac-address static mac-addres ...