现在需要限定某个用户对特定目录/文件的访问权限,或者把某个用户的访问范围限制在某个目录/文件中。现实情况下,还是能遇到这样的需求的,比如说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中禁用Root帐户的4种方法

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

  2. [转]Android限制只能在主线程中进行UI访问的实现原理

    目录 Android限制只能在主线程中进行UI访问 Thread的实现 Android Thread 的构造方法 Android Thread 的start()方法 如何在我们自己的代码中去检测当前T ...

  3. linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...

  4. qt5设置linux系统时间,Qt中使用QLabel显示时间的两种方法

    Qt中使用QLabel显示时间的两种方法思路一致,只是实现方法不一样而已. main.cpp #include "displaytime.h" #include int main( ...

  5. Nginx只允许域名访问网站,禁止使用IP 访问80,443端口

    转载来源 :Nginx只允许域名访问网站,禁止使用IP 访问80,443端口 :http://www.safebase.cn/article-260225-1.html 摘要: 一.背景 为了避免别人 ...

  6. Linux 下获取Root权限的几种方法

    方法分为永久性获取root权限以及非永久性获取Root权限 非永久性获取Root权限: 非永久性获取Root权限可以在我们要键入的命令之前加上sudo前缀. 如我们要键入的命令是: rm ,以Root ...

  7. 在电商运营中与客户建立信任的4种方法

    在电商运营中与客户建立信任的4种方法 在众多人的财务和消费行为数据被泄露或非法收集之后,网络购物所带来的风险已成为消费者最为关注的问题之一. 建立客户的信任绝对不是一件容易的事情,尤其是对于电商企业来 ...

  8. 在HTML中使用CSS美化网页的三种方法

    在HTML中使用CSS美化网页的三种方法 CSS是Cascading Style Sheets(级联样式表)的缩写,CSS是一种样式表语言,用于为HTML文档定义布局.例如,CSS涉及字体.颜色.边距 ...

  9. java中批次号_在一个批次中插入多笔记录的几种方法

    插入数据库方法很多,下面Insus.NET列举几种方法,看看你常用的是哪一种: 创建一张表: CREATE TABLE [dbo].[Network_Info] ( [ID] INT NOT NULL ...

  10. C#中窗体间传递数据的几种方法

    C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...

最新文章

  1. ImageMagick之PDF转换成图片(image)
  2. leetcode 344. 反转字符串 541. 反转字符串 II 双指针解
  3. PHP 如何判断当前用户已在别处登录
  4. python都可以开发什么_Python的优势到底是什么?Python都能开发什么?
  5. uniapp路由传多个参数_2020年家用路由器购买推荐(20200921更新)
  6. spinlock导读
  7. asp.net 文件路径
  8. 从腾讯入职到离职,我仅用了三周:做大数据的同事看不起做报表的
  9. 防火墙在setup进入不了
  10. IOS 项目中遇到的问题
  11. Storm实验 -- 单词计数4
  12. day69-oracle 22-DBCA
  13. 安装Python readline模块
  14. Cannot delete or update a parent row: a foreign key constraint fails
  15. c语言股票最大收益_应用ROC函数计算多支股票收益率
  16. 华为设备VRRP配置命令
  17. python日历打印算法
  18. 最新架构amd服务器cpu,2015年或新变化?AMD将专注高性能架构
  19. android删除短信权限,android删除短信(绕过权限)
  20. windows压缩卷的操作

热门文章

  1. jdbc mysql url写法_详解数据库连接的URL的写法及总结
  2. 二层交换机与三层交换机区别
  3. 打造最美HTML5 3D机房(第三季新增资产管理、动环监控)
  4. 解决 pq: SSL is not enabled on the server
  5. status计算机语言,status 在c语言中的用法?请高手指教、、、、谢谢
  6. 贝尔宾团队角色理论及实践
  7. 2022-2028年中国冷冻草莓加工行业市场竞争态势及发展趋向分析报告
  8. 阿里爸爸YYDS!阿里内网首发的Java成长开发手册,不惜重金开源
  9. android谷歌地图获取地址信息,java - 如何通过触摸Android谷歌地图上的屏幕获取地址信息 - SO中文参考 - www.soinside.com...
  10. Php实现Facebook app端web网页登陆功能