现在需要限定某个用户对特定目录/文件的访问权限,或者把某个用户的访问范围限制在某个目录/文件中。现实情况下,还是能遇到这样的需求的,比如说ubuntu下有多个可登录用户,默认情况下,用户A的工作目录(一般为/home/A)对任何其他用户来说都是可读的,但是用户A可能不希望其他用户(或者某个特定用户)读取A的文件。

这里提出三个解决方案。

第一种:使用chmod更改特定目录的权限。这能起到限制特定目录被某些人访问的作用,限定某个用户的目的也能达到,但是会误伤其他用户。

第二种:使用linux容器,例如lxc。耗费空间,设置稍显麻烦。

第三种:使用setfacl命令设定访问控制。

其中,第三个方案是最符合要求的。本文主要讲该方案的具体实现并在我自己的本上测试。我的系统为Linux Mint 15 64位,根目录/使用的是ext4文件系统,/home使用的btrfs文件系统。

安装acl

复制代码

代码如下:

sudo apt-get install acl

有资料说是要重启系统,但是测试的时候我发现这个在以前就已经安装好了(不知道是Mint自带了还是我胡乱装的),没有重启依旧有效。

使用setfacl

以root的身份执行下面的命令:

复制代码

代码如下:

# mkdir /home/test

# touch /home/test/foo.txt

# vim /home/test/foo.txt

# ls -ld /home/test/

drwxr-xr-x 1 root root 14 Jan 16 09:46 /home/test/

# ls -ld /home/test/foo.txt

-rw-r--r-- 1 root root 6 Jan 16 09:46 /home/test/foo.txt

上面的命令在/home目录下创建目录test,在test目录下创建文件foo.txt,并在foo.txt下随便加了些内容。然后以普通用户letian的身份访问foo.txt,可以读foo.txt。

现在以root身份运行setfacl,使得/home/test目录及其里面的文件和目录不能被letian访问。

复制代码

代码如下:

# setfacl -R -m u:letian:- /home/test/

-R表示递归,-m表示修改,u:letian:-表示用户(user)letian对/home/test没有任何权限。可以根据需要添加r、w、x及其组合。 我们查看一下test目录的详细信息:

复制代码

代码如下:

# ls -ld /home/test/

drwxr-xr-x+ 1 root root 14 Jan 16 09:46 /home/test/

文件权限后面出现了一个+号,这说明该文件或者目录设置了ACL。foo.txt的权限信息后面也会有+号。 然后,以letian的身份访问该目录:

复制代码

代码如下:

$ ls /home/test

ls: cannot open directory /home/test: Permission denied

使用getfacl

getfacl用来查看对某个目录/文件设置的acl。

复制代码

代码如下:

$ getfacl /home/test

# file: /home/test

# owner: root

# group: root

user::rwx

user:letian:---

group::r-x

mask::r-x

other::r-x

删除设置的acl

复制代码

代码如下:

# setfacl -b /home/test/

# getfacl /home/test

# file: /home/test

# owner: root

# group: root

user::rwx

group::r-x

other::r-x

linux 服务器访问限制,Linux中限制用户访问权限的3种方法相关推荐

  1. Linux服务器上的硬盘映射挂载到mac上的一种方法

    本文中Linux的版本是centos 8.1 这种方法主要是通过vsftpd搭建ftp服务器,再利用CloudMounter挂载到访达中,从而实现便捷地远程管理服务器文件的目的. 首先搭建ftp服务器 ...

  2. Swift中实现用户输入防抖动的两种方法

    功能需求 用户通过App搜索服务器中的数据,当用户在搜索框中输入关键字时,要求App将关键字通过网络连接传递到服务器接口,并返回服务器的搜索结果. 这里有个问题:假设用户最终想要输入的关键字为pand ...

  3. Linux中修改用户UID和组GID的方法

    Linux中修改用户UID和组GID的方法 http://www.sijitao.net/2401.html 发表时间:2016-04-20 21:30 | 分类: Linux | 浏览:2,344 ...

  4. 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开发丨linux后台开发

    红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理) 视频讲解如下: 红黑树在linux内核中的应用场景(红黑树,进程管理CFS,内存管理)丨epoll丨c/c++linux服务器开 ...

  5. 解析Linux内核源码中数据同步问题丨C++后端开发丨Linux服务器开发丨Linux内核开发丨驱动开发丨嵌入式开发丨内核操作系统

    剖析Linux内核源码数据同步 1.pdflush机制原理 2.超级块同步/inode同步 3.拥塞及强制回写技术 视频讲解如下,点击观看: 解析Linux内核源码中数据同步问题丨C++后端开发丨Li ...

  6. 【Linux服务器开发系列】手写用户态协议栈,udpipeth数据包的封装,零拷贝的实现,柔性数组

    视频教你手写网络协议栈,保证大家能学会,耐心看 1. 用户态协议栈 2. udp/ip/eth数据包的封装 3. 零拷贝的实现 4. 零长数组(柔性数组) [Linux服务器开发系列]手写用户态协议栈 ...

  7. Linux服务器部署Kibana并通过外网访问

    Linux服务器部署Kibana并通过外网访问 修改kibana.yml 设置安全组,开放kibana对应的端口号 如果还是不能访问,连接远程,执行命令 防火墙开启指定端口 /sbin/iptable ...

  8. linux中禁用Root帐户的4种方法

    介绍 root账号 是 Linux 和其他类 Unix 操作系统上的超级帐户.此帐户可以访问系统上的所有命令和文件,并具有完全读取.写入和执行权限.它用于在系统上执行任何类型的任务:create/up ...

  9. linux服务器历险之linux性能监控

    linux服务器历险之linux性能监控 1.uptime uptime命令用于查看服务器运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况. uptime的输出包含一项内容是load av ...

  10. linux服务器关机日期,linux服务器last查看关机记录

    1.查看重启记录 last reboot命令 [root@test ~]# last reboot reboot system boot 2.6.-.el6.x Mon May : - : (+:) ...

最新文章

  1. 创建操作/删除多行数据的UITableView的细节
  2. python趣味编程:歌星大奖赛
  3. 动态显示时采色改为单帧采色
  4. SpringMVC流程图示
  5. sqlserver连接字符串_【自学C#】|| 笔记 39 SQL server 连接数据库
  6. [已解决] org.hibernate.HibernateException:没有活动事务,get无效
  7. 工程笔记阶段1-DAC正弦波实验
  8. 程序员如何财务自由【原创】
  9. 自学按键精灵写脚本,非常有用的一个函数
  10. LOL云顶弈记牌易语言源码
  11. 走楼梯c语言程序,C语言项目爬楼梯的两种实现方法参考
  12. fail can only be invoked by user TAP gesture.
  13. 数学笔记:集合及其运算
  14. matlab换挡程序,一种基于MATLAB换挡过程中快速锁定分析数据的方法与流程
  15. 安卓学习笔记---支付宝支付-交易订单处理失败,请稍后再试。(提示ALI59错误)
  16. IOS - iPhoneX 怎么进入 DFU 模式(刷机必备)?
  17. 考研复试面试--网络安全篇
  18. 使用信使服务批量发送信息
  19. 大话设计模式之爱你一万年:第十三章 行为型模式:策略模式:女友在手,说走就走:3.策略模式之三国刘备江东娶夫人
  20. 【矩阵分解八】矩阵分解的优缺点及其高级演化

热门文章

  1. 怎么用python学习网站开发_2018年最好用的5个python网站开发框架
  2. 坚果投影仪怎么才能访问电脑共享文件,详细的操作方法分享
  3. magicbook2018+MX150+win10+显卡驱动445.87+cuda_10.0.130+cudnn_v7.6.4.38+conda4.8.3+tensorflow1.14.0
  4. 计算机组成原理:RISC与CISC比较
  5. CM3启动汇编文件详解
  6. [HITSC]哈工大2020春软件构造Lab3实验报告
  7. JavaScript实现网页截屏方法总结
  8. java.lang.ClassNotFoundException:如何解决
  9. 《淘宝网开店 拍摄 修图 设计 装修 实战150招》导读
  10. 玩转 Windows 10 中的 Linux 子系统