热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解读Linux系统文件权限的设置方法

文章标题:解读Linux系统文件权限的设置方法。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  引:Windows系统其实和Linux系统有相似的地方,Windows系统文件、目录的属性有只读、隐藏,而Linux也一样。
  
  Linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。
  
  所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户或组联系起来。访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root用户在内的所有用户对文件、资源或者套接字的访问。下面就来教大家简单的设置方法。
  
  步骤1 检查系统核心
  
  首先检查你的Linux系统的核心是否有支持ACL的功能。因为Linux系统并不是每一个版本的核心都有支持ACL的功能,而最简单的方法就是检查系统目前的核心能否支持:
  
  [root@mail /]# cat /boot/config-kernel-version | grep -i ext3
  
  CONFIG_EXT3_FS=m
  
  CONFIG_EXT3_IDEX=y
  
  CONFIG_EXT3_FS_XATTR_SHARING=y
  
  CONFIG_EXT3_FS_XATTR_USER=y
  
  CONFIG_EXT3_FS_XATTR_TRUSTED=y
  
  CONFIG_EXT3_FS_ACL=y
  
  此时如果能看到上面的几项则表示已经编译到核心中,ext3文件系统已支持ACL功能,这些功能在编译核心选项中都可以找到。如果编译时找不到,可以到ACL的官方网站来安装Kernel(acl.bestbits.at/)。
  
  步骤2 挂载分区
  
  你可以用下列的方式挂载分区并启用ACL:
  
  #mount -t ext3 -o acl /dev/sda1 /fs1
  
  你也可以直接写在/etc/fstab文件中,这样就可以在开机后支持ACL功能:
  
  #vi /etc/fstab
  
  步骤3 设置ACL权限
  
  ACL常常针对个别用户来进行设置,下面是多个不同的例子:
  
  例如需要创建test1、test2、test3三个用户,可以先用root身份登录系统,然后执行以下命令分别创建三个用户名和密码:
  
  [root@mail root]#adduser test1
  
  [root@mail root]#adduser test2
  
  [root@mail root]#adduser test3
  
  [root@mail root]#passwd test1
  
  [root@mail root]#passwd test2
  
  [root@mail root]#passwd test3
  
  然后mount一个ext3文件到目录/fs1:
  
  [root@mail root]#mount -t ext3 -o acl /dev/sda1 /fs1
  
  再将test1 建立的文件设置读写的权限给test2 :
  
  [root@mail root]#chmod -R 777 /fs1
  
  让所有的用户都能增加文件到目录的权限:
  
  先用test1登录系统,执行命令:
  
  [test1@mail test1]# cd /fs1
  
  [test1@mail fs1]# echo "Create by test1" > test1.txt
  
  [test1@mail fs1]# chmod go-r test1.txt
  
  [test1@mail fs1]# ll test1.txt
  
  -rw------- 1 test1 test1 17 Jul 14 22:11 test1.txt
  
  而如下操作则可以让除了test1有读写的权限外其他人没有读写test1.txt的权限(root除外),先用test2 登录系统后执行以下命令:
  
  [test2@mail test2]# cd /fs1
  
  [test2@mail fs1]# cat test1.txt
  
  cat : test1.txt Permission denied
  
  接着用test1登录系统,执行如下命令:
  
  [test1@mail fs1]# setfacl -m u:test2:rw test1.txt
  
  这样就修改权限允许test2 有这个文件的读写权限。再看一下它的文件属性的变化:
  
  [test1@mail fs1]# ll
  
  -rw-rw-r--+ 1 test1 test1 10 Feb 16 13:52 test1.txt
  
  会看到后面多了一个“+”,表示这个文件使用ACL的属性设置,再用命令getfacl来看ACL的文件属性设置:
  
  [test1@mail fs1]# getfacl test1.txt
  
  # file: test1.txt
  
  # owner: test1
  
  # group: test1
  
  user::rw-
  
  user:test2:rw-
  
  group::rw-
  
  mask::rw-
  
  other::r--
  
  可以看到 test2 有权限读写这个文件。
  
  我们再用test2登录系统执行以下命令,看看发生了什么?
  
  [test2@mail test2]# cd /fs1
  
  [test2@mail fs1]# cat test1.txt
  
  Create by test1
  
  原来test2可以读取test1.txt文件了。
  
  [test2@mail fs1]# echo "Modify by test2" >> test1.txt
  
  [test2@mail fs1]# cat test1.txt
  
  Create by test1
  
  Modify by test2
  
  现在test2也可以修改test1.txt文件了。
  
  接着用test3 登录系统:
  
  [test3@mail test3]# cd /fs1
  
  [test3@mail fs1]# cat test1.txt
  
  cat : test1.txt Permission denied
  
  嘿嘿,除了test1、test2外没有其他用户有读写test1.txt的权限(root 除外)。
  
  看着虽然有点晕,其实命令就是这么一两条,主要是把各种情况给大家讲清楚,这样,大家在使用Linux中才会发现,比起脆弱的Windows的权限防护,Linux实在是做得相当不错!
推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 树状笔记软件for linux,Ubuntu 14.04安装开源树状笔记管理软件 WikidPad 2.2
    WikidPad是一款开源免费的wiki风格的树状笔记管理软件,类似于Notepad。基于Python,支持Windows、Mac、Linux等平台。W ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • angular2/4 使用[innerHTML]时样式不生效
    首先默认情况下,innerHTML会被认为是不安全的,因此屏蔽掉了样式。不生效场景我们通过innerHTML引入一段html格式的文本, ... [详细]
author-avatar
_cristal_500
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有