linux限制用户只能访问网站,Linux中限制用户访问权限的3种方法
现在需要限定某个用户对特定目录/文件的访问权限,或者把某个用户的访问范围限制在某个目录/文件中。现实情况下,还是能遇到这样的需求的,比如说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种方法相关推荐
- linux中禁用Root帐户的4种方法
介绍 root账号 是 Linux 和其他类 Unix 操作系统上的超级帐户.此帐户可以访问系统上的所有命令和文件,并具有完全读取.写入和执行权限.它用于在系统上执行任何类型的任务:create/up ...
- [转]Android限制只能在主线程中进行UI访问的实现原理
目录 Android限制只能在主线程中进行UI访问 Thread的实现 Android Thread 的构造方法 Android Thread 的start()方法 如何在我们自己的代码中去检测当前T ...
- linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法
我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...
- qt5设置linux系统时间,Qt中使用QLabel显示时间的两种方法
Qt中使用QLabel显示时间的两种方法思路一致,只是实现方法不一样而已. main.cpp #include "displaytime.h" #include int main( ...
- Nginx只允许域名访问网站,禁止使用IP 访问80,443端口
转载来源 :Nginx只允许域名访问网站,禁止使用IP 访问80,443端口 :http://www.safebase.cn/article-260225-1.html 摘要: 一.背景 为了避免别人 ...
- Linux 下获取Root权限的几种方法
方法分为永久性获取root权限以及非永久性获取Root权限 非永久性获取Root权限: 非永久性获取Root权限可以在我们要键入的命令之前加上sudo前缀. 如我们要键入的命令是: rm ,以Root ...
- 在电商运营中与客户建立信任的4种方法
在电商运营中与客户建立信任的4种方法 在众多人的财务和消费行为数据被泄露或非法收集之后,网络购物所带来的风险已成为消费者最为关注的问题之一. 建立客户的信任绝对不是一件容易的事情,尤其是对于电商企业来 ...
- 在HTML中使用CSS美化网页的三种方法
在HTML中使用CSS美化网页的三种方法 CSS是Cascading Style Sheets(级联样式表)的缩写,CSS是一种样式表语言,用于为HTML文档定义布局.例如,CSS涉及字体.颜色.边距 ...
- java中批次号_在一个批次中插入多笔记录的几种方法
插入数据库方法很多,下面Insus.NET列举几种方法,看看你常用的是哪一种: 创建一张表: CREATE TABLE [dbo].[Network_Info] ( [ID] INT NOT NULL ...
- C#中窗体间传递数据的几种方法
C#中窗体间传递数据的几种方法 在编写C#windows应用程序的时候我们经常会遇到这种问题,怎么样在两个窗体间传递数据呢?以下是我整理的网上的各种方法,在遇到一个实际问题:在form1中打开一个fo ...
最新文章
- ImageMagick之PDF转换成图片(image)
- leetcode 344. 反转字符串 541. 反转字符串 II 双指针解
- PHP 如何判断当前用户已在别处登录
- python都可以开发什么_Python的优势到底是什么?Python都能开发什么?
- uniapp路由传多个参数_2020年家用路由器购买推荐(20200921更新)
- spinlock导读
- asp.net 文件路径
- 从腾讯入职到离职,我仅用了三周:做大数据的同事看不起做报表的
- 防火墙在setup进入不了
- IOS 项目中遇到的问题
- Storm实验 -- 单词计数4
- day69-oracle 22-DBCA
- 安装Python readline模块
- Cannot delete or update a parent row: a foreign key constraint fails
- c语言股票最大收益_应用ROC函数计算多支股票收益率
- 华为设备VRRP配置命令
- python日历打印算法
- 最新架构amd服务器cpu,2015年或新变化?AMD将专注高性能架构
- android删除短信权限,android删除短信(绕过权限)
- windows压缩卷的操作
热门文章
- jdbc mysql url写法_详解数据库连接的URL的写法及总结
- 二层交换机与三层交换机区别
- 打造最美HTML5 3D机房(第三季新增资产管理、动环监控)
- 解决 pq: SSL is not enabled on the server
- status计算机语言,status 在c语言中的用法?请高手指教、、、、谢谢
- 贝尔宾团队角色理论及实践
- 2022-2028年中国冷冻草莓加工行业市场竞争态势及发展趋向分析报告
- 阿里爸爸YYDS!阿里内网首发的Java成长开发手册,不惜重金开源
- android谷歌地图获取地址信息,java - 如何通过触摸Android谷歌地图上的屏幕获取地址信息 - SO中文参考 - www.soinside.com...
- Php实现Facebook app端web网页登陆功能