Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)【转载】

2023-12-03 05:08

本文主要是介绍Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)【转载】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

权限简介

  • Linux系统上对文件的权限有着严格的控制,如果对某个文件执行某种操作,必须具有相对应的权限方可成功
  • Linux下文件的权限类型一般包括读、写、可执行。对应的字母为r、w、x.
  • Linux下权限的粒度有 拥有者u 、群组g 、其它组o 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。
  • Linux通常使用chmod命令对文件的权限进行设置和更改

一、快速入门

1.更改文件权限(chmod)

一般使用格式

chmod [参数] <mode> <file...>

参数说明
[参数]-c, --changes          like verbose but report only when a change is made (若该档案权限确实已经更改,才显示其更改动作)-f, --silent, --quiet  suppress most error messages  (若该档案权限无法被更改也不要显示错误讯息)-v, --verbose          output a diagnostic for every file processed(显示权限变更的详细资料)--no-preserve-root  do not treat '/' specially (the default)--preserve-root    fail to operate recursively on '/'--reference=RFILE  use RFILE's mode instead of MODE values-R, --recursive        change files and directories recursively (以递归的方式对目前目录下的所有档案与子目录进行相同的权限变更)--help		显示此帮助信息--version		显示版本信息
[mode] 权限设定字串,详细格式如下 :[ugoa...][[+-=][rwxX]...][,...],其中[ugoa...]u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示所有(包含上面三者)。[+-=]+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。[rwxX]r 表示可读取(read),w 表示可写入(write),x 表示可执行(execute),X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。[file...]文件列表(单个或者多个文件、文件夹)

范例:

  • 设置所有用户可读取文件a.conf
chmod a+x a.cnof
  • 设置c.sh只有拥有者可以读写及可执行
chmod u+rwx c.sh
  • 设置当前目录下的所有档案与子目录皆设为任何人可读写
chmod -R a+rw *

数字权限使用格式

在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 4 、2 和 1表示读、写、执行权限(具体原因可见下节权限详解内容),即 r=4,w=2,x=1 。此时其他的权限组合也可以用其他的八进制数字表示出来,

如:

rwx = 4 + 2 + 1 = 7

rw = 4 + 2 = 6

rx = 4 +1 = 5

若要同时设置 rwx (可读写运行) 权限则将该权限位 设置 为 4 + 2 + 1 = 7

若要同时设置 rw- (可读写不可运行)权限则将该权限位 设置 为 4 + 2 = 6

若要同时设置 r-x (可读可运行不可写)权限则将该权限位 设置 为 4 +1 = 5

上面我们提到,每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。即我们可以用用三个8进制数字分别表示 拥有者 、群组 、其它组( u、 g 、o)的权限详情,并用chmod直接加三个8进制数字的方式直接改变文件权限。语法格式为 :
chmod <abc> file..

其中 a b c 各表示一个数字, 分别标识user、group other的权限
相当于简化版的 
chmod u=xx g=xx o=xx file
而次数的xx将用8进制的数字来表示读、写、可执行的权限

范例:

  • 设置所有人可以读写及可执行
chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file )
  • 设置拥有者可读写,其他人不可执行读写
chmod 600 file (等价于 chmod u=rw,g=0,o=0 file 或者 chmod u=rw go-rwx file)

2.更改文件拥有者(chown)

linux/Unix 是多人多工作业系统,每个的文件都有拥有者(所有者),如果我们想变更文件的拥有者(利用 chown 将文件拥有者加以改变),一般只有系统管理员(root)拥有此操作权限,而普通用户则没有权限将自己或者别人的文件的拥有者设置为别人。

语法格式:
chown [参数] user[:group] file...

使用权限 root
说明
[参数] 同上面的chmod
[user] 新的文件拥有者的使用者
[group] 新的文件拥有者的使用者群体

范例:

  • 设置文件d.key的拥有者为users组下的tom
chown tom:users d.key
  • 设置当前目录下与子目录下的所有文件的拥有者为users群体的james
chown -R james:users *

二、Linux权限详解

十位权限表示

  • 后九位解析:
    Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。
    -rw------- (600)  只有拥有者有读写权限。
    -rw-r--r-- (644)  只有拥有者有读写权限;而属组用户和其他用户只有读权限。
    -rwx------ (700)  只有拥有者有读、写、执行权限。
    -rwxr-xr-x (755)  拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
    -rwx--x--x (711)  拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
    -rw-rw-rw- (666)  所有用户都有文件读、写权限。
    -rwxrwxrwx (777)  所有用户都有读、写、执行权限。
    
  • 第一位解析
    代表的是文件的类型,类型可以是下面几个中的一个:
    d代表的是目录(directroy)
    -代表的是文件(regular file)
    s代表的是套字文件(socket)
    p代表的管道文件(pipe)或命名管道文件(named pipe)
    l代表的是符号链接文件(symbolic link)
    b代表的是该文件是面向块的设备文件(block-oriented device file)
    c代表的是该文件是面向字符的设备文件(charcter-oriented device file)
    

    十二位权限(Linux附加权限)

linux除了设置正常的读写操作权限外,还有关于一类设置也是涉及到权限,叫做Linxu附加权限。包括 SET位权限(suid,sgid)和粘滞位权限(sticky)。

  • SET位权限:
  1. suid(set User ID,set UID)意思是进程执行一个文件时通常保持进程拥有者的UID
  2. sgid(set Group ID,set GID)意思是进程执行一个文件时通常保持进程拥有者的进程组的GID
    设置方式:
    chmod u+s filename 	设置suid位
    chmod u-s filename 	去掉suid设置
    chmod g+s filename 	设置sgid位
    chmod g-s filename 	去掉sgid设置
    权限说明:
    -rwsr-xr-x 表示设置了suid,且拥有者有可执行权限
    -rwSr--r-- 表示suid被设置,但拥有者没有可执行权限
    -rwxr-sr-x 表示sgid被设置,且群组用户有可执行权限
    -rw-r-Sr-- 表示sgid被设置,但群组用户没有可执行权限
    
  • 粘滞位权限(sticky)
    一个文件或目录被设置了粘滞位权限,会表现在其他组用户的权限的可执行位上
    设置方式:chmod + t <文件列表..>
    -rwsr-xr-t 表示设置了粘滞位且其他用户组有可执行权限
    -rwSr--r-T 表示设置了粘滞位但其他用户组没有可执行权限
    

表示方法

用十二位字符表示如下图

如果将则前三位SGT也转换成一个二进制数,则

  • suid 数字是4-(100)
  • sgid 数字是 2-(010)
  • sticky 数字是1-(001)

即为附加权限的八进制表示

chmod <sabc> file
如下表示

-rw-r-sr-- = 0 1 0 1 1 0 1 0 0 1 0 0 = 2644 
-rwsr-xr-x = 1 0 0 1 1 1 1 0 1 1 0 1 = 4755
-rwsr-sr-x = 1 1 0 1 1 1 1 0 1 1 0 1 = 6755
-rwsr-sr-t = 1 1 1 1 1 1 1 0 1 1 0 1 = 7755

也就有了以下命令:

chmod 4755 a.txt

为什么要设置4755 而不是 755?
假设netlogin是root用户创建的一个上网认证程序,如果其他用户要上网也要用到这个程序,那就需要root用户运行chmod 755 netlogin命令使其他用户也能运行netlogin。但假如netlogin执行时需要访问一些只有root用户才有权访问的文件,那么其他用户执行netlogin时可能因为权限不够还是不能上网。这种情况下,就可以用 chmod 4755 netlogin 设置其他用户在执行netlogin也有root用户的权限,从而顺利上网。

这篇关于Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)【转载】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

spring中的ImportSelector接口示例详解

《spring中的ImportSelector接口示例详解》Spring的ImportSelector接口用于动态选择配置类,实现条件化和模块化配置,关键方法selectImports根据注解信息返回... 目录一、核心作用二、关键方法三、扩展功能四、使用示例五、工作原理六、应用场景七、自定义实现Impor

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF