通过9个实例快速掌握 linux chmod 命令

送外卖
• 阅读 1035

linux 系统中的 chmod 命令用于更改或分配文件和目录的权限。在 linux / unix 系统中,对文件和目录的可访问性由文件所有权和权限确定。

chmod 命令是 change mode 的缩写,用于管理文件和目录的权限,并确定谁可以访问它们。现在让我们深入研究文件和目录权限的本质以及如何修改它们。

linux 权限

为了更好地理解 chmod 命令是如何工作的,我们要好好研究 Linux 文件权限模型。

在 linux 中,我们有三种类型的文件权限: 读 (r),写 (w) ,执行 (x) 。这些权限决定了哪些用户可以读写或执行文件。您可以使用文本或八进制 (数字) 表示法分配这些权限,我们将在本教程后面讨论这些表示法。

文件和目录属主类型包括以下三种:

  • u – owner of the file (用户)
  • g – group (组)
  • o – others (其它)

使用 ls -l 命令列出文件权限,-l 标志列出文件权限。

$ ls -l

通过9个实例快速掌握 linux chmod 命令

从最左侧开始,第一个字符指示文件类型。连字符 (-) 表示文件是常规文件。字符 d 表示它是目录。字符 L 表示这是一个符号链接。

其余 9 个字符被分成 3 个三联,每个三联包含三个符号 r (读),w (写),x (执行)。如前所述,第一部分指向所有者权限,第二部分指示组权限,最后一部分指定其他用户对文件或目录的权限。

从输出中,我们可以看到我们有两个文件(hello.txt 和 reports.zip)和一个目录。

让我们检查第一个文件

-rw-rw-r-- 1 linuxtechi linuxtechi   35 Aug 17 15:42 hello.txt

对于第一个文件,-rw-rw-r-- 权限意味着该文件的所有者具有读写权限,组也具有读写权限,而其他用户只有读权限。同样的权限也适用于 reports.zip 压缩文件。

让我们看看该目录的权限

drwxrwxr-x 2 linuxtechi linuxtechi 4096 Aug 17 15:43 sales

我们可以看到,目录和组的所有者拥有所有的权限(读、写和执行),而其他用户只有读和执行权限。

三个连字符表示没有向文件的所有者、组或其他用户授予权限。

使用 chmod 命令设置文件和目录权限

在了解了文件权限和如何查看它们之后,我们再了解如何修改这些权限。

linux 系统中的 chmod 命令用于使用文本 (符号) 或数字 (八进制) 表示法更改文件和目录权限。它采用以下语法:

$ chmod [OPTIONS] MODE filename

只有 root 用户或具有 sudo 权限的普通用户才能更改文件或目录权限。您可以在命令中传递多个由空格分隔的文件或目录。

现在让我们深入研究并查看 chmod 命令的不同示例。

(1) 使用数字表示法分配权限

使用数字样式设置权限时,请使用下面显示的语法:

$ sudo chmod [OPTIONS] numeric_value filename

数值可以取 3 或 4 个数字。在大多数情况下,使用 3 个数字。读、写和执行权限采用以下值

  • read permission => 4
  • write permission => 2
  • execute permission => 1

假设所有者具有读、写和执行权限,组具有读和执行权限,其他用户仅具有读权限,这可以分为以下几部分

  • u : rwx = 7
  • g : r-x = 5
  • o : r-- = 4

因此,我们得到 754 作为文件权限的数值,执行如下命令

$ chmod 744 devops.txt

所有者拥有所有权限,组用户读取和执行权限,其他用户没有任何权限

$ chmod 750 coders.txt

所有者拥有所有权限,组用户读取和执行权限,其他用户读取和执行权限

$ chmod 755 sysadmin.txt

(2) 递归地为目录分配权限

在为目录分配权限时,使用 -R 标志递归地为其文件和子文件夹分配权限。例如

$ chmod 755 -R directory_name

$ chmod 755 -R /home/linuxtechi/data

(3) 使用文本表示法分配权限

在这种方法中,chmod 命令接受在语法中使用表示所有者 (u),组 (g),其他用户 (o) 的标志或符号。

该方法不像前面的方法那样简单,应该注意避免分配错误的权限。

下面是它的语法

$ chmod [OPTIONS] [ u g o a ] [ – + = ] [ r, w, x ] file

第一组选项 [u g o a] 指定权限将发生变化的用户的类别

  • u : user
  • g : group
  • o : other
  • a : all ( 包含以上全部 )

如果省略这个选项,则默认选项是 a 选项。

第二组选项 [- + =] 决定是否从用户类别中添加或删除权限。

  • – : 删除指定用户的权限
    • : 添加权限到指定用户
  • = : 为用户分配指定的权限,并删除先前的权限

让我们看几个例子

(4) 给文件分配读权限

$ chmod o=r filename

上面的命令只将以符号 o 表示的其他用户的读权限分配给文件,并删除先前分配给其他段的权限。

样列文件 file1.txt 的原有权限如下

通过9个实例快速掌握 linux chmod 命令

分配其它 (o) 段只读权限,运行命令

$ sudo chmod o=r file1.txt

通过9个实例快速掌握 linux chmod 命令

从输出中,我们可以看到 others 段被分配了读权限,但同时失去了执行权限。这意味着 = 操作符分配新的权限,同时擦除以前的权限。

(5) 为文件和组所有者分配执行权限

$ sudo chmod ug+x filename

上面的命令将执行权限添加到文件的所有者和组。

$ sudo chmod ug+x file1.txt

通过9个实例快速掌握 linux chmod 命令

(6) 为属主分配不同的权限

$ sudo chmod u=rwx,g=rw,o=r filename

上面的命令将所有权限分配给文件的所有者,将读写权限分配给组,只将读权限分配给其他用户。

通过9个实例快速掌握 linux chmod 命令

注意: 如果=操作符后没有指定权限,则删除该用户段的所有权限。

(7) 删除其他用户的所有权限

$ sudo chmod o= filename

上面的命令从其它用户段中删除指定文件的所有权限。

该命令的效果与下面的命令相同

$ sudo chmod o-rwx filename

通过9个实例快速掌握 linux chmod 命令

(8) 使用引用文件分配权限

引用文件是一种非常方便的分配文件权限的方法。

在此方法中,使用 --reference=ref_file 选项将一个文件的权限设置为与另一个引用文件的权限相同,使用下面的语法

$ sudo chmod –reference=ref_file filename

例如将 file2.txt 文件的权限设置为与 file1.txt 文件相同

$ sudo chmod --reference=file1.txt file2.txt

通过9个实例快速掌握 linux chmod 命令

(9) 仅向目录分配执行权限

假设我们有一个目录,其中有文件和子目录,我们希望只对目录分配执行权限,可以通过使用以下命令来实现

$ chmod a+X *

我们使用大写 X 表示执行权限,上面的命令将在当前工作目录的所有目录上设置执行权限。

我的开源项目

点赞
收藏
评论区
推荐文章
_dolphin _dolphin
4年前
Linux指令学习
一、Linux指令目录1.进入root权限rooti2.删除一个文件夹rmdirdirnamedirname:文件夹的目录名字3.删除一个文件rmifilenamefilename:文件名字4.给文件权限sudochmodux filenamefilename:文件名字5.出现“权限不够”和“坏的解释器\ 没有
Stella981 Stella981
3年前
Linux 普通用户sudo执行命令不需要密码
假设我这里的用户名是hellostep0:切换到root用户:surootstep1:设置文件权限chmod0777/etc/sudoersstep2:修改文件vim
Stella981 Stella981
3年前
Python之OS模块函数
Python中的os模块提供了操作系统相关功能的函数,可以更加方便的在python脚本中对linux的文件目录的处理和shell的应用。os.system("bash")运行shell命令,直接显示应用ls命令查看当前目录下的文件importosprint(os.system('ls'))
inode节点扩容
本文分享自天翼云开发者社区《》,作者:2m1.inode概述在Linux系统中,每个文件和目录都有一个对应的inode节点,用于存储文件或目录的元数据信息,如:文件大小、创建时间、修改时间、权限等。当文件或目录被创建时,系统会为其分配一个inode节点。然
Wesley13 Wesley13
3年前
HDFS目录(文件 )权限管理
用户身份在1.0.4这个版本的Hadoop中,客户端用户身份是通过宿主操作系统给出。对类Unix系统来说,用户名等于\whoami\;组列表等于\bashcgroups\。将来会增加其他的方式来确定用户身份(比如Kerberos、LDAP等)。期待用上文中提到的第一种方式来防止一个用户
Stella981 Stella981
3年前
Linux find 命令详解
Linux上的 find 命令是 findutil 软件包的一部分,一般已经默认集成在了几乎所有的发行版中。find命令有非常大的灵活性,可以向其指定丰富的搜索条件(如文件权限、属主、属组、文件类型、日期和大小等)来定位系统中的文件和目录。此外,find还支持对搜索到的结果进行多种类型的命令操作。一、简介
Stella981 Stella981
3年前
Linux系统的基本操作
_20200727_Linux目录结构基本介绍Linux的文件系统是采用层级式的树状结构,在此结构中的最上层是/根目录tip1:在Linux世界里,一切皆是文件示例/bin:bin是Binary的缩写,这个目录存放着最经常使用的命令。
Stella981 Stella981
3年前
Linux常用基本命令(chmod)
chmod命令用来改变文件或者目录的权限,只有文件的属主和超级用户才能够执行这个命令格式:chmod\option\\mode\\file\\常用参数选项R:递归修改目录以及子目录下面的所有文件权限\模式有两种格式,一种采用字母方式的表达式,另外一种是数字1,首先需要了解文件的权限和属主和属组。g
Wesley13 Wesley13
3年前
Ubuntu 创建开机自启动脚本的方法
1)将你的启动脚本复制到 /etc/init.d目录下以下假设你的脚本文件名为test.sh。2)设置脚本文件的权限$ sudo chmod 755 /etc/init.d/test.sh3)执行如下命令将脚本放到启动脚本中去:$ cd /etc/init.d$ sudo upda
Stella981 Stella981
3年前
Linux文件目录和权限
前言:Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,根据权限划分,每个目录都可以拥有相对身份的rwx\可读可写可执行\使用者与群组:Owner:文件拥有者,如jane拥有此文件所属权,可对该文件进行相应权限操作。Group :文件拥有组,如一个project组中,有三个人
Stella981 Stella981
3年前
Linux中的权限发布啦!
一、Linux中的权限在linux中,我们可以将文件的访问者分为三类,针对这三类访问者我们可以对他们设置不同的权限。1、文件访问者的分类文件和文件目录的所有者:u(User)。文件和文件目录的所有者所在的组中的用户:g(Group)。其他用户:o(Others)。2、文件的基本权限读(r):具有读取文件