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

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

nanshan 2024-10-24 11:32 16 浏览 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(读)

总结

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

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

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

相关推荐

ubuntu24.04下kubernetes1.30环境搭建

设置root用户密码#在Ubuntu系统中,默认情况下root用户是被禁用的(没有设置密码)#而是通过sudo命令让普通用户临时获取管理员权限,#如果需要启用或修改root密...

Canonical 在 Ubuntu 24.10 发布之前对 Snap 进行了更多改进

作为Ubuntu桌面临时工程总监,OliverSmith介绍了Ubuntu24.10的最新进展。在Ubuntu24.10功能冻结之前,GNOME47测试版已经登陆Ubuntu...

Ubuntu Touch OTA-5手机系统发布:细化电源配置等

IT之家8月2日消息,UBports基金会于7月30日发布UbuntuTouch20.04OTA-5版本更新,距离上次OTA-4更新发布相隔6个月时间。Ubuntu...

Ubuntu更契合英特尔酷睿Ultra,综合性能比Win11高15%

IT之家12月23日消息,英特尔本月推出酷睿UltraMeteorLake处理器,那么Win11和Ubuntu发行版两者时间,谁能更好地发挥其性能呢?国外科技媒体phoron...

针对英特尔酷睿CPU优化,Canonical发布Ubuntu实时内核

IT之家7月27日消息,Canonical今天宣布针对支持时序协调运算(TCC)和时间敏感网络(IEEETSN)的英特尔酷睿处理器,推出优化版实时Ubuntu内核。Canonical...

在Ubuntu/Debian上设置永久DNS域名服务器

在Linux上设置自定义DNS服务器可以提高性能和安全性,甚至可以通过DNS阻止一些使用地理屏蔽的网站。有几种方法可以做到这一点,包括在许多Linux发行版中包括的NetworkManagerGUI...

宣布延期:Ubuntu 24.04 LTS第一个版本发布推迟两周

Ubuntu开发团队原计划于8月19日星期四发布Ubuntu24.04.1LTS。然而,由于发现几个重大升级错误,发布被推迟。Ubuntu24.04.1LTS的新发布日期现定为...

Ubuntu系统已经十岁了 10月新推14.10版

|责编:李鑫比较非主流的Ubuntu系统刚刚推出了14.10版,同时大家也可能不知道其实它已经十岁了!它的第一次公布时间为2004年的10月呢。在这次十周年更新中,Ubuntu为用...

wsl2在休眠后的时间偏差问题的修复

笔记本电脑在日常使用中,常常会有进入休眠状态的情况。休眠对于wsl2而言,却造成了时间偏差的问题,休眠期间wsl2的时间停止了。这个问题的根治,需要等微软。本文提供的是一种简单的修复办法。ntp是网络...

基于Ubuntu22.04源码安装配置RabbitVCS过程记录

基于Ubuntu22.04源码安装配置RabbitVCS过程记录安装开始时间开始时间:2025年7月18日17:09(北京时间)系统:Ubuntu22.04用户:itgather时区:A...

GNOME 46桌面环境发布,Ubuntu 24.04 LTS和Fedora 40率先预装

IT之家3月21日消息,GNOME团队今天发布公告,正式推出代号为“Kathmandu”的GNOME46桌面环境,并已经开放下载。Fedora40发行版将于4月发布,率先预装...

如果大家同意的话 Ubuntu可能很快就会有一个新的垃圾桶图标

Ubuntu贡献者目前正在构思一个新的垃圾桶图标,该图标最早可能在10月份Ubuntu25.10发布时出现在Dock栏中。关于Ubuntu垃圾桶图标外观的讨论在2019年持续进...

Ubuntu 25.10 通过更安全地获取时间来提供进一步的安全性提升

Canonical宣布将从Ubuntu25.10开始使用一款名为chrony的软件,以实现更安全的时间管理。最终用户无需过于担心这一变化,但它将增强系统安全性,尤其是在加密操作和证书验证方...

Linux 修改系统时间的两种方式

一:更新系统时间的方式1、手动修改通过相关工具来手动修改系统的时间。2、自动同步使用NTP自动同步系统时间。二:手动修改系统时间1、date工具作用:显示和设置系统时间选项:-d<字符串&g...

Ubuntu计划下版本为RISC-V设置RVA23基线,大量硬件无法升级

IT之家7月14日消息,主要Linux发行版之一的Ubuntu计划在其接下来的一个大版本25.10中将对RISC-V处理器的准入门槛设置从此前的RVA20配置文件更新至最新...

取消回复欢迎 发表评论: