Linux 系统中文件的 ugo 权限是 Linux 进行权限管理的基本方式。本文将介绍 ugo 权限的基本概念。
说明:本文的演示环境为 ubuntu 16.04。

文件的所有者和组

Linux 文件的 ugo 权限把对文件的访问者划分为三个类别:文件的所有者、组和其他人。所谓的 ugo 就是指 user(也称为 owner)、group 和 other 三个单词的首字母组合。

文件的所有者
文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。在一台允许多个用户访问的 Linux 主机上,可以通过文件的所有者来区分一个文件属于某个用户。当然,一个用户也无权查看或更改其它用户的文件。

文件所属的组
假如有几个用户合作开发同一个项目,如果每个用户只能查看和修改自己创建的文件就太不方便了,也就谈不上什么合作了。所以需要一个机制允许一个用户查看和修改其它用户的文件,此时就用到组的概念的。我们可以创建一个组,然后把需要合作的用户都添加都这个组中。在设置文件的访问权限时,允许这个组中的用户对该文件进行读取和修改。

其他人
如果我想把一个文件共享给系统中的所有用户该怎么办?通过组的方式显然是不合适的,因为需要把系统中的所有用户都添加到一个组中。并且系统中添加了新用户该怎么办,每添加一个新用户就把他添加到这个组中吗?这个问题可以通过其他人的概念解决。在设置文件的访问权限时,允许其他人户对该文件进行读取和修改。

文件属性中的权限信息

使用 ll 命令可以查看文件的属性信息:

  • 第一组指明文件的类型和 ugo 权限信息。
  • 第二组是对文件的引用计数。
  • 第三组是文件的所有者。
  • 第四组是文件所属的组。

其它的信息我们暂时忽略。

文件类型
第一组的第一个字符描述文件的类型,常见的类型有如下几种:

  • d 表示目录
  • - 表示普通文件
  • l 表示链接文件
  • b 表示块设备文件
  • c 表示字符设备文件
  • s 表示 socket 文件

文件的 ugo 权限信息
第一组信息一个 10 个字符,除去第一个表示文件类型的字符,其它 9 个字符表示文件的 ugo 权限信息:

这 9 个字符以三个为一组,都是 rwx 或 - 的组合。其中,r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 这三个权限的位置不会改变,如果没有对应的权限,就会以 -(减号)代替。
以上图所示,第一组为文件所有者的权限,第二组为文件所属组的权限,第三组为其他人的权限。其表示的具体含义为:文件所有者具有对文件的读写权限,文件所属组的用户具有对文件读写的权限,而其他人只有读取文件的权限。

下面让我们来详细的解释一下读写执行的权限。

  • r (read):可以读取文件的实际内容,比如读取文本文件内的文字等。
  • w (write):可以编辑、增加、删除文件的内容(但不含删除该文件)。
  • x (execute):该文件具有可以被系统执行的权限。

可以看出,对于文件来说,rwx 主要针对的是文件的内容。

对目录而言,目录中存储的主要是目录下文件名称的列表,这与普通文件是有些不同的:
r (read contents in directory)
表示具有读取目录下文件名称的权限,也就是说你可以通过 ls 命令把目录下的文件列表查询出来。
比如我们使用用户 nick 创建一个目录 testdir,并在该目录下创建两个文件,此时 testdir 的权限为:

其他人具有 r 权限,所以可以通过 ls 命令查看该目录下的文件,这里我们通过 tester 用户查看:

然后我们修改该目录的权限:

现在其他人已经没有这个目录上的 r 权限了,再让用户 tester 执行 ls 命令试试:

现在其他人已经没有权限查看目录下的文件名了。

w (modify contents of directory)
具有 w 权限表明你可以在该目录下执行如下的操作:

  • 创建新的文件和目录
  • 删除已经存在的文件与目录(不论该文件的权限为何!)
  • 重命名已存在的文件或目录
  • 移动该目录内文件、目录的位置。

x (access directory)
目录虽然不能被执行,但是却具有可以执行的权限。目录的 x 权限表示用户是否可以进入该目标并成为当前的工作目录。注意,如果用户对目录没有 x 权限,则无法查看该目录下的文件的内容(注意与 r 权限的区别)。比如我们移除 testdir 目录上的 x 权限:

此时虽然其他人具有读 testfile1 文件的权限,但我们用 tester 用户读取其内容时:

提示没有权限,原因就是我们移除了 testdir 目录的 x 权限。所以,如果要允许目录被其他人浏览时,至少要给予 r 和 x 的权限

文件的所有者
第三组信息显示文件的所有者,图片中显示的文件所有者为 nick。文件的所有者一般是创建该文件的用户,对该文件具有完全的权限。

文件所属的组
第四组信息显示文件所属的组。当我们通过 adduser 命令创建用户时一般会创建一个同名的组,该用户就属于与他同名的组(比如笔者机器上的用户 nick 就属于 nick 组)。当我们创建文件和目录时,其默认所属的组就是所有者所在的组。

保存用户和组的文件

用户和组的信息分别记录在 /etc/passwd、/etc/group 文件中。可以直接以读取文本文件的方式查看其内容:

这两个文件的内容是任何人都有权查看的,比如 /etc/passwd 文件的内容如下所示:

该图只显示了部分用户的信息,其中的每一行代表一个用户。/etc/group 文件的结构与 /etc/passwd 文件的结构类似。

基本操作

在新建文件时会根据创建者的身份和其它的一些设置为文件生成默认的权限。比如我们全面看到的文件 testfile:

接下来我们介绍如何通过下面的命令修改文件权限相关的信息:

  • chown :改变文件所有者
  • chgrp :改变文件所属的组
  • chmod :改变文件的权限

改变文件所有者
通过 chown 命令可以改变文件的所有者:

$ sudo chown tester testfile

改变文件所属的组
通过 chgrp 命令可以改变文件所属的组:

改变文件的权限
通过 chmod 命令可以改变文件的权限。对于文件的 rwx 权限,有两种表示方法,数字表示法和字符表示法。
以数字表示权限的方式如下:
r: 4
w: 2
x: 1
如果是 rwx 权限就是 4 + 2 + 1 = 7 ,r-x 就是 4 + 1 = 5 ,--- 则为 0。所以 rw-rw-r-- 就可以用 664 来表示。如果我们想把文件的权限修改为 rwxrwxrwx,可以使用下面的命令:

$ chmod  testfile

以字符表示权限的方式如下:
用字符 u, g, o 分别代表文件所有者(user)、文件所属的组(group)和其他人(other),这就是 ugo 权限叫法的由来。只不过还有一个 a 可以表示全部的身份(all)。具体更改权限的语法如下:
chmod [u g o a] [+ - =] [rwx] 文件/目录
比如我们可以通过下面的命令把 testfile 的权限设回 rw-rw-r--:

$ chmod ug=rw,o=r testfile

如果想去掉组的 w 权限并给其他人添加 x 权限可以执行下面的命令:

$ chmod g-w,o+x testfile

我们还可通过 a 为全部身份设置权限,比如 rwx:

$ chmod a=rwx testfile

总结

ugo 权限是学习和使用 Linux 系统的基础,本文只介绍了其中最基本的概念和操作,希望可以帮助大家了解 Linux 的权限及其简单的操作。

参考:
鸟哥 Linux 的文件权限与目录配置
linux文件权限【基本权限ugo】
chown man page
chgrp man page
chmod man page

Linux ugo 权限的更多相关文章

  1. LInux ugo权限详解[修]

    Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式. 用户和组可以看一下上一章的部分,先来看一下权限. 一.权限概览 在Linux下,使 ...

  2. LInux ugo权限详解

    Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式. 用户和组可以看一下上一章的部分,先来看一下权限. 一.权限概览 在Linux下,使 ...

  3. Linux UGO和ACL权限管理

    自主访问控制(Discretionary Access Control, DAC)是指对象(比如程序.文件.进程)的拥有者可以任意修改或者授予此对象相应的权限.Linux的UGO(User, Grou ...

  4. linux中ugo权限管理(chmod/chown)

    查看ugo权限: ll  [root@localhost test]# ll total 12 -rwxr-xr-x 2 root root 4 Oct  3 11:44 a lrwxrwxrwx 1 ...

  5. 修改linux文件权限

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  6. 五大权限:UGO权限、SetUID SetGID Sticky、ACL权限、chattr(文件系统级别的权限)、SELINUX

    五大权限:UGO权限.SetUID SetGID Sticky.ACL权限.chattr(文件系统级别的权限).SELINUX   ======================文件属性以及ugo权限= ...

  7. Linux文件权限;ACL;Setuid、Setgid、Stick bit特殊权限;sudo提权

    相关学习资料 http://blog.sina.com.cn/s/blog_4e2e6d6a0100g47o.html http://blog.csdn.net/aegoose/article/det ...

  8. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  9. 修改linux文件权限命令:chmod 【转载】

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. chmod  命令可以改变所有子目录的权限,下面有2种方法 改变一个文件的权限: chmod ...

随机推荐

  1. vue-cli快速原型开发

    我们知道vue-cli提供了一套如何快速搭建vue开发脚手架的工具,虽然好用,但是有的时候我们还是嫌麻烦,因为就想快速开发调试一个组件,这时我们就可以使用vue-cli 3.x以上版本的一个好特性: ...

  2. Linux主机定期打补丁修复漏洞

    1.如图扫描出来的漏洞 不看不知道,一看吓一跳  2.Linux主机如何扫描漏洞 参照:Linux操作系统下查找漏洞的几种必备兵器 3.linux操作系统怎么样打补丁?linux系统升级软件 使用yu ...

  3. redis数据库的简单介绍

    NoSQL:一类新出现的数据库(not only sql) 泛指非关系型的数据库 不支持SQL语法 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 NoSQL的世 ...

  4. 5.3Python函数(三)

    目录 目录 前言 (一)装饰器 ==1.简单的装饰器== ==2.修饰带参数函数的装饰器== ==3.修饰带返回值函数的装饰器== ==4.自身带参数的装饰器== (二)迭代器 (三)生成器 ==1. ...

  5. ELK-logstash-6.3.2部署

    Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理. 1. logstash部署 [yun@mini04 software]$ p ...

  6. FileInputStream与FileOutputStream学习笔记

    这是我的第一篇博客,纪念一下吧! 最近学习了IO流,想着学长说的话,就突然想要写写博客了,别管这是什么逻辑了,进入正题. 一.FileInputStream 1.概念 FileInputStream是 ...

  7. 基于C#的单元测试(VS2015)

    这次来联系怎么用VS2015来进行C#代码的单元测试管理,首先,正好上次写了一个C#的WordCount程序,就用它来进行单元测试联系吧. 首先,根据VS2015的提示,仅支持在共有类或共有方法中支持 ...

  8. webpack简单的打包体验

    怎么使用webpack 进行打包 需要使用管理员权限进行安装 npm install webpack -g npm install webpack-cli -g 创建站点 mkdir webpack ...

  9. 配置进程外的Session

    1.Session保存在SQLServer中配置方法 1)运行.NetFramework安装目录下对应版本的aspnet_regsql.exe 来创建相关的数据库.表和存储过程等,比如: C:\Win ...

  10. ADO.NET分享

    看到<c#从入门到精通(第三版)>书中对ado.net里几种方法打的比方,很有意思就发一下. 1)这张图中,把数据比作水,储存了大量数据. 2)Connection对象好像进水龙头,插在水 ...