1.使用者、群组、其他人的概念。
使用者:即所谓的用户,在liunx下,是支持多用户同时使用的,所以每个用户登录系统都拥有自己的独立空间。在系统上所做的操作也就留下了自己的独特标签。比如,对文件或者目录的新增,文件的属性会符加上使用者的账户,如果不开放权限给别人,就只有你自己能查看修改。
群组:打个比方,两个开发团队,各开发名称为project1及project2的项目,并且是具有竞争性的,所以,两个团队成员的资源是不能共享,两个团队就相当于两个群组。各团队成员就只能查看本团队的资源,但是却有可以查看两个团队资源的用户,那就是老板,老板当然要都能查看所有的资料,他是属于两个群组的。在linux里,每个用户是可以属于多个群组的。
其他人:即不在群组内的其他用户,这个是相对而言的概念,就上面的例子,project1团队的成员相对于project2的成员来说就是其他人,反之变然。
2.文件权限的概念。
用root登录系统后,在某目录下使用命令ls -al,即可得到类似下图
ls 是『list』的意思,重点在显示文件的文件名与相关属性。而选顷『-al』则表示列出所有的文件详绅
的权限与属性 (包含隐藏文件,就是文件名第一个字符为『 . 』的档案)。
-rw-r--r-- 1 keyingbo keyingbo 658 2012-08-21 .zshrc
文件类型及权限 连结数 文件拥有者 文件所属群 文件大小 创建或修改日期 文件名称
1)文件类型及权限:-rw-r--r--
**第一个字符“-”代表文件的类型,这里为普通文件,如果为"d"则表示目录,“l”则表示连接文件,类似windows下的快捷方式,“b”表示装置文件里面可供存取的接口设备(可随机机存取),“c”表示装置文件里面的串行端口设备,例如键盘,鼠标(一次性读取装置)等。
**接下来以三个字符为一组,共三组的权限属性,以“rwx”三个参数的组合。其中,“r”代表可读,“w”代表可写,“x”代表可执行。这三者的位置是不会变的,如果没有某权限,则用“-”号代替。
第一组代为文件拥有都权限,以上面的例子说明,“rw-”,则代表文件使用者拥有读和写但没有执行的权限;
第二组代表同群组权限,以上面的例子说明,如果同为“keyingbo”群组的用户,则拥有可读但没有写及执行的权限;
第三组代表其他用户权限,即非本群组的权限,以上面为例,“r--”,则拥有可读但没有写及执行的权限;
2)连结数“1”,有多少文件连结到此节点(i-node);
3)文件拥有者,以上面为例,文件拥有者为“keyingbo”;
4)文件所属群组,以上面为例,文件所属群组为“keyingbo”;
5)文件大小,以上面为例,“658”即为658bytes,默认单为即为byte;
6)创建或最近修改日期;
7) 文件名称;
3.文件权限的重要性。
1)系统保护功能:有些系统服务或者配置文件,只能由root用户才能执行或者修改,所以有些文件的属性会设为“-rw-------”;
2)共享数据功能:如果我们需要共享资给同群组的人使用,但是又不能公开给非群组的用户,则我们的文件一般会设为“-rwxrwx---”;
4.改变文件权限的几个命令简介。
1)chown,改变文件拥有者,格式为:
chown [-cfhvR] [--help] [--version] user[:group] file...
user : 新的档案拥有者的使用者 ID
group : 新的档案拥有者的使用者群体(group)
-c : 若该档案拥有者确实已经更改,才显示其更改动作
-f : 若该档案拥有者无法被更改也不要显示错误讯息
-h : 只对于连结(link)进行变更,而非该 link 真正指向的档案
-v : 显示拥有者变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的拥有者变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本
例 如,只是想将文件keyingbo.txt的所拥有者改为bobo,则执行chown bobo keyingbo.txt;
2)chgrp,改变文件的所属群组,格式为:
chgrp [选项] group filename?
该命令改变指定指定文件所属的用户组。
其中group可以是用户组ID,也可以是/etc/group文件中用户组的组名。
文件名是以空格分开的要改变属组的文件列表,支持通配符。如果用户不是该文件的属主或超级用户,则不能改变该文件的组。
该命令的各选项含义为:
- R 递归式地改变指定目录及其下的所有子目录和文件的属组
例如,想将文件keyingbo.txt的所属组群改为root,则执行chgrp root keyingbo.txt;
3)chmod,改变文件的权限。
Linux chmod 命令
功能说明:
变更文件或目录的权限。
语 法:
chmod [-cfRv][--help][--version][<权限范围>+/-/=<权限设置...>][文件或目录...]
或 chmod [-cfRv][--help][--version][数字代号][文件或目录...]
或 chmod [-cfRv][--help][--reference=<参考文件或目录>][--version][文件或目录...]
补充说明:
在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。您可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果您对符号连接修改权限,其改变会作用在被连接的原始文件。权限范围的表示法如下:
u:User,即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All,即全部的用户,包含拥有者,所属群组以及其他用户。
有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
s:特殊?b>功能说明:变更文件或目录的权限。
参 数:
-c或--changes 效果类似"-v"参数,但仅回报更改的部分。
-f或--quiet或--silent 不显示错误信息。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或--verbose 显示指令执行过程。
--help 在线帮助。
--reference=<参考文件或目录> 把指定文件或目录的权限全部设成和参考文件或目录的权限相同
--version 显示版本信息。
<权限范围>+<权限设置> 开启权限范围的文件或目录的该项权限设置。
<权限范围>-<权限设置> 关闭权限范围的文件或目录的该项权限设置。
<权限范围>=<权限设置> 指定权限范围的文件或目录的该项权限设置。
chmod用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。该命令有两种用法。一种是包含
字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
**文字设定法
语法:chmod [who] [+ | - | =] [mode] 文件名
命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
r 可读。w 可写。x 可执行。
X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t 保存程序的文本到交换设备上。
u 与文件属主拥有一样的权限。
g 与和文件属主同组的用户拥有一样的权限。
o 与其他用户拥有一样的权限。
文件名:以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。例如:
chmod g+r,o+r example % 使同组和其他用户对文件example 有读权限。
**数字设定法
我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可执行权限, 2表示可写权限,4表示可读
权限,然后将其相加。所以数字属性的格式应为3个从0到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字设定法的一般形式为:
语法:chmod [mode] 文件名
指令实例:
chmod a+x sort
% 即设定文件sort的属性为:
文件属主(u) 增加执行权限
与文件属主同组用户(g) 增加执行权限
其他用户(o) 增加执行权限
chmod ug+w,o-x text
% 即设定文件text的属性为:
文件属主(u) 增加写权限
与文件属主同组用户(g) 增加写权限
其他用户(o) 删除执行权限
chmod u+s a.out
% 假设执行chmod后a.out的权限为(可以用ls – l a.out命令来看):
–rws--x--x 1 inin users 7192 Nov 4 14:22 a.out
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw-------”,
即该文件只有其属主具有读写权限。当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
chmod a–x mm.txt
chmod –x mm.txt
chmod ugo–x mm.txt
% 以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
$ chmod 644 mm.txt
% 即设定文件mm.txt的属性为:-rw-r--r--
文件属主(u)inin 拥有读、写权限
与文件属主同组人用户(g) 拥有读权限
其他人(o) 拥有读权限
chmod 750 wch.txt
% 即设定wchtxt这个文件的属性为:-rwxr-x---
文件主本人(u)inin 可读/可写/可执行权
与文件主同组人(g) 可读/可执行权
其他人(o) 没有任何权限;
5.目录权限的意义。
目录 权限的rwx与文件权限是不一样的。
r (read):目录的读权限位意味着可以列出其中的内容;
w (write):写权限位意味着可以在该目录中创建文件;
x (eXecute):执行权限位则意味着搜索和访问该目录(cd)。
r--权限:单独有读权限不能执行ls命令,ls dir需要同时有这个dir的r-x权限。
-w-权限:光有写权限什么事也不能干。创建文件要有-wx权限。
--x权限:光有x权限可以进入该目录,可以cd dir,
如果对某一文件有读权限,可以ls dir/xfile,cat dir/xfile.
如果对某一文件有写权限,可以vi dir/xfile,(没有读权限的时候)然后可以以覆盖的形式保存。
如果对某一文件有执行权限,可以dir/xfile执行该文件。
假设dir下有一个文件file,某用户对file的文件的权限为rwx,而dir为--x,那么用户可以通过路径的方式 ……/dir/file执行该file文件,通过vi编辑该文件,因为该目录是可以访问的。
但是该用户cd该目录后不能ls,但是可以ls dir/file.
假设dir下有一个文件file,某用户对file的文件的权限为rwx,而dir为rw-,那么该用户无法通过路径的方式 ……/dir/file执行该file文件,无法通过vi编辑该文件,因为该目录是不可以
问的(无法cd进入该目录)。同时也不能在该目录下建立新文件,虽然看起来已经有w的权限。如果某个用户对文件夹/AA/BB/CC 有rwx的权限,如果想正常操作CC文件夹,对AA和BB都必须有x权限。
所以目录对组合其他用户一般都设为r-x.
对于文件来说,如果要想一个文件的x权限起作用,同时必须有r权限。
对于目录设w权限给别的用户的危险性:在用户Locke拥有的目录…/treaties下有一个文件叫twotreatiesOnGrv,然后Locke给这个文件限制为别的用户不能写,但是别的用户对treaties目录却有写权限,那么别人,比如说,Plato还能不能写twotreatiesOnGrv这个文件呢,答案是,不能但又能,Plato不能直接,比如vi来改这个文件(但是w!twotreatiesOnGrv 也可以覆盖这个文件),但是他可以通过mv 将一个别的文件到treaties目录下覆盖这个twotreatiesOnGrv.对于没有写权限的文件,如果对所在目录有写权限,这个文件可以被删除。