Linux最优秀的地方之一,就在于它的多用户、多任务环境。为了让用户具有较安全的管理机制,文件的权限管理是很重要的。Linux通常将文件的访问方式分为分为三个类别,分别是owner/group/other,而且具有read/write/excute等权限。在Linux下面这么多的目录/文件,到底代表什么意义呢?下面我们就来一一介绍。

一、用户与用户组

1. 文件拥有者(用户)

由于Linux是多用户、多任务的系统,可能常常会多人同时使用主机工作,考虑到每个人的隐私权以及每个人喜好的工作环境,“文件拥有者”(owner)就相当重要了。例如,将电子邮件转存为文件后,放在你自己的主文件夹下,这个时候,就把该文件设置成“只有文件拥有者,才能查看与修改这个文件的内容”。即使其他人知道您拥有这个文件,但由于该文件设置了适当的权限,他们也无法知道该文件的内容。

2. 用户组

用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的。

首先说明一点:文件所有者与用户组本身没有什么关系,比如用户组可以是root,但是文件所有者为user1;

案例分析:

(1)一个文件的文件所有者为user1,用户组为root,当前登录用户为user1,

如果想要让文件的所有者变成root,能成功吗?不能;

(2)一个文件的文件所有者为user1,用户组为root,当前登录用户为root,

    如果想要让文件的所有者变成root,能成功吗?能;

总结一点:改文件的所有者、用户组应该是root用户的职责;

再说明一点:一个用户总会归属于一个或多个用户组,一个用户组里可以有多个用户,比如root用户归属于root用户组,但是我们也可以创建一个用户user1,既归属于group1用户组,又归属于group2用户组;

3.  其他人

在Linux中,任何一个文件都具有“用户、用户组和其他人”三个权限。我们可以用图1.1来解释。此时,以图中的王三毛为例,王三毛这个“文件”的拥有者为王三毛,它属于王大毛这个用户组,而张小猪相对于王三毛,则只是一个其他人而已。

图 1.1

解释:root是Linux和unix系统中的超级管理员用户帐户,该帐户拥有整个系统至高无上的权力,所有对象他都可以操作。

二、Linux文件权限

1. Linux文件属性

打开终端,执行ls命令,查询文件信息如下图所示

注:“连接”的含义:指占用的节点(i-node即I节点),新建的目录其下含有“.和..”两个目录,连接为2,再新增子目录,会依次增加连接数,但增加的文件不会增加连接数。

2. Linux 文件权限属性

范例:若有一个文件的属性为“-rwxr-xr—”,注意下面的数字表示第几位,不表示权限编码。

说明如下: [-] [r w x] [r  -  x] [r  -  -]

1   2 3 4   5 6 7    8 9 0

1:表示这个文件名为目录或文件(上面为文件)。

234:拥有者的权限(上面为可读、可写、可执行)。

567:同用户组用户权限(上面为可读、可执行)。

890:其他用户权限(上面为仅可读)。

(1) 上面的属性情况表示一个文件、这个文件的拥有者可读、可写、可执行。但同用户组的人仅可读与执行。非同用户组的用户仅可读的意思。

(2) 除此之外,需要特别注意的是x。若文件名为一个目录的时候,x与目录的关系相当重要,如果在该目录下不能执行任何命令的话,那么自然也就无法进入了,因此,请特别注意,如果想要开放某个目录让一些人进来的话,请记住,开放该目录的x属性。至于目录的权限相关说明,我们会在下面继续介绍。

3. 更改文件权限

3.1 文件权限三剑客:chgrp , chown , chmod

·chgrp 更改所属组chgrp [-R] 组名 DIR/FILE(-R 递归子目录下所有文件、目录都更新成此组):

把DIR或FILE给组名

·chown 更改所有者:chown [选项] 用户[ . 组] file/dir :

选项:-V 显示chown命令所做工作。

-R 同上,句点可用“:”代替

·chmod 更改权限:chmod [-R]nnn 文件或目录

注意:shell 文件用VI编辑后,权限会改变,需要更改权限。

3.2 修改权限的方式

文件属性的改变使用chmod命令,但是,属性的设置方法有两种,分别可以使用数字或者是符号。

(1) 数字类型改变文件权限

Linux文件的基本属性有9个,分别是owner/group/others,组别的read/write/ excute属性,先复习一下刚刚上面提到的数据:

–rwx rwx rwx

这9个属性是三个一组。其中,可以使用数字来表示各个属性,各属性的对照表如下:

权限代表数:       r→4;   w→2;  x→1

同一组(owner/group/others)的3个属性(r/w/x)是需要累加的,例如当属性为 [-rwxrwx---] 则是:

owner = rwx = 4+2+1 = 7

group = rwx = 4+2+1 = 7

others= --- = 0+0+0 = 0

所以,等一下设置属性的更改时,该属性的数字就是770。

更改属性的命令chmod的语法是这样的:

[root@linux ~]# chmod [-R]xyz 文件或目录

参数:

xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。

-R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组。常常用在更改某一目录的情况。

(2) 符号类型改变文件权限
还有一个改变属性的方法。从之前的介绍中可以发现,基本上就9个属性,分别是 (1)user (2)group (3)others三组。我们就可以通过u, g, o来表示三组的属性。此外,a表示all,即全部的三组。读写属性可以写成r, w, x。也就是可以使用下面的方式来看:

假如我们要“设置”一个文件的属性为“- rwx r-x r-x”,基本上就是:
  user (u):具有可读、可写、可执行的权限。
  group与others (g/o):具有可读与执行的权限。
  所以就是: chmod  u=rwx,go=rx  .bashrc
# 注意。那个 u=rwx,go=rx 是连在一起的,中间并没有任何空格。

最新文章

  1. Node.js连接Mysql,并把连接集成进Express中间件中
  2. js queue dequeue clearQueue stop
  3. WPF系列:画图
  4. Android笔记:四大组件
  5. 【BZOJ】1602: [Usaco2008 Oct]牧场行走(lca)
  6. android广播集合,intent,action
  7. NOI 2014 感想
  8. c#基础语言编程-序列化
  9. [LeetCode141]Linked List Cycle
  10. MVC 5显示、创建、编辑、删除等功能实练
  11. JavaScript中数组类型的属性和方法
  12. 【CSS】伪类与伪元素
  13. 不用asp.net MVC,用WebForm照样能够实现MVC
  14. mysql实现主从备份
  15. 第一周Python学习笔记
  16. 002 requests的使用方法以及xpath和beautifulsoup4提取数据
  17. SQL增删改查
  18. sun.misc.BASE64Encoder等类报错的解决方法
  19. uboot 传递的参数 mtdparts
  20. python 多线程日志切割+日志分析

热门文章

  1. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记
  2. python实现简单的负载均衡
  3. Gson解析复杂JSON字符串的两种方式
  4. HDFS namenode 写edit log原理以及源码分析
  5. sqlserver sql优化案例及思路
  6. CentOS7 安装 JDK
  7. iptables实战演练
  8. 乘风破浪:LeetCode真题_030_Substring with Concatenation of All Words
  9. jQuery 效果函数,jquery文档操作,jQuery属性操作方法,jQuerycss操作函数,jQuery参考手册-事件,jQuery选择器
  10. 带有function的JSON对象的序列化与还原