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,而是应该向管理员申请一个账号.组类似于角色,系统可以通过组对有共性的用户进行统一管理.每个用 ...
随机推荐
- UVA11212-Editing a Book(迭代加深搜索)
Problem UVA11212-Editing a Book Accept:572 Submit:4428 Time Limit: 10000 mSec Problem Description ...
- 有时间研究一下Maven打包插件细节
Maven工作分为多个阶段,具体阶段参考:https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html ...
- maven install 错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-c ...
- TFT1.44显示屏
下载这个库 普通arduino的接口 链接 UTFT myGLCD(LPH9135,6,5,2,3,4); mega2560的接口连接 UTFT myGLCD(QD_TFT180A,A2,A1,A5, ...
- jacoco+ant安装部署篇(统计代码覆盖率,适用自动化测试)
1:什么是jacoco? JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant. ...
- The first day in cnblogs
2018.12.16,学习OI的第4个月零20天,我在博客园开通了属于自己的博客.
- php 数组元素快速去重
1.使用array_unique方法进行去重 对数组元素进行去重,我们一般会使用array_unique方法,使用这个方法可以把数组中的元素去重. <?php $arr = array(,,,, ...
- 纯手写AJAX
function ajax(){ //http相应对象 var xmlhttp; //判断浏览器 if(window.XMLHttpRequest){ xmlhttp = new XMLHttpReq ...
- 关于eclipse tomcat 无法启动(8080,8005,8009端口被占用)的解决方法,附 eclipse tomcat 与 tomcat 并存方式
eclipse 在编译运行时 新建的tomcat连接始终为stopped状态,描述为8080,8005,8009端口被占用. 这是因为在装完tomcat后,tomcat服务已启动,而eclipse仅仅 ...
- python第五章:文件--小白博客
文件操作, 操作文件完毕后一定要记得close # 读,默认是rt(文本的方式读取),rb模式是以字节读取 # 文件路径可以用3中形式表示 f = open(r'C:\Users\fengzi\Des ...