图片 1

Linux文件权限

linux中目录与文件权限的意义

Linux安全性模型

  1. Linux使用User(用户)和Group(群组)控制使用者对文件的存取权限
  2. 用户使用账号和口令登录Linux
  3. 每个文件都有owner(所有者),并且owner属于某个Group
  4. 每个程序都有owner和Group

1. Linux文件的属性

关于Linux文件的属性的说明和设置请参考鸟哥Linux私房菜:Linux
的文件权限与目录配置

一、文件权限的意义

用户

  1. 每个用户都有一个唯一的User ID
  2. User的信息存储在/etc/passwd
    1)存储用户名用户名和home目录等信息
    2)密码存储在/etc/shadow
  3. Linux文件权限。每个User都有一个home目录
  4. User未经授权将禁止读写或执行其他User的文件
  5. root用户解读
    1)它是超级管理员账号,拥有至高无上的权限
    2)一般不要随意使用root登录操作系统

2. 目录和文件的权限意义

在Linux系统中,每个文件都有三种身份的权限配置,而每个身份都有三种权限(rwx)。这三种权限对于普通的文件很好理解,如下表所示,

表格 1 普通文件的rwx权限位意义

权限

说明

r

文件内容可读

w

文件内容可修改

x

文件可执行

 在Window系统中,文件是否可执行是通过文件扩展名来进行识别,例如.exe或.bat等。而在Linux系统下,文件扩展名只是为了给用户直观说明文件内容的类型而已,文件是否可执行则是通过是否设置了x权限位来决定的(当然,你如果非要给一个不能执行的普通文本文件设置成可执行,那我也没办法,事实上它也执行不了)。

 对于目录的rwx权限位则需要特殊进行说明了。

class=”text_import2″>目录主要的内容在记录文件名列表,文件名与目录有强烈的关连啦!
所以如果是针对目录时,那个 r, w, x 对目录是什么意义呢?

  • r (read contents in directory):
    表示具有读取目录结构列表的权限,所以当你具有读取(r)一个目录的权限时,表示你可以查询该目录下的文件名数据。
    所以你就可以利用 ls 这个指令将该目录的内容列表显示出来!
  • w (modify
    contents of directory):
    这个可写入的权限对目录来说,是很了不起的! class=”text_import2″>
    因为他表示你具有异动该目录结构列表的权限,也就是底下这些权限:

    • 建立新的文件与目录;
    • 删除已经存在的文件与目录(不论该文件的权限为何!)
    • 将已存在的文件或目录进行更名;
    • 搬移该目录内的文件、目录位置。

    总之,目录的w权限就与该目录底下的文件名异动有关就对了啦!

  • x (access directory):
    咦!目录的执行权限有啥用途啊?目录只是记录文件名而已,总不能拿来执行吧?没错!目录不可以被执行, class=”text_import2″>目录的x代表的是用户能否进入该目录成为工作目录的用途!
    所谓的工作目录(work
    directory)就是你目前所在的目录啦!举例来说,当你登入Linux时,
    你所在的家目录就是你当下的工作目录。而变换目录的指令是『cd』(change
    directory)啰!

关于目录的r权限和x权限的验证测试:

下面我们通过对subdir目录进行操作来进行验证测试。目录subdir下具有两个文件file1和file2,

lienhua34@test$ ls -l subdir/
total 0
-rw-r--r-- 1 lienhua34 lienhua34 0 Dec 12 22:33 file1
-rw-r--r-- 1 lienhua34 lienhua34 0 Dec 12 22:33 file2

我们将subdir的所有者和所属群组都修改为root,而用户lienhua34不在群组root中,并将subdir的其他人权限设置成空,

lienhua34@test$ sudo chown -R root:root subdir
[sudo] password for lienhua34: 
lienhua34@test$ sudo chmod o-rx subdir
lienhua34@test$ ls -l
total 3
drwxr-x--- 2 root      root      4096 Dec 12 22:33 subdir 

此时用户lienhua34要进入该目录或者查看该目录下的文件列表均没有权限,

lienhua34@test$ cd subdir/
bash: cd: subdir/: Permission denied
lienhua34@test$ ls -l subdir/
ls: cannot open directory subdir/: Permission denied

我们将subdir的其他人权限添加r权限后,

lienhua34@test$ sudo chmod -R o+r subdir
lienhua34@test$ ls -l
total 4
drwxr-xr-- 2 root root 4096 Dec 12 22:33 subdir
lienhua34@test$ ls -l subdir
ls: cannot access subdir/file1: Permission denied
ls: cannot access subdir/file2: Permission denied
total 0
-????????? ? ? ? ?            ? file1
-????????? ? ? ? ?            ? file2
lienhua34@test$ cd subdir
bash: cd: subdir: Permission denied

有上面的执行结果,我们可以看到用户lienhua34对目录subdir具有r权限,其可以通过ls命令列出subdir目录下的文件列表。但是lienhua34没有权限获取该目录下的文件的属性,也没有权限进入该目录(因为用户lienhua34没具备对目录subdir的x权限)。现在我们给lienhua34赋予x权限,

lienhua34@test$ sudo chmod o+x subdir
lienhua34@test$ ls -l
total 4
drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir
lienhua34@test$ ls -l subdir
total 0
-rw-r--r-- 1 root root 0 Dec 12 22:33 file1
-rw-r--r-- 1 root root 0 Dec 12 22:33 file2
lienhua34@test$ cd subdir
lienhua34@subdir$ 

由上面的结果可见,lienhua34对subdir具有x权限之后,可以查看该目录下的文件属性,也可以进入该目录。如果你在某目录下不具有x的权限, 那么你就无法切换到该目录下,也就无法执行该目录下的任何指令,即使你具有该目录的r的权限。

 

关于目录的w权限的验证测试:

下面我们还是通过刚刚的subdir目录进行验证测试。首先用户lienhua34对目录subdir具有rx权限,而且对subdir目录下的文件没有任何权限,如下所示,

lienhua34@test$ ls -l
total 4
drwxr-xr-x 2 root root 4096 Dec 12 22:33 subdir
lienhua34@test$ cd subdir/
lienhua34@subdir$ ls -l
total 4
drw-r----- 2 root root 4096 Dec 12 23:18 dir1
-rw-r----- 1 root root    0 Dec 12 22:33 file1

此时用户lienhua34可以进入subdir目录,能够查看该目录下的文件列表。但无法查看该目录下的文件的内容,也无法增删文件或目录,

lienhua34@subdir$ cat file1
cat: file1: Permission denied
lienhua34@subdir$ touch file3
touch: cannot touch ‘file3’: Permission denied
lienhua34@subdir$ rm file1
rm: remove write-protected regular empty file ‘file1’? y
rm: cannot remove ‘file1’: Permission denied
lienhua34@subdir$ rmdir dir1
rmdir: failed to remove ‘dir1’: Permission denied
lienhua34@subdir$ mkdir dir2
mkdir: cannot create directory ‘dir2’: Permission denied

如果此时赋予用户lienhua34对目录subdir的w权限,则lienhua34便具有了改动目录subdir的目录结构权限。于是便可以增删文件或目录(不管用户lienhua34对这些目录具有什么权限)。

lienhua34@test$ sudo chmod o+w subdir
lienhua34@test$ ls -l
total 4
drwxr-xrwx 3 root root 4096 Dec 12 23:18 subdir
lienhua34@test$ cd subdir
lienhua34@subdir$ ls -l
total 4
drw-r----- 2 root root 4096 Dec 12 23:18 dir1
-rw-r----- 1 root root    0 Dec 12 22:33 file1
lienhua34@subdir$ rm file1
rm: remove write-protected regular empty file ‘file1’? y
lienhua34@subdir$ touch file2
lienhua34@subdir$ rmdir dir1
lienhua34@subdir$ mkdir dir2
lienhua34@subdir$ ls -l
total 4
drwxr-xr-x 2 lienhua34 lienhua34 4096 Dec 12 23:24 dir2
-rw-r--r-- 1 lienhua34 lienhua34    0 Dec 12 23:24 file2

由此可见目录的w权限如此之重要。切莫轻易给其他人开启目录的w权限。

(done)

r:可以读这个文件的具体内容;

用户群组

  1. 每个User都属于一个Group,具有唯一的标识符gid
  2. Group信息存储于/etc/group
    1)保存gid、成员等信息
    2)密码存储在/etc/gshadow
  3. 系统会为每个User关联一个和User同名的Group
    1)每个User至少存在于自己同名的Group中
    2)User也可以加入其他的Group
  4. 在同一个Group中的成员可以共享其他成员的文件

w:可以编辑这个文件的内容,包括增加删除文件的具体内容;

目录和文件的权限意义

Linux系统中的每个文件都有三种权限,分别是:读(read)、写(write)、执行(execute)。

  1. 权限对文件的作用
    r(read):读取文件内容,如读取文本的文字内容等
    w(write):可以编辑、新增、修改文件的内容,但不含删除该文件
    x(execute):具有被系统执行的权限。注意:在Linux中,文件是否能否被执行是由文件是否具有x权限决定的,与文件名的扩展名无关。
  2. 权限的目录的作用
    r(read contents in
    directory):具有读取目录结构列表的权限,与用户能否进入该目录无关。
    w(modify contents of
    directory):具有更改该目录结构列表的权限,包括新建文件或目录、删除文件和目录(不论该文件权限如何)、对文件或目录进行重命名、转移文件或目录位置。
    x(execute
    directory):具有进入该目录的权限,使该目录成为工作目录,即目前所在的目录。如果没有x权限,即使有r权限,也无法切换到该目录执行该目录下的命令。
  3. 总结
    对文件来说,最高权限是x
    对目录来说,最高权限是w

x:文件就具有了可执行的权限——-注意:这里和window不一样,在win中,文件的可执行权限是通过扩展名表现出来的,如exe、bat等,但是在linux中文件的可执行权限是通过这个x决定的,与文件名没有什么关系。

权限的设定

  1. 核心原则
    在最小权限的情况下,能够实现要求即可!
  2. 文件属性
    使用ls -l来查看文件的属性,如下:

-rw-r--r--. 1 root root 17 Sep 15 14:55 test.txt

对于第一列的-rw-r--r--.(即文件权限,没有相应的权限用-代替)解释如下:

图片 1

文件属性说明

第二列的数字1代表有多少文件名连接到此节点(i-node)。每个文件都将它的权限和属性记录到文件系统的
inode 中,不过文件名却是存放在目录文件中的。因此会有多个文件名连接到一个
inode 的情况,这就是硬链接,而该列就是指的硬链接数。
第三列代表文件/目录的所有者
第四列代表文件/目录的所属组
第五列代表文件的大小
之后分别是文件的修改时间、文件名

  1. 改变文件权限和属性
    1)改变文件所有者:chown(change owner)

[root@www ~]# chown [-R] 账号名称 文件名/目录名
[root@www ~]# chown [-R] 账号名称:组名 文件名/目录名
—R:进行递归,可修改子目录下的文件

2)改变所属用户组:chgrp(change group)

[root@www ~]# chgrp [-R] 文件名/目录名
—R:进行递归,可修改子目录下的文件

3)改变文件权限:chmod(change mode)

[root@www ~]# chmod [-R] mode 文件名/目录名
—R:进行递归,可修改子目录下的文件

Linux的基本权限有9个,即owner、group、others三种身份各有自己的r/w/x权限,三个为一组。各权限对应的数字是:r—>4,w—>2,x—>1.
每种身份(owner、group、others)的三个权限(r/w/x)分数是累加的,如-rw-r–r–转换数字是:

owner=rw-=4+2+0=6   group=r–=4+0+0=4  others=r–=4+0+0=4

所以该文件的权限数字是644

修改test.txt的权限为777
[root@www ~]# chmod 777 test.txt

参考教程:
http://www.jikexueyuan.com/course/565.html
http://www.imooc.com/view/481
如有错漏,欢迎指出

二、目录权限的意义

r:可以查看此目录下的完整文件列表信息。

w:可以对此目录下的所有的文件及目录进行相关的更改,也就是可以更改这个目录下的结构列表(这个要重视)
具体权利如下:

      可以在此目录下创建新的文件或目录;

      
可以在此目录下删除存在的文件或目录(不论该文件的权限是什么,这点要格外注意!!!!)

     可以重命名及改变文件或目录的位置。

x:目录没有可执行的权限,因此目录中x的功能就是允许别的用户进入这个目录。

   脚本之家提醒大家需要注意点:

 
这里有一个问题就是,有时候我们想和别人(同组,或other)共享一个文件的时候,你在改变了文件的权限后,对方还是不能看到的,因为别人进不了你的用户主目录,默认没有x权限。如果在这时你为了能让他看到这个文件而开放了x权限,别人就会进入这个目录里查看这个文件或者修改这个文件。如果这个人认为文件很好,想cp一份,那么他是没有权限的,以为目录默认也是没有w权限的,这里我们要特别注意:最好不要直接开放w权限,因为这样别人就可以随意更改此目录下的列表了(包括删除,删除是很危险的)。因此我们可以把这个文件cp一份,放到具有w权限的第三方目录下,对方也从这里cp,这样我们的主目录就不会受到任何影响了。

 这里有一个好笑的例子,一个系统管理员建了一个 重要.txt
的文件,为了防止别人对这个文件有所企图,于是乎管理员设置权限为-rex——,这个管理员认为万无一失了,就把这个文件随便放了一个目录下,心想就算别人看见这个文件也什么也干不了,但是如果此时这个目录具有w的权限,那么别人虽然不能对这个文件进行任何操作,但是他却对这个文件具有删除的权限,这个可是致命的。

下面给大家介绍 Linux的权限对于文件与目录的意义

 权限对文件的意义:

  r:可读取此文件的实际内容。 
 
w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件),如果没有r权限,无法w。 
  x :该文件具有被系统执行的权限。可以删除。 

权限对目录;

  r:read contents in directory。表示具有读取目录结构列表的权限。 
 w:modify contents in
directory。表示具有更改该目录结构列表的权限。如:新建文件与目录;删除已经存在的文件与目录(不论该文件的权限如何),将已经存在的文件或目录进行重命名,转移该目录内的文件、目录位置 
 x :access
directory。目录的x代表用户能否进入该目录称为工作目录的用途。 

以上所述就是本文给大家介绍的Linux中文件权限目录权限的意义及权限对文件目录的意义,希望本文分享对大家有所帮助。