权限操作

权限简介

Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方可执行成功。

Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。

Linux下权限的粒度有 拥有者 、群组 、其它组 三种。每个文件都可以针对三个粒度,设置不同的rwx(读写执行)权限。通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

Linux上通常使用chmod命令对文件的权限进行设置和更改。

chmod [可选项]

参数说明:

[可选项]

-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 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

[file...]

文件列表(单个或者多个文件、文件夹)

举个栗子:

# 设置所有用户可读取文件 a.conf

chmod ugo+r a.conf

chmod a+r a.conf

#设置 c.sh 只有 拥有者可以读写及执行

chmod u+rwx c.sh

数字权限使用格式

在这种使用方式中,首先我们需要了解数字如何表示权限。 首先,我们规定 数字 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 file...

其中 a,b,c 各为一个数字,分别代表 User、Group、及Other 的权限。

相当于简化版的

chmod u=权限,g=权限,o=权限 file…

而此处的权限将用8进制的数字来表示User、Group、及Other的读、写、执行权限

举个栗子:

#设置所有人可以读写及执行

chmod 777 file (等价于 chmod u=rwx,g=rwx,o=rwx file 或 chmod a=rwx file)

#设置拥有者可读写,其他人不可读写执行

chmod 600 file (等价于 chmod u=rw,g=---,o=--- file 或 chmod u=rw,go-rwx file )

更改文件拥有者(chown命令)

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

语法格式:

chown [可选项] user[:group] file...

使用权限:root

说明:

[可选项] : 同上文chmod

user : 新的文件拥有者的使用者

group : 新的文件拥有者的使用者群体(group)

举个栗子:

#设置文件 d.key、e.scrt的拥有者设为 users 群体的 tom

chown tom:users file d.key e.scrt

#设置当前目录下与子目录下的所有文件的拥有者为 users 群体的 James

chown -R James:users *

Linux的文件权限有以下设定:

Linux下文件的权限类型一般包括读,写,执行。对应字母为 r、w、x。

Linux下权限的属组有 拥有者 、群组 、其它组 三种。每个文件都可以针对这三个属组(粒度),设置不同的rwx(读写执行)权限。

通常情况下,一个文件只能归属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入具备权限的群组,一个用户可以同时归属于多个组。

如果我们要表示一个文件的所有权限详情,有两种方式:

第一种是十位二进制表示法,(三个属组每个数组使用一个二进制位,再加一个最高位共十位),可简化为三位八进制形式

另外一种十二位二进制表示法(十二个二进制位),可简化为四位八进制形式

十位权限表示

常见的权限表示形式有:

-rw------- (600) 只有拥有者有读写权限。

-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。

-rwx------ (700) 只有拥有者有读、写、执行权限。

-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。

-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。

-rw-rw-rw- (666) 所有用户都有文件读、写权限。

-rwxrwxrwx (777) 所有用户都有读、写、执行权限。

后九位解析: 我们知道Linux权限总共有三个属组,这里我们给每个属组使用三个位置来定义三种操作(读、写、执行)权限,合起来则是权限的后九位。 上面我们用字符表示权限,其中 -代表无权限,r代表读权限,w代表写权限,x代表执行权限。

实际上,后九位每个位置的意义(代表某个属组的某个权限)都是固定的,如果我们将各个位置权限的有无用二进制数 1和 0来代替,则只读、只写、只执行权限,可以用三位二进制数表示为

r-- = 100

-w- = 010

--x = 001

--- = 000

转换成八进制数,则为 r=4, w=2, x=1, -=0(这也就是用数字设置权限时为何是4代表读,2代表写,1代表执行)

实际上,我们可以将所有的权限用二进制形式表现出来,并进一步转变成八进制数字:

rwx = 111 = 7

rw- = 110 = 6

r-x = 101 = 5

r-- = 100 = 4

-wx = 011 = 3

-w- = 010 = 2

--x = 001 = 1

--- = 000 = 0

由上可以得出,每个属组的所有的权限都可以用一位八进制数表示,每个数字都代表了不同的权限(权值)。如 最高的权限为是7,代表可读,可写,可执行。

故 如果我们将每个属组的权限都用八进制数表示,则文件的权限可以表示为三位八进制数

-rw------- = 600

-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)

十二位的权限表示方法

附加权限除了用十位权限形式表示外,还可以用用十二位字符表示。

11 10 9 8 7 6 5 4 3 2 1 0

S G T r w x r w x r w x

SGT分别表示SUID权限、SGID权限、和 粘滞位权限,这十二位分别对应关系如下:

第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位(后九位)。

在这十二位的每一位上都置值。如果有相应的权限则为1, 没有此权限则为0。

-rw-r-sr-- 的值为: 0 1 0 1 1 0 1 0 0 1 0 0

-rwsr-xr-x 的值为: 1 0 0 1 1 1 1 0 1 1 0 1

-rwsr-sr-x 的值为: 1 1 0 1 1 1 1 0 1 1 0 1

-rwsr-sr-t 的值为: 1 1 1 1 1 1 1 0 1 1 0 1

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

suid 的八进制数字是4

sgid 的代表数字是 2

sticky 位代表数字是1

这样我们就可以将十二位权限三位三位的转化为4个八进制数。其中

最高的一位八进制数就是suid,sgdi,sticky的权值。

第二位为 拥有者的权值

第三位为 所属组的权值

最后一位为 其他组的权值

附加权限的八进制形式

通过上面,我们知道,正常权限和附加权限可以用4位八进制数表示。类似于正常权限的数字权限赋值模式(使用三位八进制数字赋值)

chmod file...

我们可以进一步使用4位八进制数字同时赋值正常权限和附加权限。

chmod file...

其中s是表示附加权限的把八进制数字,abc与之前一致,分别是对应User、Group、及Other(拥有者、群组、其他组)的权限。因为SUID对应八进制数字是4,SGID对于八进制数字是2,则“4755”表示设置SUID权限,“6755”表示同时设置SUID、SGID权限。

我们进一步将上小节的例子中的二进制数转变为八进制表示形式,则

-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

举个栗子:

设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行

chmod 755 netlogin

设置 netlogin 的权限为拥有者可读写执行,群组和其他权限为可读可执行,并且设置suid

chmod 4755 netlogin

chmod 4755与chmod 755对比多了附加权限值4,这个4表示其他用户执行文件时,具有与所有者同样的权限(设置了SUID)。

为什么要设置4755 而不是 755?

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

linux权限切换命令,Linux基础常用命令汇总(权限操作)相关推荐

  1. Linux 基础操作、常用shell命令、vi常用命令、man帮助手册

    Linux 基础操作.常用shell命令.vi常用命令.man帮助手册 一.简述 记录简单的Linux 基础操作.常用shell命令.vi编辑器常用命令.man帮助手册的使用. 二.Linux 基础操 ...

  2. Linux学习笔记(二)|常用命令

    Linux学习笔记(二)常用命令 1.文件处理命令 1.1命令格式与目录处理 -ls 功能描述:显示目录文件 原意:list 所在路径:/bin/ls 语法: ls-a 显示所有文件,包括隐藏文件 l ...

  3. 嵌入式Linux系统编程学习之二常用命令

    嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...

  4. debian linux下载路径,Debian 常用命令,debian常用命令

    Debian 常用命令,debian常用命令 换源用中科大的比较快deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-freed ...

  5. 抓取一台电脑linux,教程方法;用来获取Linux主机信息的5个常用命令电脑技巧-琪琪词资源网...

    琪琪词资源网-教程方法;用来获取Linux主机信息的5个常用命令电脑技巧,以下是给大家带来的教程方法;用来获取Linux主机信息的5个常用命令,大家可以了解一下哦! 有些时候Linux 系统管理员在接 ...

  6. Linux查看文件和日志的常用命令

    Linux查看文件和日志的常用命令 当项目部署和运行起来后,会产生很多的运行日志.日志的内容是程序里定义的重要输出信息,还有程序出错的报错信息. 查看日志文件大部分是去日志中获取一些数据,确认某些信息 ...

  7. 【Linux】vi和vim编辑器——常用命令大全

    文章目录 8.1.vi 和 vim 8.1.1 VI 8.1.2 VIM 8.2 打开和新建文件 8.2.1 打开文件并且定位行 8.3 VI三种工作模式 8.4 常用命令 8.4.1 移动 8.4. ...

  8. linux系统中如何查看日志 (常用命令)

    linux系统中如何查看日志 (常用命令) cat  tail -f 日 志 文 件 说    明  /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用 ...

  9. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  10. 如何在linux下切换用户,linux如何切换用户?linux切换用户的方法

    linux如何切换用户?linux是一款适用于开发者开发软件的操作系统,不少刚接触linux系统的用户在使用过中会遇到一些问题,最近就有用户反应该如何切换linux用户的问题,关于linux切换用户的 ...

最新文章

  1. 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。
  2. 前沿报告|AI系列报告之:智能计算芯片
  3. VTK:几何对象之Tetrahedron
  4. 立个flag,一个月之内把知识点整理完,放到博客
  5. Promise处理前端异步事件
  6. Project Euler 001-006 解法总结
  7. .net remoting与web service的区别
  8. php sql判断l列的存在,thinkphp 模块不存在:404
  9. 说好的 All in AI,没想到科技巨头们都开始偷偷的挖矿中!
  10. 学习pythonweb开发_Python学习--20 Web开发
  11. 自己动手编写一个VS插件(三)——创建工具栏之一
  12. 数据库基础(5)1NF,2NF,3NF,BCNF 四大范式的定义和判别
  13. AutoCAD启动自动加载程序的研究
  14. 笔记本相机测试软件,联想笔记本人脸识别软件(Lenovo VeriFace)
  15. 【C语言进阶】C语言实现通讯录(简易版)
  16. solidworks做动态静力学分析Motion(牛头刨床为例)机械原理课设(停止中断)
  17. 3 staruml 流程图,staruml流程图(staruml怎么画顺序图)
  18. js怎么实现ftp上传文件到服务器,js ftp上传文件到服务器上
  19. 史上最全各种简历模板,自荐信模板和面试技巧
  20. mysql篇-sql查询语句-平均分、最高最低分、排序

热门文章

  1. python使用xlrd库处理excel__API常见基本操作
  2. Android之获取手机上的图片和视频缩略图thumbnails
  3. maven中如何将所有引用的jar包打包到一个jar中
  4. Springmvc 中org.springframework.http.converter.json.MappingJackson2HttpMessageConverter依赖jackson包...
  5. SQL Server跨库查询
  6. oracle错误处理及实操-【INS-20802】
  7. DDD关键知识点整理汇总
  8. 关于easyui datagrid分页的json格式
  9. 数据中心的企业正羽科技技术收购虚拟主机VantiCore
  10. 利用python分析了下乘风破浪的姐姐