linux文件系统权限管理

一.文件权限

linux中,文件系统有自带有权限管理,针对资源(文件,目录,程序)去管理,我们先来看下针对文件的权限管理,通过ll查看一个文件,如下:

[root app]#ll a.txt 
-rw-r--r-- 1 root root 0 5月  27 11:10 a.txt

其中rw-r--r--.就是这个文件的权限了,而后边的root root代表文件的属主和数组,我们先列一下。
权限:

  • r:read,读权限,可用4表示
  • w:write,写权限,可用2表示
  • x:execute,执行权限,可用1表示

文件所属:

  • u:属主,文件所有者,就是上边的第一个root
  • g:属组,文件所属者的主组,就是上边第二个root
  • o:其他,表示既不是文件属主也不是文件属组的其他用户,上边没有显示出来;

其实权限rw-r--r--是分为三段的,三个为一段。rw-为第一段,表示用户的属主的权限,r是读,w是写,-为空,所以这个文件的所有者权限就是读和写;第二段r--表示用户的属组的权限,只有r,后边为空,所以权限为只读;第三段为其他用户,权限也是只读。比如,feng用户是一个其他用户,我们切到这个用户,往文件里边写东西,会提示权限不够,如下:

[root app]#su feng
[feng app]$echo "haha" >> a.txt 
bash: a.txt: 权限不够

明白这些之后,我们就可以给文件更改权限了,命令为chmod,比如要让feng用户拥有给a.txt写的权限,就这样写:

[root ~]#chmod u=rw,g=r,o=rw a.txt

然后ll a.txt看一下结果:

[root ~]#ll a.txt 
-rw-r--rw-. 1 root root 12 5月  21 16:20 a.txt

验证下:

[root app]#su feng
[feng app]$echo "haha" >> a.txt
[feng app]$cat a.txt 
haha

没有提示错误,a.txt之前是空的,现在有内容了。当然只要给他加执行权限,可以用简单的写法:

[root app]#chmod o+w a.txt

或者直接用数字来表示,上面也提到过,r表示4,w表示2,x表示1,读写就是4+2为6,以此类推:

[root app]#chmod 646 a.txt 
[root app]#ll a.txt 
-rw-r--rw- 1 root root 5 5月  27 11:24 a.txt

另外我们也可以修改文件的属主和属组,命令为chown和chgrp:

[root app]#ll b.txt 
-rw-rw-r-- 1 feng feng 0 5月  27 13:04 b.txt
[root app]#chown root b.txt 
[root app]#ll b.txt 
-rw-rw-r-- 1 root feng 0 5月  27 13:04 b.txt
[root app]#chgrp root b.txt 
[root app]#ll b.txt 
-rw-rw-r-- 1 root root 0 5月  27 13:04 b.txt

二.目录权限

通过上面的讲解,我们了解了文件的权限,现在来看点不一样的地方:将a.txt换成其他用户只读,然后用feng用户删除a.txt,因为feng用户没有w权限,所以删除不了。然而,结果并不是这样:

[root app]#chmod o-w a.txt 
[root app]#ll a.txt 
-rw-r--r-- 1 root root 5 5月  27 11:24 a.txt
[root app]#su feng
[feng app]$rm -f a.txt 
[feng app]$ll a.txt
ls: 无法访问a.txt: 没有那个文件或目录

没有w权限的feng用户竟然删除了a.txt,这其实是另一层原因导致的。

文件名字其实是存于目录文件中的,而删除文件其实只是删除目录中的文件名和i节点编号,不会删除节点表和数据,所以删除文件只需要用户对目录有w权限就可以的。下面为目录权限的作用:

  • r: 可以使用ls查看此目录中文件列表
  • w: 可在此目录中创建文件,也可删除此目录中的文件
  • x: 可以使用ls -l查看此目录中文件列表,可以cd进入此

目录权限的设置更改和文件一样。要将目录下所有文件的权限包括目录都设成相同权限,可以用chmod -R来实现递归操作。但是目录一般都是需要x权限的,要不查看和进入操作都不能实现会很难受,而文件一般不会给x权限,递归操作就有点不方便了,这时,就需要X权限,他的作用是在递归授权的时候,只给目录加上x权限,而文件不加,如下:

[root app]#chmod -R a=rwX /app
[root app]#ll -a /app
总用量 8
drwxrwxrwx.  2 root root 4096 5月  27 13:09 .
dr-xr-xr-x. 30 root root 4096 5月  27 10:03 ..
-rw-rw-rw-   1 root root    0 5月  27 13:09 1.txt
-rw-rw-rw-   1 root root    0 5月  27 13:09 2.txt
-rw-rw-rw-   1 root root    0 5月  27 13:09 3.txt

三.特殊权限SUID,SGID,Sticky

SUID

当一个用户想要运行一个程序时,需要拥有这个程序文件的执行权才可以执行,有些程序普通用户是没有执行权限的,比如说创建用户的useradd:

[root app]#ll /usr/sbin/useradd 
-rwxr-x---. 1 root root 111320 5月  11 2016 /usr/sbin/useradd
[root app]#su feng
[feng app]$useradd haha
bash: /usr/sbin/useradd: 权限不够

而当一个用户执行了一个程序的时候,这个生成的进程的属主就变成了这个用户,和程序文件本身属于谁没关系,比如我们用feng用户执行cat,用ps查看进程,看到进程的属主是feng:

[root ~]#ps aux|grep cat
feng       3513  0.0  0.0 100952   556 pts/0    S+   14:10   0:00 cat

所以,不同的用户发起的进程,权限是不同的。这样就带来一个问题,比如我们要给自己的账号修改密码,虽然用的是passwd这个命令,但是最终结果会写到/etc/shadow这个文件,普通用户对他是没有任何权限的,我们看一下:

[root app]#ll /etc/shadow
-r-------- 1 root root 1953 5月  26 14:15 /etc/shadow

所以就会导致普通用户修改自己账户的密码都没有这个能力,这就是很尴尬的事情了,但事实是普通用户可以修改自己的密码的,因为系统给passwd这个命令设置了特殊权限,我们来看下:

[root app]#type passwd
passwd is /usr/bin/passwd
[root app]#ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 30768 11月 24 2015 /usr/bin/passwd

其中,用户属主的第一段为rws,这个s就是特殊权限SUID,他的用途就是将执行进程的用户变成程序文件属主,由于/usr/bin/passwd这个程序文件的属主为root,所以,不管哪个用户执行这个程序,进程属主都是root,这样就可以做到每个用户都可以修改自己的密码写入/etc/shadow中。如下,我们用feng用户执行passwd程序,用ps aux看下进程属主是root而不是feng:

[feng app]$passwd
更改用户 feng 的密码 。
为 feng 更改 STRESS 密码。
(当前)UNIX 密码:
[root ~]#ps aux|grep passwd
root       3661  0.0  0.1 165652  1916 pts/0    S+   14:45   0:00 passwd
root       3665  0.0  0.0 103344   856 pts/1    S+   14:45   0:00 grep passwd

SUID只能作用在二进制可执行文件上才有意义,给文件加减SUID得语法为chmod u+s FILE和或者用数字表示chmod 4755 FILE,第一个4为SUID。

SGID

SGID也可以作用在可执行二进制文件上,代表执行这个程序的用户自动变成文件属组用户,拥有文件属组的权限。语法为chmod g+schmod 2755
另外,SGID还可以作用在目录上,让目录中新建的文件继承父目录的所属组,如下:

[root app]#chmod g+s /app
[root app]#ll -d /app
drwxrwsrwx. 2 feng feng 4096 5月  27 15:07 /app
[root app]#cd /app/
[root app]#touch test
[root app]#ll test
-rw-r--r-- 1 root feng 0 5月  27 15:09 test

Sticky

我们来考虑一个问题,当几个用户同时需要在一个目录下写文件时,他们肯定都拥有目录的写权限,但是这样就可以删除别的用户在这个目录下的文件。这时就需要Sticky来限制这种行为。
Sticky作用在目录上,作用就是让文件的属主才拥有删除文件的权利,别的用户对文件只能追加,不能修改和删除改名。语法为chmod o+t或者chmod 1755

注意

当基础权限中没有x权限时,s和t权限显示都会变成大写S和T。

umask

创建文件和目录时,有个默认的权限,文件为644,目录为755.这是因为有个叫umak的东西,我们可以理解成权限的掩码,用umask查看默认掩码:

[root app]#umask
0022

而由于文件x权限比较危险,所以文件最高权限为666,目录最高权限为777,然后默认umak为022.所以文件的默认权限就是666减去022,就是644了,目录同理为755.
那么问题又来了,我们将文件最高权限设为666就是不想让文件拥有x权限,但是假如将umak设为013呢,默认创建的文件权限为653,是有执行权限的。但是事实是这样吗,我们来看下:

[root app]#umask 013
[root app]#umask
0013
[root app]#touch test2
[root app]#ll test2
-rw-rw-r-- 1 root feng 0 5月  27 15:43 test2

事实是新创建的用户并没有x权限,而是在掩码的基础上基数加1了。这其实是因为掩码的本质是用二进制异或运算的,我们也不需要太了解,只需要知道当掩码设为奇数时,文件得出的权限偶数不变,奇数加1就得出了最终结果。

用umak命令设置的掩码时保存在内存中的,系统重启就丢失,如果要自定义umask我们要写进开机启动文件中,在/etc/bashrc中或者用户家目录.bashrc等启动文件中将umask命令写入即可

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

推荐阅读更多精彩内容