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

相关文章

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

Linux磁盘分区、格式化和挂载方式

《Linux磁盘分区、格式化和挂载方式》本文详细介绍了Linux系统中磁盘分区、格式化和挂载的基本操作步骤和命令,包括MBR和GPT分区表的区别、fdisk和gdisk命令的使用、常见的文件系统格式以... 目录一、磁盘分区表分类二、fdisk命令创建分区1、交互式的命令2、分区主分区3、创建扩展分区,然后

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

Linux内核之内核裁剪详解

《Linux内核之内核裁剪详解》Linux内核裁剪是通过移除不必要的功能和模块,调整配置参数来优化内核,以满足特定需求,裁剪的方法包括使用配置选项、模块化设计和优化配置参数,图形裁剪工具如makeme... 目录简介一、 裁剪的原因二、裁剪的方法三、图形裁剪工具四、操作说明五、make menuconfig

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

详解Java中的敏感信息处理

《详解Java中的敏感信息处理》平时开发中常常会遇到像用户的手机号、姓名、身份证等敏感信息需要处理,这篇文章主要为大家整理了一些常用的方法,希望对大家有所帮助... 目录前后端传输AES 对称加密RSA 非对称加密混合加密数据库加密MD5 + Salt/SHA + SaltAES 加密平时开发中遇到像用户的

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资