linux学习笔记之--文件及目录权限

时间:2023-01-30 06:52:21

1.使用者、群组、其他人的概念。

使用者:即所谓的用户,在liunx下,是支持多用户同时使用的,所以每个用户登录系统都拥有自己的独立空间。在系统上所做的操作也就留下了自己的独特标签。比如,对文件或者目录的新增,文件的属性会符加上使用者的账户,如果不开放权限给别人,就只有你自己能查看修改。

群组:打个比方,两个开发团队,各开发名称为project1及project2的项目,并且是具有竞争性的,所以,两个团队成员的资源是不能共享,两个团队就相当于两个群组。各团队成员就只能查看本团队的资源,但是却有可以查看两个团队资源的用户,那就是老板,老板当然要都能查看所有的资料,他是属于两个群组的。在linux里,每个用户是可以属于多个群组的。

其他人:即不在群组内的其他用户,这个是相对而言的概念,就上面的例子,project1团队的成员相对于project2的成员来说就是其他人,反之变然。

2.文件权限的概念。

用root登录系统后,在某目录下使用命令ls -al,即可得到类似下图

linux学习笔记之--文件及目录权限

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.对于没有写权限的文件,如果对所在目录有写权限,这个文件可以被删除。