chmod命令学习1

2024-08-23 00:20
文章标签 学习 命令 chmod

本文主要是介绍chmod命令学习1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

理解权限的基础

chmod命令可以修改与文件或目录相关联的权限,Linux是如何理解这些权限的。
Linux认为有三组用户会使用文件或目录,即实际拥有者(也称为文件的用户)、用户组及系统中的其他人。每组用户分别用不同的字母表示,如表7-1所示。
表-1 用户组及其缩写

用 户 组缩  写
用户(拥有者)(User)u
组(Group)g
其他(Other)o

用户能够对文件和目录进行操作:读、写和执行,分别表示为r、w和x。其他可能的权限还有suid、sgid和sticky bit,分别表示为s(在有些系统中为S)、s(或S)和t(或T)。但是要牢记,根据使用这些权限的是文件还是目录,所有这些权限字符的意义可能会有所不同。表-2总结了每种权限属性、缩写以及它们各自的含义。
表-2 权限字母及其含义

文件属性缩写对文件的含义对目录的含义
可读(readable)r可以查看可以使用ls命令列出其内容
可写(writable)w可以编辑可以删除、重命名或添加文件
可执行(executable)x可以作为程序来运行可以读取它的文件和子目录,或运行文件
suids任何用户都可以使用拥有者的权限来执行文件不可用
sgids任何用户都可以使用用户组的权限来执行文件在目录中新创建的任何文件都属于拥有该目录的用户组
sticky bitt告诉OS经常要执行这个文件,所以通常把它保存在交换区以便快速访问(只适用于较早的Unix系统,Linux将忽略这个属性)用户不能删除或重命名文件,除非当前用户是文件或目录的拥有者

说明 root用户一直能够对任何文件或目录进行任何操作,所以表7-2中的限制并不适用于root。
在接下来的几节中会详细介绍表7-2中的每个文件属性。现在你应该已经理解这些权限了,接下来就看看如何用chmod命令修改文件和目录的权限。

用字母表示法修改文件和目录的权限

chmod [ugo][±=][rwx]
chmod命令使用两种权限表示法:字母或数字。二者各有各的优点,但是有时对于用户来说,先学习字母系统要更容易些。字母表示法基本上使用一个简单的公式:想要修改的用户组(u、g、或者o),后面用加号(+)来授予权限、用减号(-)来删除权限、用等号(=)来设置完全匹配的权限,后面再跟上表示想要修改的权限的字母(r、w、x、s、或者t)。例如,假设你想让family用户组的成员能够修改图片。

$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod g+w libby.jpg
$ ls -l
-rw-rw-r-- 1 scott family ... libby.jpg

如果你想让family组以及所有其他用户都有权改写文件:

$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod go+w libby.jpg
$ ls -l
-rw-rw-rw- 1 scott family ... libby.jpg

想要的是让所有用户(拥有者、用户组以及所有其他人)都能读和写访问,应该使用以下命令:

$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod a=rw libby.jpg
$ ls -l
-rw-rw-rw- 1 scott family ... libby.jpg

如果需要删除family组和其他人的权限,不让他们修改图片,甚至要确保其他人都看不到图片。

$ ls –l
-rw-rw-rw- 1 scott family ... libby.jpg
$ chmod go-w libby.jpg
$ ls -l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod o-r libby.jpg
$ ls -l
-rw-r----- 1 scott family ... libby.jpg

除了使用-,也可以使用=:

$ ls –l
-rw-rw-rw- 1 scott family ... libby.jpg
$ chmod g=r libby.jpg
$ ls -l
-rw-r--rw- 1 scott family ... libby.jpg
$ chmod o= libby.jpg
$ ls -l
-rw-r----- 1 scott family ... libby.jpg

注意最后的chmod命令,o等于什么也没有,相当于删除了系统中所有其他用户的所有权限。

用数字权限修改文件和目录的权限

chmod [0-7][0-7][0-7]
数字权限(也称为八进制权限)是基于二进制数字系统而创建的。读(read,r)的值为4,写(write,w)的值为2,而执行(execute,x)的值是1。Linux权限识别三个用户组,即拥有者、组以及其他人,每个用户组都能进行读、写和执行操作(如表-3所示)。
表-3 权限和相应的数字表示

项目Owner(拥有者)Group(组)World(其他人)
权限r; w; xr; w; xr; w; x
数字表示4; 2; 14; 2; 14; 2; 1

在这种模式下,权限组合就演变成了简单的加法运算。

用户具有读和写文件或目录的权限。读是4,写是2,执行是0(因为没有授权),4 + 2 + 0 = 6。
用户具有读和执行文件的权限。读是4,写是0(因为没有授权),执行是1,4 + 0 + 1 = 5。
用户具有读、写及执行目录的权限。读是4,写是2,执是1,4 + 2 + 1 = 7。
使用这种方法,用户组的最大权限值是7(读、写和执行),最小权限值是0(不能读、写和执行)。因为有三种用户组,所以就有三个相应的数字,每个值都介于0和7之间,分别表示相应用户组的权限。表7-4展示了可能的权限数值以及它们各自的含义。
表-4 ls -l命令表示的数字权限

数  字ls -l命令的表示数  字ls -l命令的表示
04r–
1–x5r-x
2-w-6rw-
3-wx7rwx

虽然可以设置各种各样的权限,但是有一些权限会经常不断出现。表7-5列举了几种常用的权限以及它们的含义。
表-5 使用ls -l命令表示的通用权限

Chmod命令ls -l表示含  义
chmod 400-r--------拥有者能够读,其他任何人不能进行任何操作
chmod 644-rw-r–r–所有人都能够读,但只有拥有者才能编辑
chmod 660-rw-rw----拥有者和组用户能够读和写,其他人不能进行任何操作
chmod 664-rw-rw-r–所有人都能读,但只有拥有者和组用户能够编辑
chmod 700-rwx------拥有者能够读、写和执行,其他用户不能进行任何操作
chmod 744-rwxr–r–所有人都能读,但只有拥有者才能编辑和执行
chmod 755-rwxr-xr-x所有人都能读和执行,但只有拥有者才能编辑
chmod 777-rwxrwxrwx所有人都能读、写和执行(这样的设置通常不是个好想法)

警告 可以对文件或目录使用chmod 000,但是那样的话,唯一能够对它进行任何操作或再使用chmod命令修改权限的用户就只有root了。
与权限的字母表示法相比,八进制权限的理解需要更多的思考,但是它的优点就是能够一次设置许多权限。
假设你想允许family组的成员能够修改图片。

$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod 664 libby.jpg
$ ls -l
-rw-rw-r-- 1 scott family ... libby.jpg

让family组以及所有其他用户具有写这个文件的权限

$ ls –l
-rw-r--r-- 1 scott family ... libby.jpg
$ chmod 666 libby.jpg
$ ls -l
-rw-rw-rw- 1 scott family ... libby.jpg

需要删除family组和其他人的权限,不让他们修改图片,甚至要确保其他人都看不到图片。

$ ls –l
-rw-rw-rw- 1 scott family ... libby.jpg
$ chmod 640 libby.jpg
$ ls -l
-rw-r----- 1 scott family ... libby.jpg

使用权限的字母表示法需要两步,先是chmod go-w,然后是chmod o-r(或chmod g=r,然后chmod o=),而使用权限的数字表示法则只需要一条简单的命令就可以了。

这篇关于chmod命令学习1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097814

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.