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

相关文章

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作