2.Linux下权限简介

来源:互联网 发布:海量大数据 编辑:程序博客网 时间:2024/05/22 07:56
Linux是一款优秀的多任务多用户的操作系统,为了使各用户之间的工作高效,有序,Linux上面的用户,用户组,用户权限的概念是十分明确并且简单易用的。对一文件来说,用户可分为三类——owner,group和others。分别代表文件的所有者,和所有者同组的用户,和非同组用户。权限也分为三类——read,write和execute。分别为读,写和执行。在文件夹下,使用ls -l命令可查看文件不同用户相应的权限




屏幕上列出了所有可以显示的文件
第一列便是权限的相关内容,共十位字符,第一个字符代表文件是什么,是普通文件,目录,或者是链接文件等,这三类文件的表示分别是-,d,l,另外如果是可供存储的接口设备,则第一个字符是b,如果是字符型输入设备,如鼠标键盘等则为c。
后面的字符代表权限,r代表拥有读权限,w代表拥有写权限,x代表拥有执行权限。九个字符,三位一组依次代表了owner,group,others对本文件的权限。

第二列是连接数。
第三列就是文件所有者了,紧跟的第四就是文件所属的用户组。
第五六七列分别是文件大小,最后一次修改时间和文件名

这下就能看懂ls -l的全部内容了吧

下面我们重点看下权限部分

文件权限

1)对目录文件来说
r权限代表用户在文件外可以读到目录内部的文件,例如使用ls命令
w权限代表用户可以在目录内部进行创建删除目录,更改目录内的文件名,权力很大
x权限代表用户可以利用cd命令进去该目录下

2)对一般文件来说
r权限代表用户可以读取文件的实际内容,例如文本文件的字符内容
w权限代表用户可以编辑新增或修改文件的内容(但删除文件则需要具有对其所在目录具有w权限)
x权限代表用户可以执行该文件


执行权限是一个比较有意思的权限,如果你对一个文件有执行权限,如一个文本文件,但因为文件本身并不是可执行的文件类型,那么你也不能通过命令执行该文件。

在Windows操作系统中,系统通过文件的后缀名来决定文件是否可以执行,以何种方式执行,那么Linux是否也是这样呢?很遗憾,在Linux中,文件后缀名并不是这个作用,我们平时看到的例如.sh等后缀名仅仅是对文件进行标注,使用户可以明白文件作用,文件是否能够执行还是看用户对文件是否具有x权限。例如,我在安装Matlab时,有一步就是要执行一个脚本文件,用的命令就是./install并无后缀名

我们了解了权限的部分知识后,那么我们要表示一个用户对一个文件的权限该怎么表示呢?真的每次都要用九个字符吗?当然不是,我们有更简单的办法表示——用分值
什么?这也有分?学生党听起来十分亲切~
对的,没错,我们规定x权限为一分,w权限为两分,r权限为四分,总分七分。例如,我们说/home/Documents目录文件的权限为760,即文件所有者拥有读,写,执行权限,所有者所在用户组拥有读写权限,其他用户对此文件无权限

既然提到用分数,那我们每次用touch命令新建一个文件后,他的权限是什么样的呢?
这个就要提到文件的默认权限了

默认权限命令:umask
umask [-S]
-S 以字符表示
例如:umask -S

因为新建文件的权限与用户所在位置无关,也与用户新建的文件无关,所以在使用umask命令时,无需加上文件名

对于普通文件(-),系统默认开放所有用户的读写权限即权限为666,而目录文件(d),系统则开放了所有用户的所有权限,即权限为777。那么umask的用处在哪呢,你创建的新文件是系统默认开放的权限减去umask的值。
设定umask的值

umask 设定值
例如,umask 0022(第一位是特殊权限,先不要管),那么新建普通文件的权限就是744,新建目录文件的权限就是755。

说了这么多,好像权限的概念对我们来说越来越清晰,越来越可控了,对于系统管理员来说,管理不同用户的权限是一件在稀松平常不过的事了

等下,我们对权限的控制难道仅限于在创建新文件时吗,难道我们就不能管理已有文件的权限了吗?当然不是!

更改文件权限,属性

更改文件所在组命令:chgrp
chgrp [-R] 用户组名 文件名/目录名
-R 进行递归持续更改,即更改目录下的所有文件所在的用户组
例如:chgrp -R student /home
这样,便将/home及目录下所有的文件的用户组全部改为student

更改文件所有者命令:chown
1)chown [-R] 所有者名 文件名/目录名
2)chown [-R] 所有者名:所在用户组名 文件名/目录名
chown命令也可以方便的更改用户组名,格式就是第二种用法
-R 进行递归更改,如chgrp命令
例如:chown -R root:root /home

更改文件权限命令:chmod
chmod [-R] xyz 文件名/目录名
-R 进行递归更改,如chgrp命令
xyz这可有的说了,我们仔细看看

简单来说,xyz分别代表文件对三个群体的权限,如前面所说。我们现在知道权限有两种表示方式,一种是用字符表示,另外一种是用数字表示,数字比较简单,我们先来试试数字

例如:chmod 766 ~/.bashrc
这样变将主文件夹下的.bashrc文件的权限修改为755,十分简单

那么如果要用字符修改权限,要怎么改呢?

格式如下
例如:chmod u=rwx,go=rw ~/.bashrc
其中u为文件的所有者,g为用户组,o为其他用户。用简单的赋值号就可以完成权限的设置。
你有没有发现这样修改用户权限好“彻底”啊,每次都要重新设置所有的权限,如果只是微调权限,似乎这样做是有点不人性呢,难道没有微调的,稍微简便点的命令吗?当然有!
例如:chmod u+x ~/.bashrc
这样表示为文件所有者对.bashrc增加执行权限
常用字符含义
u:文件所有者
g:文件所在用户组
o:其他用户
a:所有用户
+:为该用户增加某项权限
-:为该用户取消某项权限


“你以为这样就结束了吗?”
“才没有呢~”
“天呐噜,还有啊。”
“放心,下面介绍的十分有意思~”

文件隐藏属性
隐藏属性是文件权限属性的十分有趣的部分,我们通过命令来看看

设置文件属性命令:chattr
chattr [+-=] [-ASacdisu] 文件名
+-=赋值法:与chmod的+-=赋值法相同
-A:访问该文件时不修改文件访问时间atime
-S:同步写入磁盘
-a:用户(包括root)只能增加文件内容,不能修改和删除数据
-c:文件以压缩方式存放,修改时解压
-d:文件不会被dump程序备份
-i:文件将会变为“死文件”,文件不能删除,不能创立链接,改名,并且无法改动其内部数据,是个大招
-s:如果删除此文件,则在主机中将不保留任何备份
-u:正与-s相反,如果删除此文件,主机中将保留备份
例如:chattr +i /home,命令生效后主目录将会被锁死!

至此除了文件特殊权限跟系统进程有关,以后再做介绍外,关于用户权限的部分基本介绍完了,是不是很有意思,赶快在自己的机子上试试吧^_^
0 0
原创粉丝点击