Linux权限管理

对于刚接触Linux的朋友,经常会碰到一些"permission denied"问题。明明看的懂英文意思是说没有权限,但却摸不着头脑:为啥是没权限的?怎么改权限?
本文对linux的权限管理做了通俗易懂的介绍,看完一定会对你有所帮助!

浏览权限

使用ls -al命令可以查看当前目录下的所有文件信息:

[root@localhost ~]# ls -al
总用量 28
dr-xr-x---.  2 root root  135 10月 21 21:13 .
dr-xr-xr-x. 17 root root  224 10月 20 06:26 ..
-rw-------.  1 root root 1257 10月 20 07:01 anaconda-ks.cfg
-rw-------.  1 root root  156 11月 25 14:44 .bash_history
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
-rw-r--r--.  1 root root  100 12月 29 2013 .cshrc
-rw-r--r--.  1 root root  129 12月 29 2013 .tcshrc

这里面列出了当前目录下所有文件(包含当前目录本身.,当前目录所属的父目录..,当前目录下的目录,以及当前目录下的隐藏文件即文件名前有一个.的文件)的权限,名称,属性等信息。其中每一列的大致含义如下:

image.png

第一列就是我们要的文件权限信息。它由10个字符组成:

  • 第一个字符-代表该文件的类型。-表示该文件是一个普通文件,如果是d则表示其是一个目录。还有其他几种文件类型如lb等本文就不介绍了,有兴趣可以自行去查阅
  • 从第二个字符开始到最后一个字符共九个字符按顺序分为三组,分别表示文件拥有者的权限类型,文件所属群组的权限类型,以及文件所属群组之外的其他用户的权限类型:
    image.png
    其中每组权限都由3个字符组成,分别表示读取权限,写入/修改权限,执行权限。即从左到右若第一个字符为r表示有读取权限,若第二个字符为w表示有写入/修改权限,若第三个字符为x则表示有执行权限,而若出现字符为-则表示没有对应的权限。因此上图中表示的权限信息为:对于该文件,文件拥有者有读/写权限,而文件所属群组的其他成员以及群组外的其他用户都只有读取权限

文件与目录权限的区别

正如前面所说,当我们用ls -al命令列出文件信息时可以看到目录和文件都有一样的权限类型展示,这里需要注意r wx(即读取,写入,执行)针对文件和目录表示的含义是不同的。
对于文件来说,有读取权限表示可以查看的内容,有写入权限表示可以对文件的内容修改(包括清空,修改,添加内容,但不能删除文件),有执行权限表示可以执行该文件(但是具体执行成不成功又文件内容决定)。
对于目录来说,有读取权限表示可以查看该目录下的文件名列表(但不一定能读取目录下文件内容),有写入权限表示可以对目录的结构修改(修改目录名,删除或创建文件等,但不能修改文件内容),有执行权限表示可以进入该目录。
直观的用表格对比如下:

读取(r) 写入(w) 执行(x)
文件 查看文件内容 修改文件内容 执行文件
目录 查看目录文件列表 删除创建目录下文件 进入目录

用户与群组

现在我们知道了怎么查看一个文件的权限信息,并且知道一个文件包含了三组权限(文件拥有者的权限,文件所属群组的权限,群组外其他用户的权限)。这三组权限有什么区别呢?在什么时候应该看哪组权限?要解决这个问题我们就需要先了解用户与群组

为什么会有多用户?

我们大部分人都拥有自己的个人电脑,不管是台式机也好,笔记本也好,基本都是自己在用,也就是通常只有‘自己’这么一个用户。但实际上我们的操作系统通常都是能够支持多个用户一起使用的,Linux作为一个多用户多任务的系统,常常会有多人同时使用这台机器工作。考虑到每个人在工作中的职能角色不同,需要对每个人的资源做隐私保护,以及支持个人拥有自己喜好的工作环境,多用户就起了非常大的作用。

为什么会有多群组?

群组的主要功能就是为团队划分资源。想象一下你的公司有高层管理也有普通员工都会用到同一台机器工作,这台机器上放着公司的一些机密文件,这些机密文件只有高层管理才能查阅,而普通员工不允许查看,群组正好解决了这样的问题。我们可以把高层管理用户放在‘领导’群组中,普通员工都归到‘普通员工’群组中,并将机密文件的权限只对‘领导’群组开放,这样就能通过限制权限为不同群组的用户划分资源。

修改文件属性与权限

为了演示,首先使用touch命令在当前目录创建一个空文件,并用ls -l命令查看该文件等属性及权限:

[root@localhost ~]# touch test
[root@localhost ~]# ls -l test
-rw-r--r--. 1 root root 0 11月 25 19:59 test

可以看到test文件等拥有者是root,对其他用户只有读取权限。这里要特别说明,由于root账户是拥有最高管理权限的超级管理员账户,因此即使文件拥有者的权限显示为rw-(读取和写入),但对于root账户其实都有着全部rwx权限。

修改文件拥有者

使用chown命令可以修改文件拥有者:

[root@localhost ~]# chown yousiku test
[root@localhost ~]# ls -l test
-rw-r--r--. 1 yousiku root 0 11月 25 19:59 test

这里我将test文件拥有者改为我的另一个账户yousiku,大家在对照演示时需注意将账户名换成自己的账户。

修改文件所属群组

使用chgrp命令修改文件所属群组:

[root@localhost ~]# chgrp yousiku test
[root@localhost ~]# ls -l test
-rw-r--r--. 1 yousiku yousiku 0 11月 25 19:59 test

同样的需注意将群组名换为自己的。

修改文件权限

使用chmod命令修改文件权限,该命令支持两种方式修改:数字参数方式和字符参数方式

数字参数方式修改文件权限

我们现在已经知道,文件的权限由9个字符表示,如rw-r--r--,而这9个字符又可以分为三组分别表示文件拥有者,文件所属群组及其他用户的权限。现在我们要将每个字符都转化成一个数值,并将一组数值相加得到一个数字来表示一组权限,各字符对应值如下:

r w x -
4 2 1 0

因此,rw-r--r--可以表示为644,因为第一组rw-对应的数值分别为4,2,0,相加为6;第二组r--对应属之分别为4,0,0,相加为4,第三组同第二组,因此最终表示结果为644。
所以,如果我们想将该文件的权限改为rwxrw-rw-,则应先算出表示该权限的数字为766,然后使用chmod命令:

[root@localhost ~]# chmod 766 test
[root@localhost ~]# ls -l test
-rwxrw-rw-. 1 yousiku yousiku 0 11月 25 19:59 test

这样就成功将该文件权限改写为拥有者有全部权限,其他用户都有读取和写入权限了。

字符参数修改文件权限

字符参数修改权限采用“给用户类型赋值”的方式,如,想要将文件拥有者的权限设为读取和写入,则采用字符参数u=rw;若想在修改拥有者权限的同时修改群组的权限为读取和执行,则采用字符参数u=rw,g=rx

[root@localhost ~]# chmod u=rw,g=rx test
[root@localhost ~]# ls -l test
-rw-r-xrw-. 1 yousiku yousiku 0 11月 25 19:59 test

这里的u表示文件拥有者(user),g表示群组(group),需注意字符参数里不能含有空格。用户类型共有四种:

  • u (user) 文件拥有者
  • g (group) 文件所属群组
  • o (others) 其他用户
  • a (all) 所有用户

除了用=直接给用户类型赋值权限外,还可以使用+-给用户类型追加或减少权限:

[root@localhost ~]# ls -l test
-rw-r-xrw-. 1 yousiku yousiku 0 11月 25 19:59 test
[root@localhost ~]# chmod u+x,o-w test
[root@localhost ~]# ls -l test
-rwxr-xr--. 1 yousiku yousiku 0 11月 25 19:59 test

可以看到对文件拥有者追加了执行权限,对其他用户减少了写入权限

思维导图

至此,相信你已经对Linux的文件权限管理有了一定的理解,最后附上本文思维导图帮助整理知识结构:


image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容