`
56553655
  • 浏览: 204302 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

文件或目录的存取权限

阅读更多

快速理解Linux文件的权限,查看

Permissions, important and tricky!

Unix permissions concern who can read a file or directory, write to it, and execute it. Permissions are granted or withheld with a magic 3-digit number. The three digits correspond to the owner (you); the group (?); and the world (everyone else).

Think of each digit as a sum:

 

 execute permission
 = 1
 


 write permission
 = 2
 


 < type="text/javascript"> write and execute (1+2)
 = 3
 


 read permission
 = 4
 


 read and execute (4+1)
 = 5
 


 read and write (4+2)
 = 6
 


 read, write and execute (4+2+1)
 = 7
 


Add the number value of the permissions you want to grant each group to make a three digit number, one digit each for the owner, the group, and the world. Here are some useful combinations. Try to figure them out!

修改方式1:以绝对方式改变权限
chmod 600 {filespec}You can read and write; the world can't. Good for files.

chmod 700 {filespec}You can read, write, and execute; the world can't. Good for scripts.

chmod 644 {filespec}You can read and write; the world can only read. Good for web pages.

chmod 755 {filespec}You can read, write, and execute; the world can read and execute. Good for programs you want to share, and your public_html directory.


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

Permissions, another way(修改方式2:以符号模式改变权限(在原来基础上增加添加定义的权限))

You can also change file permissions with letters:

 

 u = user (yourself)
 g = group
 a = everyone
 


 r = read
 w = write
 x = execute
 


chmod u+rw {filespec}Give yourself read and write permission

chmod u+x {filespec}Give yourself execute permission. < type="text/javascript">

chmod a+rw {filespec}Give read and write permission to everyone.


    使用文件命令对文件进行操作的前提是拥有相应的权限。下面我们介绍如何控制这些权限。

    (1)用户和权限
    Linux为每个文件都分配了一个文件所有者,称为文件主,并赋予文件主惟一的注册名。对文件的控制取决于文件主或超级用户(root)。文件或目录的创建者对创建的文件或目录拥有特别使用权。

    文件的所有关系是可以改变的,可以将文件或目录的所有权转让给其它用户,但只有文件主或root用户才有权改变文件的所有关系。文件的所有权的标志是用户ID(UID)。

    利用chown 命令可以更改某个文件或目录的所有权。例如,超级用户把自己的一个文件myfile拷贝给用户xu。为了让用户xu能够存取这个文件,超级用户(root)应该把这个文件的属主设为xu,否则,用户xu无法存取这个文件,命令如下:
    chown xu myfile

    如果改变了文件或目录的所有权,原文件主将不再拥有该文件或目录的权限。

系统管理员经常使用chown命令,以便将文件拷贝到另一个用户的目录下以后,让该用户拥有使用该文件的权限。

    (2)用户组
    在Linux下,每个文件又同时属于一个用户组。当创建一个文件或目录时,系统会赋予它一个用户组关系,用户组的所有成员都可以使用此文件或目录。
    文件用户组关系的标志是GID。文件的GID只能由文件主或超级用户(root)来修改。chgrp命令可以改变文件的GID。

    (3)用户和权限
    Linux系统中的每个文件和目录都有存取许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。

    Linux系统中规定了四种不同类型的用户,即文件主(owner)、同组用户(group)、可以访问系统的其它用户(others)、超级用户(root),具有管理系统的特权。

    存取权限规定三种访问文件或目录的方式:读(r)、写(w)、可执行或查找(x)。

    当用“ls -l”命令显示文件或目录的详细信息时,最左边的一列为文件的存取权限,其中各位的含义如图4所示。

 
图4 文件权限表示

    ◆文件的存取权限
    读权限(r)表示只允许指定用户读取相应文件的内容,而禁止对它做任何的更改操作。将所访问的文件的内容作为输入的命令都需要有读的权限。例如cat、more等。
    写权限(w)表示允许指定用户打开并修改文件。例如命令vi、cp等。
    执行权限(x)表示允许指定用户将该文件作为一个程序执行。

    ◆目录的存取权限
    在ls命令后加上-d选项,可以了解目录文件的使用权限。
    读权限(r)表示可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许Shell使用文件扩展名列出相匹配的文件名。
    写权限(w)表示允许用户从目录中删除或添加新的文件,通常只有文件主才有写权限。
    执行权限(x)表示允许用户在目录中查找,并能用cd命令将工作目录改到该目录。

    (4)chmod命令
    chmod命令用于改变或设置文件或目录的存取权限。只有文件主或超级用户root才有权用chmod改变文件或目录的存取权限。

    根据表示权限的方式不同,该命令有以符号模式改变权限和以绝对方式改变权限两种用法。

    ◆以符号模式改变权限
    chmod命令的一般格式是:chmod key 文件名

    其中,key由以下各项组成:

[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  与其它用户拥有一样的权限。

    上面这三部分必须按顺序输入,可以用多个key,但必须以逗号隔开。例如:
    $ chmod a+x ex1

    上面代码表示将文件ex1的权限改为所有用户(a)都有执行权限(+x)。
    $ chmod u=r,ug=x ex1

    上面这行代码表示将文件ex1的权限重新设置为文件主可以读和执行,组用户可以执行,其它用户无权访问。

    ◆以绝对方式改变权限
    以绝对方式改变权限一般格式是:chmod mode 文件名

    用绝对方式设置或改变文件的存取权限就是用数字“1”和“0”表示图4中所 示的9个权限位, 置为“1”表示有相应权限, 置为“0”表示没有相应权限。例如,某个文件的存取权限是文件主有读、写和执行的权限,组用户有读和执行的权限,其它用户仅有读的权限。用符号模式表示就 是rwxr-xr--,用二进制数字表示就是111101100。

    为了方便记忆和表示,通常将这9位二进制数用等价的3个从0到7的八进制数表示,即从右到左3个二进制数换成一个八进制数。这样,上述二进制数就等价于八进制数“754”。

    也就是说,mode是以3位八进制数字出现的,最左位表示文件主权限,中间位表示组用户权限,最右位表示其它用户权限。

    例如,chmod 664 ex1使文件ex1的文件主和同组用户具有读写权限,但其它用户只可读。

    ◆umask命令
    umask命令用来设置限制新建文件权限的掩码。其一般格式是:umask mode

    当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行,并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask来改变默认值,新的权限将会把旧的覆盖掉。

    利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,取消组用户的写权限以及其他用户的读、写和执行权限: umask u=,g=w,o=rwx

    执行该命令以后,下面所建新文件的文件主权限未作任何改变,而组用户没有写权限,其它用户的所有权限都被取消。

    应注意,在umask命令和chmod命令中,操作符“=”的作用恰恰相反。在chmod中,利用它来设置指定的权限,而其余权限都被取消;但是在umask命令中,它将在原有权限的基础上把指定的权限删除。

    不能直接利用umask创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了下面命令:
    umask u=,g=w,o=rwx

    虽然在命令行中,文件主和组用户的执行权限没有被删去,但默认的文件权限还 是640(即rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录,或者通过编译程序创建一个可执行文件,将不受此限制。 在这种情况下,文件的执行权限会被设置。

    此外,也可以使用八进制数值来设置mode。在umask中所指定的权限 表示要删除的权限,所以,如果一个文件原来的初始权限是777,那么执行命令umask 022以后, 那么该文件的权限将变为 755;如果该文件原来的初始权限是666, 那么该文件的权限将变为644。

    使用下面的命令可以检查新创建文件的默认权限:
    umask -s

    上面命令中,选项-s表示以字符形式显示当前的掩码。

    如果直接输入umask命令,不带任何参数,那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。


本文来自CSDN博客:http://blog.csdn.net/omohe/archive/2007/11/23/1899910.aspx

分享到:
评论

相关推荐

    UNIX --文件属性和存取权限

    ### UNIX 文件属性与存取权限详解 在UNIX系统中,文件和目录的权限管理是非常重要的一个环节,它确保了系统的安全性和数据的完整性。通过`ls -la`命令,我们可以查看到文件或目录的详细信息,包括它们的权限设置。 ...

    Linux命令:改变文件或目录的访问权限

    Linux 命令:改变文件或目录的访问权限 在 Linux 系统中,每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读、只写和可执行三种。以文件为...

    linux操作系统基础教程

    - **改变文件或目录存取权限的命令**:如`chmod`用于更改文件或目录的访问权限。 - **改变用户组和文件主的命令**:如`chgrp`用于更改文件所属的用户组,`chown`用于更改文件的所有者。 ##### 2.5 文件压缩命令 - ...

    Linux系统文件存取管理

    通过对Linux系统文件存取管理的学习,我们可以了解到Linux系统如何通过用户账号管理、文件权限控制等方式确保数据的安全性。同时,通过搭建FTP服务并使用FlashFXP等工具,用户可以方便地进行文件的上传和下载操作,...

    linux 实验报告 文件系统与文件管理.pdf

    本实验报告对 Linux 文件系统和文件管理进行了详细的介绍,包括文件系统的目录结构、文件管理命令和文件存取权限等内容。通过本实验,我们可以更好地理解 Linux 文件系统和文件管理的原理和应用。

    linux-实验报告-文件系统与文件管理.pdf

    Linux 文件系统与文件管理实验报告 一、实验项目:用户与组群...通过本实验报告,用户可以熟悉 Linux 文件系统的目录结构、文件管理命令和文件存取权限的概念。这些知识点对于用户管理、文件管理和系统安全至关重要。

    pb文件远程存取服务系统

    2. 权限管理:为了保护数据的安全,系统支持细粒度的权限控制,管理员可以设定不同用户或用户组对PB文件的访问权限,如读、写、执行等,确保只有授权的用户才能访问特定文件。 3. 版本控制:系统通常包含版本控制...

    Visual+C#+2005文件IO与数据存取秘诀

    - FileSecurity和DirectorySecurity类允许我们设置文件和目录的安全属性,如权限控制。 以上知识涵盖了Visual C# 2005中文件I/O与数据存取的主要方面。通过熟练掌握这些技能,开发者能有效地管理和处理应用程序中...

    文件权限与用户管理实验报告

    - **检视ACL**:使用`getfacl`命令查看文件或目录的ACL信息,显示包括文件拥有者、所属群组以及各个层级的权限设置。 - **更改ACL**:通过`setfacl`命令,可以新增、修改或删除ACL中的规则。使用选项`-m`添加或修改...

    查阅Linux缺省的存取控制权限具体步骤.docx

    chmod [权限] 文件或目录 其中,[权限] 可以是数字或字母,数字表示权限的八进制值,字母表示权限的符号表示法,例如“rwx”表示读、写、执行权限。 例如,要设置文件的读权限,可以使用以下命令: chmod 400 ...

    Visual C# 2005文件IO与数据存取秘诀(程序范例)

    - **读写文本**:`StreamReader`和`StreamWriter`用于读写文本文件,可以逐行读取或一次性读取整个文件,也可以写入文本到文件中。 - **文件流操作**:`FileStream`类允许开发者直接对文件进行二进制操作,适用于...

    Toolbox_ToolBox文件存取_bornqen_

    6. **权限管理**:根据平台特性,可能提供了检查和设置文件或目录权限的功能。 7. **异步操作**:为了提高性能,可能支持异步文件操作,允许在等待I/O完成的同时执行其他任务。 8. **错误处理**:统一的错误处理...

    Android 文件存取

    在Android系统中,文件存取是一项基础且重要的功能,它涉及到应用程序如何保存和读取数据。本篇将详细探讨Android的内部存储、外部存储(包括SD卡存储)以及简单的文件管理,尤其是通过对话框实现的文件操作。 首先...

    stat()—获取文件状态

    * `mode_t st_mode`: 文件的类型和存取权限 * `nlink_t st_nlink`: 连到该文件的硬链接数目 * `uid_t st_uid`: 文件所有者的用户识别码 * `gid_t st_gid`: 文件所有者的组识别码 * `dev_t st_rdev`: 若文件为装置...

    模拟多级目录的文件系统

    这涉及到分割路径、遍历目录层次,并找到对应的文件或目录。 5. **权限管理**:文件系统通常有权限模型来控制用户对文件和目录的操作,如读、写和执行权限。模拟系统也需要实现类似的机制,确保用户只能进行他们被...

    Linux的文件权限与目录配置破船之家.docx

    通过使用`ls -al`命令,我们可以查看文件或目录的详细权限信息。例如: ``` -rw-r--r-- 1 BeyondVincent staff 21723 9 26 18:51 pom.xml ``` 这里的`-rw-r--r--`是权限部分,第一个字符`-`表示这是一个普通文件,...

    操作系统课件:Lecture13 文件与文件目录.ppt

    文件是操作系统中用户最常打交道的对象,文件管理系统则是一组用于实现文件统一管理的软件和相关数据,它提供了"按名存取"的功能,并通过调用接口隐藏了底层存储细节,简化了用户操作。文件系统的主要任务包括组织、...

    文件存取程序设计PPT课件.ppt

    文件存取程序设计是计算机科学中的重要组成部分,它涉及到如何高效、安全地处理磁盘上的文件和目录。在.NET框架中,系统提供了丰富的类库来支持文件和目录的操作,主要集中在`System.IO`命名空间中。 1. **命名空间...

    Oracle存取文件

    在Java等编程语言中,通常会将文件转换为`Byte[]`数组以便于存储或传输。下面详细介绍如何将一个文件转换为`Byte[]`并存储到Oracle数据库中的Blob字段。 ##### 2.1 文件转换为Byte[] ```java import java.io.File; ...

Global site tag (gtag.js) - Google Analytics