深入理解文件权限

## 查看文件、目录和设备的权限

例如,本人某目录下有如下文件:

$ ls -l
total 68
-rw-rw-r-- 1 craftor craftor 50 2013-06-02 09:31 file1
-rw-rw-r-- 1 craftor craftor 28 2013-06-03 15:40 file2
-rwxrwxr-x 1 craftor craftor 4881 2013-05-20 17:23 myprog
-rw-rw-r-- 1 craftor craftor 287 2013-05-20 17:23 myprog.c
drwxrwxr-x 2 craftor craftor 4096 2013-06-20 14:20 test1
drwxrwxr-x 2 craftor craftor 4096 2013-06-22 13:40 test2
$

输出结果的第一个字段是描述文件和目录的权限的码。这个字段的第一个字符代表的对象的类型:

- -代表文件

- d代表目录

- l代表链接

- c代表字符型设备

- b代表块设备

- n代表网络设备

之后有3组三字符的码。每一组三字符码表示三重访问权限:

- r代表对象是可读的

- w代表对象是可写的

- x代表对象是可执行的

如果没有某种权限,在该权限位会出现单破折线。这3组三字码分别对应对象的3个安全级别:

- 对象的属主

- 对象的属组

- 系统其他用户

如下图:

-rwxrwxr-x 1 craftor craftor 4882 2013-06-22 13:40 myprog

| | |

| | +----------其他用户的权限(r-x)

| +-------------属组用户的权限(rwx)

+----------------文件属主的权限(rwx)

## 默认文件权限

你可能会问这些文件权限从何而来,答案是umask。umask命令用来设置用户创建文件和目录的默认权限:

$ toucn test
$ ls -la test
-rw-rw-r-- 1 craftor craftor 0 Jun 25 10:50 test

touch命令用分配给我的用户账号的默认权限创建了这个文件。umask命令可以显示和设置这个默认权限:

$ umask
0002

其实,很容易理解umask的值。先看一下Linux权限码:

=======================================================

权 限 二进制值 八进制值 描 述

-------------------------------------------------------

--- 000 0 没有任何权限

--x 001 1 只有执行权限

-w- 010 2 只有写入权限

-wx 011 3 有写入和执行权限

r-- 100 4 只有读取权限

r-x 101 5 有读取和执行权限

rw- 110 6 有读取和写入权限

rwx 111 7 有全部权限

=======================================================

如果一个文件的权限码是rw-rw-rw-,那么对应的八进制值就是666,即所有人都可以读取和写入。

umask是个掩码。它屏蔽掉了不想授予该安全级别的权限。umask值会从对象的全权限值中减掉,对文件来说,全权限值是666;而对于目录来说,是777。所以,上面的例子中,文件一开始的权限是666,然后经umask值002作用后,变成了664。

可以使用umask命令为默认umask设置一个新值:

$ umask 026
$ touch test2
$ ls -la test2
-rw-r----- 1 craftor craftor 0 Jun 25 15:14 test2

在把umask值设成026后,默认的文件权限变成了640,因些新的文件在对属组成员来说是只读的,而系统里的其他成员没有任何权限。umask同样也会作用在创建目录上。

$ mkdir newdir
$ ls -l
drwxr-x--x 2 craftor craftor 4096 Jun 25 15:16 newdir

由于目录的默认权限是777,umask作用后生成的目录权限是777减支026,留下751作为目录权限。

## 改变权限

使用chmod命令可以改变文件或文件夹权限。格式为:

chmod options mode file

mode参数后可跟八进制数模式或符号模式来设置安全性。八进制模式设置非常直接,直接用期望赋予的标准的3位八进制权限码:

$ chmod 760 newfile
$ ls -l newfile
-rwxrw---- 1 craftor craftor 0 Jun 25 15:19 newfile

符号模式的权限就没这么简单了。与通常用到的3组三字符权限字符不同,chmod命令用了另外一种实现。下面是在符号模式下指定权限的格式:

[ugoa...][+-=][rwxXstugo...]

很有意思,不是吗?第一组字符定义了权限作用对象:

- u代表用户

- g代表组

- o代表其他用户

- a代表所有人

下一步,后面跟着的的符号是表示你是想在现有的权限基础增加权限(+),还是在现有权限基础上移除权限(-),还是将权限设置成后面的值(=)。

最后,第3个符号代表作用到设置上的权限。你会发现,这个值要比rwx多,额外的设置有以下几项:

- X: 如果对象是目录或者它已有执行权限,赋予执行权限

- s: 运行时重新设置UID或者GID

- t: 保留文件或目录

- u: 将权限设置为跟属主一样

- g: 将权限设置为跟属组一样

- o: 将权限设置为跟其他用户一样

例如:

$ chmod o+r newfile
$ ls -l newfile
-rwxrw-r-- 1 craftor craftor 0 Jun 25 15:31 newfile

不管其他用户在这一安全级别之前都有什么权限,o+r给这一级别添加了读取权限。

$ chmod u-x newfile
$ ls -l newfile
-rw-rw-r-- 1 craftor craftor 0 Jun 25 15:31 newfile

u-x移除了属主已有的执行权限。

如果是对于文件夹,可以加上-R参数,对所有文件夹下的文件和目录也起作用。

## 改变所属关系

有时候你需要改变文件的属主,比如有人离职或者开发人员创建了一个在产品环境中运行时需要归属在系统账户下的应用。Linux提供了两个命令来完成这个功能:chown命令用来改变文件的属主,chgrp命令用来改变文件的默认属组。

chown命令格式如下:

chown options owner[.group] file

可用登录名或UID来指定文件的新属主:

# chwon dan newfile
# ls -l newfile
-rw-rw-r-- 1 dan craftor 0 Jun 25 15:31 newfile

非常简单,chown命令也支持同时改变文件的属主和属组:

# chwon dan.shared newfile
# ls -l newfile
-rw-rw-r-- 1 dan shared 0 Jun 25 15:31 newfile

如果你不嫌麻烦,可以这么改变一个文件的默认属组:

# chown .rich newfile
# ls -l newfile
-rw-rw-r-- 1 dan rich 0 Jun 25 15:31 newfile

最后,如果你的Linux系统采用和用户登录名匹配的组名,你可以只用一个条目就改变二者:

# chown test. newfile
# ls -l newfile
-rw-rw-r-- 1 test test 0 Jun 25 15:31 newfile

同样,对于chown命令,-R可以递归地改变子目录和文件的所属关系,-h参数可以改变该文件的所有符号链接文件的所属关系。

> 说明:只有root用户能够改文件属主。任何属主都可以改变文件的属组,但前提是属主必须是源和目标属组的成员。

chgrp命令可以很方便地更改文件或目录的默认属组:

$ chgrp shared newfile
$ ls -l new file
-rw-rw-r-- 1 test shared 0 Jun 25 15:31 newfile

现在shared组的任意用户都可以写这个文件了。

深入理解文件权限,布布扣,bubuko.com

时间: 2024-08-23 23:34:36

深入理解文件权限的相关文章

Linux命令行–理解Linux文件权限(转)

6.1.1 /etc/passwd文件 /etc/passwd:包含系统用户账户列表以及每个用户的基本配置信息 每个条目有七个字段,每个字段用冒号隔开 登录用户名 用户密码 用户账户的UID 用户账户的GID 用户账户的文本描述 用户HOME目录的位置 1 rich:x:501:501:Rich Blum:/home/rich:/bin/bash 默认情况下,bash shell启动时会自动处理用户主目录下.bashrc文件中的命令 linux系统将用户密码保存在另一个单独的文件中(称为shad

linux文件权限位SUID,SGID,sticky的设置理解

SUID含义:文件的该位被设置为1,在该文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来           执行这个文件,他都有文件所有者的特权,如果所有者是root的话,那么执行人就有超级用户           的特权了,这是该位将变成一个安全漏洞,因此不要轻易设置该位. SGID含义:运行者将具有文件所有组的权限. 粘合位:  要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映像,这样做是为了节省大           型程序的启动时间,但是会占用系统资源,因此设置

Linux 文件权限总结

在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,Linux 文件权限系统就直接取自于 UNIX 文件权限(www.lampbrother.net). 但不要以为理解文件权限需要长时间的学习.事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们. 基础概念 你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们将其展开来说,这个

初识 Linux 文件权限--Linux基础教程

初识 Linux 文件权限--Linux基础教程 在 Linux 中最基本的任务之一就是设置文件权限.理解它们是如何实现的是你进入 Linux 世界的第一步.如您所料,这一基本操作在类 UNIX 操作系统中大同小异.实际上,权限系统就直接取自于 UNIX 文件权限(甚至使用许多相同的工具). 但不要以为理解文件权限需要长时间的学习.事实上会很简单,让我们一起来看看你需要了解哪些内容以及如何使用它们. 基础概念 你要明白的第一件事是文件权限可以用来干什么.当你设置一个分组的权限时发生了什么?让我们

文件权限的控制及进程和服务的控制

一文件权限的控制1.权限存在的意义r:可读取文件的实际内容w:可以编辑,新增或者修改该文件的内容,如果没有r权限.无法wx:该文件拥有被系统执行的权力2.权限的识别ls -l file 查看文件的详细信息 ls -ld dir 查看目录的详细信息 权限的查看与理解文件权限) rw-r--r-- 1 root root 216 May 12 2017 /mnt/rht[1]文件类型 普通文件d 目录l 软链接(类似与windows下的快捷方式)s 套接字c 字符设备/dev/pts/下[2]rw-

Linux下更改文件权限以及系统权限预留阈值的设定

1 文件权限的理解文件权限读取 权限类型 - 权限关闭 r (resadable )查看权限 w (writeable)可写权力 x (excutable)执行权力 此位权限未开启 对于文件:可查看文件中的内容 对于目录:可列出目录中的文件名称 对于文件可更改文件记录的内容 对于目录可更改目录中文件的权限 对于文件可用文件名称调用文件内记录的程序 对于目录可进入目录 文件权限的设定方式 字符方式和数字方式 字符方式设定权限 chmod [参数]... 权限模式[权限模式]... 目标 数字方式设

深入理解Linux中的文件权限

Linux中文件权限 Linux中每个文件都有一个特定的拥有者(一般是创建它的用户)和所属用户组,这是它的固有属性.文件可以利用这两个固有属性来规定它的拥有者或者是所属用户组内的用户是否拥有对它的访问权利,即读.写和执行的权利.此外为了提高适应性,文件还规定了其他不相关的人等的访问权限,也就是第三个固有属性.这三个固有属性和三个权利合起来,就构成了文件针对系统中所有用户的访问控制,也就构成了Linux中的文件权限体系. 1.1 使用ls命令的-l选项查看root家目录,结果如下 [[email 

理解基本权限以及特殊权限:Suid 、Sgid、Sticky以及acl

理解基本权限以及特殊权限:Suid .Sgid.Sticky以及acl 在Linux中特殊权限是什么?为什么要设定特殊权限?回答这个问题前,我们不妨思考为什么要设定权限? 大家知道Linux中一切皆文件.不论你是什么,在linux系统中都会被当做一个文件来看待.无论你是文本或目录,硬件或软件,图片或视频等等,统统都被当做文件来看待.所以,在linux中,文件的重要性不言而喻.那么如何更合理的管理好文件呢?文件的权限管理是很重要的一环,所以接下来我将介绍文件的基本权限以及特殊权限. 基本文件权限

Linux的文件权限和目录配置

二.Linux的基本操作 2.1.Linux的文件权限和目录配置 2.1.1.Linux文件属性 以root身份登录后,执行“ls –al”将会出现如下内容: [[email protected] ~]# ls -al 总用量 44 dr-xr-x---. 5 root root 4096 8月   6 14:44 . dr-xr-xr-x. 17 root root 4096 7月 25 05:33 .. -rw-------. 1 root root 1426 7月 25 05:35 ana