linux上如何让other用户访问没有other权限的目录

摘要:
例如这个other用户为lbh,这个目录为/home/tmp_test/。[lbh@linux-home]$cdtmp_testbash:cd:tmp_test:Permissiondenied所以如果other要访问这个目录,需要修改这个目录的权限,我们将这个目录改为777权限,这个样lbh这个用户就可以访问了,但是这样其他用户也可以访问这个目录了,这对安全造成很大的隐患。lbh_grp:x:1004:2、修改tmp_test目录的所属组root创建的目录默认的所属组都是root,使用chgrp命令来修改所属组。它将root用户的权限细分为不同的领域,可以分别启用或禁用。linux本身对权限的检查就是基于capabilities的,root用户有全部的capabilities,所以啥都能干。

目前遇到一个问题,一个other用户要访问一个目录,他需要在这个目录下创建文件,因此这个目录需要一个写权限,于是就给了这个目录777的权限,这样这个权限有点太大了,很容易出现安全问题,那我们应该怎么办呢。

我们先来看为什么一定要给这个目录777的权限呢?例如这个other用户为lbh,这个目录为/home/tmp_test/。我们在/home目录下创建tmp_test目录,创建好后,这个目录的默认权限是与umask值相关的。

~]:/home # umask
0027
~]:/home # mkdirtmp_test
~]:/home # ll | greptmp_test
drwxr-x---  2 root      root            4096 Apr 19 11:59tmp_test
~]:/home # umask 0077
~]:/home # mkdirtmp_test_1
~]:/home # ll | greptmp_test_1
drwx------  2 root      root            4096 Apr 19 12:01 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:1004:

2、修改tmp_test目录的所属组

root创建的目录默认的所属组都是root,使用chgrp命令来修改所属组。

chgrp lbh_grp tmp_test

3、将other用户加入到所属组中

先用groups lbh命令查看这个用户所属组

:~ # groupslbh
lbh : lbh

然后使用命令usermod -g lbh_grp lbh 为lbh这个用户添加一个组,主要要加-a选项,-a表示append,这样不会改变lbh原来所属的组,只是给lbh添加一个组。

:~ # groupslbh
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权限的目录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇快速配置Samba服务nltk安装配置以及语料库的安装配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ubuntu centos debina

文章目录CentOSDebianCentOS与Debian哪个好?Ubuntu买VPS时有CentOS、Debian、Ubuntu三种操作系统可以选择,Linux下哪种系统更好是很多新人都会遇到的问题,在此,我们分析一下Ubuntu、CentOS及Debian各自的性能及使用经验。做服务器的很少会用Ubuntu,所以我们最后分析这个。先来看看使用率较高的C...

Linux环境下Gitblit服务搭建及秘钥配置

一、安装gitblit服务 1、下载地址https://pan.baidu.com/s/1wQ3TEE_gw5xZvyFPZB9xFg 2、上传至linux服务器并解压缩 tar xvf gitblit-1.8.0.tar.gz 3、修改defaults.properties文件 vim /usr/local/gitblit-1.8.0/data/defa...

Makefile简介

一、为什么要写Makefile         首先要确定我们的目标,Makefile是用来干嘛的?         曾经很长时间我都是在从事Windows环境下的开发,所以根本不知道Makefile是个什么东西。因为早已经习惯了使用VS、Eclipse等等优秀的IDE做开发,只要点一个按钮,程序就可以运行啦。但是进入公司以后,从事的是Unix环境下的开发...

qemu kvm 虚拟化

虚拟化: KVM是一个基于Linux内核的虚拟机,属于完全虚拟化。虚拟机监控的实现模型有两类:监控模型(Hypervisor)和宿主机模型(Host-based)。由于监控模型需要进行处理器调度,还需要实现各种驱动程序,以支撑运行其上的虚拟机,因此实现难度上一般要大于宿主机模型。KVM的实现采用宿主机模型(Host-based),KVM是集成在Linux内...

Linux服务器,服务管理--systemctl命令详解,设置开机自启动

Linux服务器,服务管理--systemctl命令详解,设置开机自启动 syetemclt就是service和chkconfig这两个命令的整合,在CentOS 7就开始被使用了。 摘要: systemctl 是系统服务管理器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起。 任务 旧指令 新指令 使某服务自动启动...

Linux多进程开发IV

1.共享内存。允许两个或多个进程共享物理内存的同一块区域(段)。 共享内存是进程用户空间的一部分,因此这种IPC机制需要更少的内核处理。一个进程将数据复制到共享内存中,那么这部分数据就会对其他所有共享同一个段的进程可用。 与管道等要求发送进程将数据从用户空间的缓冲区复制到内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种IPC技术...