百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

初学者如何玩转 Linux 中文件和目录的权限?

nanshan 2024-10-24 11:32 14 浏览 0 评论


与其他操作系统一样,多个用户可以为每个用户创建用户帐户并共享运行 Linux 操作系统的同一台机器。 但是,只要以共享方式使用任何东西,就会出现隐私问题。 第一个用户可能不希望下一个用户查看/编辑/删除他的文件。

Linux Terminal 在处理文件权限方面拥有一些超能力。 我们可以从 Linux 终端授予/撤销每个文件和目录的权限。

什么是文件权限?

文件权限控制用户可以执行的操作。 读取、写入和执行是每个文件可能的 3 个操作。 用户分为 3 大类。 他们是普通用户、组和其他人。 Linux 允许用户在非常细粒度的级别上设置权限。 您可以在文件系统的每个可能位置保护您的文件或目录。

好像很有趣吧?

这里面涉及到三个重要的命令

  1. chmod(更改模式)*
  2. chown(更改所有权)
  3. chgrp(更改组)

其中 chmod 是最重要的命令之一。 在这篇文章中我们只讨论 chmod 命令,其他命令将在以后的文章中继续讨论。

让我们深入研究 chmod 命令。

文件

在我们继续之前,我想确保您清楚文件的读取、写入和执行操作。 前 2 个(读和写)是不言自明的。 它确定用户是否可以读/写文件。

但是,什么是可执行文件?

如果文件中包含一系列指令,则称该文件是可执行的。 一个更好的例子是脚本文件(Shell Scripts)。

什么是 chmod 命令?

chmod 是一个命令,用于将文件或目录的权限更改为对应权限类型。

这是 chmod 命令的语法。

chmod

您需要通过替换上述命令中的操作来授予或撤销权限。

操作

上述语法中的操作分为两类。 让我们在下面探索它们。

用户级别

控制用户级别的权限。

u - 授予用户权限

g - 授予一组权限(一组用户)

o - 授予其他人(不属于上述任何一种情况的人)的许可。

注意:

如果此选项留空,权限将应用于登录用户。 大多数时候它会留空。

文件级别

控制文件级别的权限。

r - 授予读取权限

w - 授予写入权限

x - 授予执行权限

这些操作需要在前面加上“+”或“-”运算符。

“+”表示添加新权限,“-”表示删除现有权限。

例如:

chmod +r sample.txt

上面的命令为 sample.txt 文件添加了读取权限。

是不是很简单? 让我们继续。

如何使文件可执行?

作为一名开发人员,Linux 是我们团队的默认操作系统。 我们最近聘请了一名实习生,他对 Linux 的了解为零,但对学习和探索充满好奇。 我们最初是通过让他写一些 shell 脚本来训练他的。 因为大多数服务器都运行 Linux 操作系统。 他在互联网上找到了整个代码并复制了它(我们故意给了这样的任务)。

他保存了文件,但无法运行脚本。 他不知道真正的问题。 他开始删除几个代码块并尝试一次又一次地运行。

他反复收到“找不到命令(Command not found)”的错误。

终于,他到达了第一行。 他用打印语句(“echo”命令)替换了该行并运行该文件,希望能看到输出。 但是,他仍然没有超越那个错误。

带着挫败感,他寻求帮助。

我们现在来看问题。

基本上,我们可以通过以下命令执行 .sh 文件。

./install.sh

他运行了相同的命令,但没有用。 因为文件不是可执行格式。 所以我运行了魔法命令来使文件可执行。

chmod +x install.sh


现在它是可执行的。 他盯着我看,好像我是个黑客。 理想情况下,这是一个非常简单和基本的概念。

如何从文件中删除权限?

每次我都会被我的同事Divad愚弄,我们在内部做很多爱好项目,我们写了一些shell脚本来快速部署。 每当他写一些脚本时,他总是从该文件中删除所有权限并将更改推送到远程仓库。 因此,每次我必须使用上述命令为我必须执行的操作授予权限时。

让我们快速看一下他用来删除文件权限的命令。

这里我们有一个名为 install.sh 的文件,它具有所有权限(读、写、执行)。 让我们删除这个脚本文件的执行权限。

chmod -x install.sh

您将无法执行此文件并尝试这样做会给您一个错误,如上一个屏幕截图所示。

让我们从文件中删除读取权限。

chmod -r install.sh

读取权限已被删除。 让我们尝试使用 nano(Linux 终端的文件编辑器)读取该文件。 您将能够在底部看到“权限被拒绝”错误。



这同样适用于删除文件的写入权限。

chmod -w install.sh


您可以使用以下命令一起实现上述所有项目。

chmod -rwx install.sh

这是处理文件权限的核心部分,记住我们只是触及了它的皮毛。 尝试理解它并尝试一些示例文件。 因为,谁知道将来,您可能会得到像 Divad 这样的同事。

如何添加/删除目录(文件夹)的权限?

我希望你们中的大多数人在切换到 Linux 后可能会遇到一些目录,例如 /etc、/var、/opt 等。您可能不知道为什么存在这些目录。 但是,您可能会注意到所有这些文件夹都有一个共同点。 也就是说,如果没有 root 权限,您将无法在这些目录中创建文件或文件夹。

安装 Linux 操作系统时,系统会预先配置此设置。

但是,我可以将我的文件夹限制在类似于上述目录的 /home 目录中吗? 答案是肯定的。 您可以通过使用 chmod 命令更改目录的权限来实现此目的。

让我们用一个例子来理解这一点。

我创建了一个名为 locked_directory 的目录,并从该目录中删除了读取权限。 如果我尝试使用 ls 命令读取文件夹的内容,我最终会看到“权限被拒绝”错误消息。

chmod -r locked_directory/


但是,你知道吗,我可以在 locked_directory 中创建另一个名为 dir1 的目录,并读取 dir1 中的文件和文件夹。


那么我们刚才运行的命令的目的是什么? 删除父目录的读取权限应该也删除子目录的读取权限吗?

的确。 这正是我之前告诉你的。 Linux 管理文件权限的粒度级别。

如果要将权限应用于父目录及其所有子目录,则需要使用 chmod 命令传递一个独占标志。

即-R。 它基本上意味着将相同的权限递归地应用于所有子目录(子目录)。 因此,此权限将适用于文件/目录的最终子项。

这是语法,

sudo chmod -R

记住运行命令进行递归操作需要 root 权限。 所以需要在这条命令的开头加上sudo。

sudo chmod -R -r locked_directory


从上面的截图可以看出,递归去除父目录的读权限后,尝试查看子目录文件失败。

处理文件权限的替代方法

或者,您可以使用八进制表示来控制文件权限。

希望你感到困惑。 进一步阅读以清楚地理解。

让我们考虑一个场景。

您想为用户授予读、写和执行权限,为组和其他人授予对install.sh 文件的只读权限?

让我们看看如何使用上述两种方法来实现这一点。

使用符号模式

chmod u+rwx,go+r install.sh

让我们拆解每个部分并尝试理解它们,

u+rwx - 代表为用户增加读、写、执行权限

go+r - 代表为群组和其他人添加读取权限

使用八进制模式

chmod 744 install.sh

让我们分解每个数字并尝试理解它们,

第一个数字 (7) 代表用户的权限 — 7 = ( 4 ( read) +2 ( write) +1( execute) )

第二个数字 (4) 代表组的权限 — 4(读取)

第三个数字(4)代表对其他人的许可——4(读)

总结

在本文中,您了解了如何处理基本的文件和文件夹权限。

我希望你们喜欢这个文章。 我对所有人有一个要求,请自己尝试一些复杂的场景,例如具有权限的排列和组合。 这绝对会对您的整个职业生涯有所帮助。

如果您喜欢并学到了新东西,请拍手。

相关推荐

MongoDB 从入门到实战:.NET 平台完整指南

一、什么是MongoDBMongoDB是一种功能强大且灵活的NoSQL数据库,适用于处理大规模的半结构化数据和高并发场景。它不依赖于固定的表结构和关系模型,而是以文档的形式存储数据,每个文档可...

NET Framework安装失败的原因及解决方法

大家好我是艾西,一个做服务器租用的游戏爱好者兼网络架构系统环境问题网络工具人。在我们平时使用PC安装某些程序会出现.NETFramework缺失的提示,那么也会有很多的小伙伴搞不懂什么原因导致的,这...

这可是全网eNSP安装最完整,最详细的图解,没有之一(常见问题)

eNSP安装大纲eNSP安装详细图解篇幅较长,会分三篇更完。急需安装的朋友可以在文末获取图解文档和所需软件工具。ENSP安装常见问题和解决方案Vbox安装错误eNSP在安装的过程当中,经常会出现一...

如何在windows 2012安装.NET Framework3.5

Windowsserver2012R2,自带的是.NETFramework4.5,如果想装SQLserver2008或者SQLserver2012需要安装.ENTFramework...

3款国内可用的「Chrome」扩展下载网站

身为程序员,有几个不使用Chrome浏览器提升下编码效率呢?Chrome拥有众多丰富强大的扩展程序,今天给大家分享三个国内可用的Chrome扩展下载网站,收藏一下吧,不然下次就找不到我咯!C...

下载 Windows 10 应用商店程序离线包方法

有厂商为了图方便,会把Windows10应用商店里面的UMP应用改成EXE程序版本。例如之前「网易云音乐」UMP版本简洁清爽,获得不少用户推荐,后来官方懒得更新了,直接把UMP版本...

极速安装!NET Framework 3.5零距离指南!

.NETFramework3.5是一款由微软开发的应用程序框架,它为许多Windows应用程序提供了基础支持。它的新版本带来了许多令人兴奋的功能和改进,比如增强的XML和JSON处理能力以及强大的...

Microsoft.NET离线运行库合集发布 2021

软件介绍.NET是微软具有战略意义的框架,也是装机必不可少的框架,想要一个一个安装略显繁琐,再加上很多电脑小白不知道怎么下载,不小心就下载到某某高速加载器,这个运行库极大解决了这个问题,采用微软官方....

缺少.net framework 3.5怎么办?(缺少.net4.5.1或以上环境)

很多电脑用户在玩某些程序游戏时都会遇到一个头痛的问题,弹出缺少“NETFramework3.5”的提示。微软从Windows8开始默认屏蔽了“.NET3.5”,如果用户有需要就必须选择在线安装...

Windows11无法正常安装.net 3.5组件的解决方法

最近因公司部分电脑升级至Windows11之后,重新安装某些需要加载.net3.5组件的应用软件时,都提示无法完成加载或安装.net3.5而导致无法完成安装。使用离线安装包亦一样无法完成安装。一...

离线安装.Net Framework 3.5(离线安装.net framework 4.0)

前言.Net3.5已经越来越少用到了,但是偶尔还是会遇到一些老软件需要。而Win10、Win11的系统,直接在控制面板的里添加,经常会添加失败!解决方法首先需要一个系统的ISO镜像来提取sxs文件夹:...

Jenkins 11个使用技巧,90%以上的人没用过

一、Performance插件兼容性问题自由风格项目中,有使用Performance插件收集构建产物,但是截至到目前最新版本(Jenkinsv2.298,Performance:v3.19),此...

6款Linux常用远程连接工具,你最中意哪一款?

点击上方头像关注我,每周上午09:00准时推送,每月不定期赠送技术书籍。本文2106字,阅读约需6分钟Hi,大家好。远程连接的实现方法有很多,概括地说有两种,一种是用系统自带的远程连接,另外一种是用...

Linux常用远程连接工具介绍,总有一款适合你

作为运维或者网工最常用就是ssh远程和远程桌面工具,本文就介绍几个常用的远程连接工具,你在用哪一款呢SecureCRT介绍:我觉得这个是最好的SSH工具,没有之一。SecureCRT支持SSH,同时支...

终极软路由网络设置,ESXi虚拟机安装iKuai+openWrt双路由系统

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:BigBubbleGum本文是软路由系列的第五篇,也是折腾时间最长的一篇,在ESXi下分别独立安装和使用iKuai和openWrt...

取消回复欢迎 发表评论: