Linux下文件的权限
一、Linux下查看文件属性
命令为:
[root@localhost ~]# ls -al
结果:
ls是『list』的意思,重点在显示文件的文件名与相关属性。而选项『-al』则表示列出所有的文件详细的权限与属性 (包含隐藏档,就是文件名第一个字符为『 . 』的文件)。
total 224
dr-xr-x---. 27 root root 4096 Dec 16 20:31 .
dr-xr-xr-x. 22 root root 4096 Dec 16 20:30 ..
-rw-------. 1 root root 2688 Dec 15 12:23 anaconda-ks.cfg
-rw-------. 1 root root 1678 Dec 16 20:29 .bash_history
-rw-r--r--. 1 root root 18 May 20 2009 .bash_logout
-rw-r--r--. 1 root root 176 May 20 2009 .bash_profile
-rw-r--r--. 1 root root 176 Sep 22 2004 .bashrc
drwxr-xr-x. 4 root root 4096 Dec 16 01:01 .cache
drwxr-xr-x. 6 root root 4096 Dec 16 20:31 .config
-rw-r--r--. 1 root root 100 Sep 22 2004 .cshrc
drwx------. 3 root root 4096 Dec 15 20:55 .dbus
-rw-------. 1 root root 16 Dec 15 20:55 .esd_auth
drwx------. 4 root root 4096 Dec 16 20:31 .gconf
drwx------. 2 root root 4096 Dec 16 22:32 .gconfd
drwx------. 8 root root 4096 Dec 16 04:16 .gnome2
drwx------. 2 root root 4096 Dec 16 00:51 .gnome2_private
drwxr-xr-x. 3 root root 4096 Dec 16 01:03 .gnote
drwx------. 2 root root 4096 Dec 16 20:31 .gnupg
drwxr-xr-x. 2 root root 4096 Dec 16 01:02 .gstreamer-0.10
-rw-r--r--. 1 root root 160 Dec 16 20:31 .gtk-bookmarks
dr-x------. 2 root root 0 Dec 16 20:31 .gvfs
-rw-------. 1 root root 2480 Dec 16 20:31 .ICEauthority
-rw-r--r--. 1 root root 642 Dec 16 20:31 .imsettings.log
-rw-r--r--. 1 root root 41364 Dec 15 12:23 install.log
-rw-r--r--. 1 root root 9154 Dec 15 12:21 install.log.syslog
-rw-------. 1 root root 35 Dec 16 02:07 .lesshst
drwxr-xr-x. 3 root root 4096 Dec 15 20:55 .local
drwxr-xr-x. 4 root root 4096 Dec 16 00:51 .mozilla
drwxr-xr-x. 2 root root 4096 Dec 15 20:55 .nautilus
drwx------. 2 root root 4096 Dec 15 20:55 .pulse
-rw-------. 1 root root 256 Dec 15 20:55 .pulse-cookie
-rw-------. 1 root root 6166 Dec 16 04:49 .recently-used.xbel
drwx------. 2 root root 4096 Dec 15 21:00 .ssh
-rw-r--r--. 1 root root 129 Dec 3 2004 .tcshrc
drwx------. 3 root root 4096 Dec 16 04:34 .thumbnails
lrwxrwxrwx. 1 root root 33 Dec 16 01:01 .xinputrc -> /etc/X11/xinit/xinput.d/ibus.conf
drwxr-xr-x. 2 root root 4096 Dec 16 00:53 涓杞?
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 ?
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 彗
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 骀。
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 妗?
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 妯℃
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 瑙棰
drwxr-xr-x. 2 root root 4096 Dec 16 20:31 槌涔[0m
可以看到文件属性从左往右分为7列来显示:
比如:
drwxr-xr-x.【1】 4【2】 root【3】 root【4】 4096【5】 Dec 16 00:51【6】 .mozilla【7】
上述7列分别代表的意思如下:
① 第一列代表这个文件的类型与权限(permission):
仔细看会发现这一列有10个字符:
比如:上述示例文件中的:
drwxr-xr-x
I、第一个字符代表的是文件类型(目录或文件等),取值有如下几种:
- 当为[ d ]则是目录;
- 当为[ - ]则是文件;
- 若是[ l ]则表示为连结档(link file);
- 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
II、接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
- 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
- 第二组为『同群组的权限』;
- 第三组为『其他非本群组的权限』。
例:
答:
[-] [rwx] [r-x] [r--]
1 234 567 890
1 为:代表这个文件名为目录或文件,本例中为文件(-);
234为:拥有者的权限,本例中为可读、可写、可执行(rwx);
567为:同群组用户权力,本例中为可读可执行(rx);
890为:其他用户权力,本例中为可读(r)
同时注意到,rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)就是了。
② 第二列表示有多少文件或文件夹连结到此节点(i-node):
每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码。
③ 第三列表示这个文件(或目录)的『拥有者账号』
④ 第四列表示这个文件的所属群组
⑤ 第五列为这个文件的容量大小,默认单位为bytes。
⑥ 第六列为这个文件的建档日期或者是最近的修改日期。
⑦ 第七列为这个文件的文件名
比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏档』。
例题:
假设test1, test2, test3同属于testgroup这个群组,如果有下面的两个文件,请说明两个文件的拥有者与其相关的权限为何?
-rw-r--r-- 1 root root 238 Jun 18 17:22 test.txt -rwxr-xr-- 1 test1 testgroup 5238 Jun 19 10:25 ping_tsai 答:
|
二、 Linux下文件权限的重要性:
与Windows系统不一样的是,在Linux系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在『数据安全性』上面的。
- 系统保护的功能:
举个简单的例子,在你的系统中,关于系统服务的文件通常只有root才能读写或者是执行,例如/etc/shadow这一个账号管理的文件,由于该文件记录了你系统中所有账号的数据, 因此是很重要的一个配置文件,当然不能让任何人读取(否则密码会被窃取啊),只有root才能够来读取啰!所以该文件的权限就会成为[
-rw------- ]啰! - 团队开发软件或数据共享的功能:
此外,如果你有一个软件开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件, 而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup的团队共有三个人,分别是test1, test2, test3,那么我就可以将团队所需的文件权限订为[
-rwxrwx--- ]来提供给testgroup的工作团队使用啰! - 未将权限设定妥当的危害:
再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面乱搞啰! 例如本来只有root才能做的开关机、ADSL的拨接程序、新增或删除用户等等的指令,若被你改成任何人都可以执行的话, 那么如果使用者不小心给你重新启动啦!重新拨接啦!等等的!那么你的系统不就会常常莫名其妙的挂掉啰! 而且万一你的用户的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些root的工作!
可怕吧!因此,在你修改你的linux文件与目录的属性之前,一定要先搞清楚, 什么数据是可变的,什么是不可变的!千万注意啰!接下来我们来处理一下文件属性与权限的变更吧!
三、Linux下文件属性与权限的修改
我们现在知道文件权限对于一个系统的安全重要性了,也知道文件的权限对于使用者与群组的相关性, 那么如何修改一个文件的属性与权限呢?又!有多少文件的权限我们可以修改呢? 其实一个文件的属性与权限有很多!我们先介绍几个常用于群组、拥有者、各种身份的权限之修改的指令,如下所示:
- chgrp :改变文件所属群组
- chown :改变文件拥有者
- chmod :改变文件的权限, SUID, SGID, SBIT等等的特性
① 改变所属的群组:使用 chgrp命令
改变一个文件的群组,使用 chgrp 命令 (即change group的缩写),不过要注意一点,要被改变的组名必须要在 /etc/group 文件内存在才可以,否则会显示错误。
例:
[root@localhost softwore]# ls -al
total 134856
drwxr-xr-x. 2 root root 4096 Dec 16 20:16 .
drwxr-xr-x. 16 root root 4096 Dec 16 20:41 ..
-rw-r--r--. 1 root root 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm [root@localhost softwore]# chgrp elgin jdk-7u79-linux-x64.rpm
[root@localhost softwore]# ls -al
total 134856
drwxr-xr-x. 2 root root 4096 Dec 16 20:16 .
drwxr-xr-x. 16 root root 4096 Dec 16 20:41 ..
-rw-r--r--. 1 root elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
对于 softwore文件夹下的 jdk-7u79-linux-x64.rpm 文件
开始他的文件属性中,群组为 root ,使用chgrp 命令之后 ,群组变为了 elgin
② 改变文件拥有者: chown 命令
使用此命令,需要注意的是, 用户必须是已经存在系统中的账号,也就是在/etc/passwd 这个文件中有记录的用户名称才能改变。
例:
[root@localhost softwore]# chown elgin jdk-7u79-linux-x64.rpm
[root@localhost softwore]# ls -al
total 134856
drwxr-xr-x. 2 root root 4096 Dec 16 20:16 .
drwxr-xr-x. 16 root root 4096 Dec 16 20:41 ..
-rw-r--r--. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
使用此命令后,上述文件的拥有者 变为了 elgin
注意:如果要改变整个目录的群组或者拥有者,可以在change命令后面加上 -R 作为参数(表示进行递归的变更) ,如: chgrp -R elgin softwore
③ 改变文件权限: chmod命令
文件权限的改变使用的是chmod这个指令,但是,权限的设定方法有两种, 分别可以使用数字或者是符号来进行权限的变更。下面分别进行说明:
A 、数字类型改变文件权限
- Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限, 先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0所以等一下我们设定权限的变更时,该文件的权限数字就是770啦!变更权限的指令chmod的语法是这样的:chmod 770 filename;
例:
[root@localhost softwore]# ls -al *.rpm
-rw-r--r--. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
[root@localhost softwore]# chmod 777 *.rpm
[root@localhost softwore]# ls -al *.rpm
-rwxrwxrwx. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
[root@localhost softwore]# chmod 644 *.rpm
[root@localhost softwore]# ls -al *.rpm
-rw-r--r--. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm<span style="color:#ff0000;">
</span>
将jdk的文件权限修改为 777 ,即 -rwxrwxrwx 再修改回原来的权限644 ,即 -rw-r--r--
B、符号类型改变文件权限
- 还有一个改变权限的方法呦!从之前的介绍中我们可以发现,基本上就九个权限分别是(1)user (2)group (3)others三种身份啦!那么我们就可以藉由u, g, o来代表三种身份的权限!此外,
a 则代表 all 亦即全部的身份!那么读写的权限就可以写成r, w, x!也就是可以使用底下的方式来看:chmod u
g
o
a+(加入)
-(除去)
=(设定)r
w
x文件或目录
例:
[root@localhost softwore]# chmod ugo=rwx *.rpm
[root@localhost softwore]# ls -al
total 134856
drwxr-xr-x. 2 root elgin 4096 Dec 16 20:16 .
drwxr-xr-x. 16 root root 4096 Dec 16 20:41 ..
-rwxrwxrwx. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
[root@localhost softwore]# chmod u=rw-,g=r--,o=r-- *.rpm
[root@localhost softwore]# ls -al
total 134856
drwxr-xr-x. 2 root elgin 4096 Dec 16 20:16 .
drwxr-xr-x. 16 root root 4096 Dec 16 20:41 ..
-rw-r--r--. 1 elgin elgin 138082565 Dec 16 20:08 jdk-7u79-linux-x64.rpm
同样,将jdk文件的权限修改为 -rwxrwxrwx ,再修改回原来的权限 -rw-r--r--
四、权限对于文件和目录的意义:
① 权限对文件的重要性
文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件(binary program)等等。 因此,权限对于文件来说,他的意义是这样的:
- r (read):可读取此一文件的实际内容,如读取文本文件的文字内容等;
- w (write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
- x (execute):该文件具有可以被系统执行的权限。
那个可读(r)代表读取文件内容是还好了解,那么可执行(x)呢?这里你就必须要小心啦! 因为在Windows底下一个文件是否具有执行的能力是藉由『
扩展名 』来判断的, 例如:.exe, .bat, .com 等等,但是在Linux底下,我们的文件是否能被执行,则是藉由是否具有『x』这个权限来决定的!跟档名是没有绝对的关系的!
至于最后一个w这个权限呢?当你对一个文件具有w权限时,你可以具有写入/编辑/新增/修改文件的内容的权限,
但并不具备有删除该文件本身的权限!对于文件的rwx来说, 主要都是针对『文件的内容』而言,与文件档名的存在与否没有关系喔!因为文件记录的是实际的数据嘛!
② 权限对目录的重要性
文件是存放实际数据的所在,那么目录主要是储存啥玩意啊?目录主要的内容在记录文件名列表,文件名与目录有强烈的关连啦! 所以如果是针对目录时,那个 r, w, x 对目录是什么意义呢?
- r (read contents in directory):
表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。 所以你就可以利用 ls 这个指令将该目录的内容列表显示出来! - w (modify contents of directory):
这个可写入的权限对目录来说,是很了不起的! 因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:- 建立新的文件与目录;
- 删除已经存在的文件与目录(不论该文件的权限为何!)
- 将已存在的文件或目录进行更名;
- 搬移该目录内的文件、目录位置。
总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!
- x (access directory):
目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途! 所谓的工作目录(work directory)就是你目前所在的目录啦!举例来说,当你登入Linux时, 你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change directory)啰!
Linux下文件的权限的更多相关文章
- 关于linux下文件的权限问题
今天在linux更新服务中的启动文件时,直接把更新的启动文件拷贝过来执行,报错:can't be execute 后来想了下列出了文件的详细信息中发现拷贝过去的执行文件是-r--r--r--(表示只有 ...
- Linux下文件特殊权限
SUIDSUID表示在所有者的位置上出现了s在一个命令的所有者的权限上如果出现了s,当其他人在执行该命令的时候将具有所有者的权限.SUID权限仅对二进制文件有效 SGID表示在组的位置上出现了s如果一 ...
- linux下文件特殊权限设置位S和沾附位T(转载)
今天在创建文件的时候,发现了文件权限末尾有个T,之前没留意过,后来又用c创建(open)了两个文件来查看,在我没有指定权限(省略open的第三个参数)的时候,有时还会出现S,虽然还没弄懂什么时候会出现 ...
- linux 下文件的权限
- LINUX下文件编译
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- Linux下文件的mtime/atime/ctime研究
概述 在Linux下,对于某一个文件或文件夹时间的描述有三种:文件修改时间mtime,文件访问时间atime,文件状态改变时间ctime.在Linux下无法获取到文件的创建时间,因为根本就没有保存这个 ...
- 学习笔记12—linux下文件的复制、移动与删除
查看centOS 版本 cat /etc/redhat-release 1,复制粘贴文件 cp [选项] 源文件或目录 目标文件或目录 2,剪切粘贴文件 mv [选项] 源文件或目录 ...
- linux 下文件重命名/移动/复制命令(转)
linux 下文件重命名/移动/复制命令(转) linux下重命名文件:使用mv命令就可以了, 例:要把名为:abc 重命名为:123 可以这样操作: 重命名:MV命令 1.进入你的文件目录,运行 ...
- Linux下文件的三个时间意义及用法
Linux下文件的三个时间参数: (1)modification time(mtime):内容修改时间 这里的修改时间指的是文件的内容发生变化,而更新的时间. (2)change tim ...
随机推荐
- Ios tab Bar 使用方法
http://blog.sina.com.cn/s/blog_63578f140100w56m.html UITabBar* tabBar = [[UITabBar alloc] initWithFr ...
- RecyclerView(6)自定义RecyclerView.LayoutManager
A LayoutManager is responsible for measuring and positioning item views within a RecyclerView as wel ...
- sort+结构体实现二级排序
之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法. 还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序 ...
- JPA中的@MappedSuperclass
说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 用来申明一个超类,继承这个类的子类映射 ...
- [Sciter系列] MFC下的Sciter–3.Sciter脚本与底层交互
[Sciter系列] MFC下的Sciter–3.Sciter脚本与底层交互,脚本调用底层自定义的方法函数. 本系列文章的目的就是一步步构建出一个功能可用,接口基本完善的基于MFC框架的SciterF ...
- 载入在线jQuery库
以百度库为例 <script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script&g ...
- Vagrant搭建Ubuntu-JavaEE开发环境——Tomcat+JDK+MySQL+dubbo+测试
Vagrant搭建(Tomcat8+JDK7+MySQL5+dubbo) JDK 1.下载jdk 2.解压JDK tar -xzvf jdk-7u79-linux-x64.tar.gz 3.设置环境变 ...
- Android 如何使用juv-rtmp-client.jar向Red5服务器发布实时视频数据
使用juv-client-client.jar主要是尽快地完成毕业设计里面手机端向网页端发送实时视频的功能,由于实习和做毕业设计的时间冲突,因此完成毕业设计只花了1个多月时间. (万恶的形式主义,论文 ...
- GreenDao官方文档翻译(上)
笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...
- spring aop expression简单说明
<aop:config> <aop:pointcut id="userDAO" expression="execution(public * cn.da ...