Linux文件及权限

                               Linux文件及权限

1. 查看文件权限

(1).ls -l 命令 (ll命令)

显示详细信息

例:  

[root@localhost Desktop]# ll

total 178752

-rwxr-xr-x.  1 root   root        2092 Nov 20 13:05 1

drwx------.  4 root   root        4096 Jan 29  2016 1.22xiancheng2

drwx------.  5 root   root          54 Nov 24  2011 16计算机组成原理实验讲稿

-rw-r--r--.   1 root   root           0 Dec 21 22:14 1.c

注释:

上述“ls -l”的结果一共有 9 ,分为 7 个部分.下面从左向右对这 7 部分信息进行解释,

我们以 file1 文件为例:

(1)"-rw-r—r—.":文件权限信息,10 个字符(不要忽略最后一个字符.)

第一列的信息,它主要描述了文件的权限信息,可以看到一共有 11个字符

   第一个字母表示文件类型

普通文件

l    link链接文件,指向另一个文件,类似快捷方式

d   direct 目录文件

b   block块文件 硬盘 二进制文件

c   字符设备文件

s    socket套接字文件

p    命名管道文件

 共有3rwx

u所属用户  g所属组  o不同组的其他用户

r4) 读    w 2)写  x1)可执行

rwx =4+2+1= 7

(2)"1":文件的连接数(在软链接和硬链接中会进行讲解)

(3)"root":文件所属用户。

(4)"root":文件所属的组。

(5)"54":文件容量(默认单位为 bytes)

(6)"Nov 20 13:05":这个文件的创建日期或者是最近一次的修改日期。

(7)"f1.c":文件名称。

2..权限及修改权限命令

  在修改文件权限方面 linux 为我们提供了以下 3 个命令:

 chown  改变文件的拥有者

 chgrp   改变文件所属的组

 chmod  改变文件的权限,SUIDSGID

1)。修改文件的拥有者

     例:chown haha file

   file的所属改用户为haha

          chown  root.haha file

   " . "前表示文件所属用户,后表示文件所属组,也可以用代替

 2)。修改文件所属组

      例: chgrp haha file

  (3)。改变文件权限

格式:chmod  u=rwxg=rw,o=r  file  设定

chmod +x file     加入

chmod g-r file     除去

chmod 666 file

 

3.三种特殊权限的管理:SUIDSGIDSBIT

 SUID(Set UID)

s 这个标志出现在文件拥有者 x 权限上时,此时就被称为 Set UID,简称为 SUID 的特殊权限。 那么 SUID 的权限对于一个文件有这样的限制和功能:

(1)SUID 权限仅对二进制程序(binary program)有效;

(2)执行者对于该程序需要具有 x 的可执行权限;

(3)本权限仅在执行该程序在的过程中有效 (run-time);

(4)执行者将具有该程序拥有者 (owner) 的权限。

,注意:非常关键的是,SUID 所针对的只能是二进制文件,而不是可执行文件,例如 shell

脚本就不可以被赋予 SUID 的权限。

  SGID

SGID 可以针对文件或者目录进行设定。

(1) 如果 SGID 针对的是文件的话有以下限定:

SGID 对二进制程序有用;程序执行者对于该程序来说,需具备 x 的权限;

执行者在执行的过程中将会获得该程序群组的支持

(2)如果 SGID 使用在目录上,它将具有以下的功能:

用户对于此目录具有 r x 的权限时,该用户能够进入此目录。

用户在此目弽下癿有效群组(effective group)将会变成该目弽癿群组;

若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件的

所属组与此目录的组群相同。

 Sticky Bit

这个权限只针对目录有效,对于文件是没有效果的,简称为 SBITSBIT 对于目录的作用是:

(1) 当用户对于此目录具有 r x 的权限时,该用户能够进入此目录。

(2) 当用户在该目录下建立文件时,只有自己和 root 能够进行删除,其他用户不能够

进行删除。

SUIDSGID SBIT 权限的设定:

(1) 使用符号进行设定:

SUID ====>chmod u+s 二进制文件

SGID ====>chmod g+s 目录或者二进制文件

SBIT ====>chmod  o+t 目录

(2) 使用数字进行设定:

4 SUID

2 SGID

1 SBIT

可以使用 chmod 进行赋值,以前我们文件权限的修改是三位数字(例如:777),如果要添加上 SUID 的权限,则为四位数字:4777,添加 SGID SBIT 的方法类似。

 

4.设置文件与目录的默认权限

linux 操作系统中文件的预设权限由 umask 值决定,文件和目录的默认权限是有所区别的:

(1).文件的 x 权限默认情况下是被取消的,也就是说文件默认的满权限是 666。主要考虑

以下两个原因:

1)一般情况下文件只起记录的作用,所以能够进行读写即可。

2)取消 x 权限也是出于安全的考虑。毕竟直创建的文件就可以执行脚本是非常危险的隐患。

(2).目录的满权限是包含 x ,也就是 777

(3).文件和目录的初始权限就是由其满权限减去 umask 值决定的。在文件/etc/profile 文件中我们对 umask 值进行了设置:

  只有当用户的 id 大于 199,并且用户名称和其组名称相等的时候,它的 umask 值为002,使用 666 777 分别减去 002 会得到结果

 

5.软链接与硬链接

1)。hard Link(硬链接,或者称作实体链接)

在了解硬链接之前我们需要清楚以下几个知识:

1) 每个文件都会占用一个 inode ,文件内容由 inode 的记录来指向;

2) 想要读取该文件的内容,必须通过目录所记录的文件名来找到正确的 inode 号进行读取。

接下来我们举例建立一个文件的硬链接:

我们设置了/mnt/crontab /etc/crontab 的硬链接文件,通过列出详细信息可以发现二者的inode 号是相同的,而且链接数目变为了 2。通过 1 2 的目录的 inode 号找到指定的块(block),在这两个块中有不同的文档名,但是这两个文档名都可以指定 real 这个 inode 号去找到最终读取的数据。

使用硬链接时,磁盘空间和 inode 数量都不会发生变化。硬链接只是在所指定的目录的block 多写入一个关联数据,既不会增加 inode 数也不会耗用 block 数。

硬链  接的使用有以下限制:

1) 不能跨越文件系统;

2) 不能对目录进行硬链接;

解释:

跨越文件系统会造成链接上的错乱,而如果使用 hard link 链接到目录时, 链接的数据需要连同被链接目录底下的所有数据都要建立链接,举例来说,如果你要将/etc 使用硬链接建立一个 /etc_hd 的目录时,那在 /etc_hd 底下的所有文件同时都与/etc 底下的文件要建立 hard link ,而不仅是两个目录名之间建立硬链接而已。

例:

 [root@localhost mnt]# ll -l /etc/crontab

-rw-r--r--. 1 root root 451 Dec 28  2013 /etc/crontab

[root@localhost mnt]# ln /etc/crontab ./crontab

[root@localhost mnt]# ll -i /etc/crontab

135288839 -rw-r--r--. 2 root root 451 Dec 28  2013 /etc/crontab

[root@localhost mnt]# ll -i ./crontab

135288839 -rw-r--r--. 2 root root 451 Dec 28  2013 ./crontab

[root@localhost mnt]#

 

2)。 soft Link(软链接,又称作符号链接)

通过软链接建立的文件是一个独立的文件,它相当于是一个指针。这个文件会让数据

的读取指向它 link 的文件。因为只是一种指向动作,如果软链接的源文件被修改,它进行读

取也会发生改变,如果源文件被删除,则链接文件无法进行读取了。

例:

[root@localhost c]# ln -s fork.c ./fork.c.bak

[root@localhost c]# ll -i fork.c

3190163 -rw-r--r--. 1 root root 393 Dec 10 14:55 fork.c

[root@localhost c]# ll -i fork.c.bak

137866169 lrwxrwxrwx. 1 root root 6 Jan  8 16:00 fork.c.bak -> fork.c

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值