为了更加安全的存储文件,Linux为不同的文件赋予了不同的权限,每个文件都拥有下面三种权限:

所有者权限:文件所有者能够进行的操作

组权限:文件所属用户组能够进行的操作

外部权限(其他权限):其他用户可以进行的操作。

查看文件权限

使用 ls -l 命令可以查看与文件权限相关的信息:

$ls -l /home/amrood

-rwxr-xr-- 1 amrood users 1024 Nov 2 00:10 myfile

drwxr-xr--- 1 amrood users 1024 Nov 2 00:10 mydir

第一列就包含了文件或目录的权限。

第一列的字符可以分为三组,每一组有三个,每个字符都代表不同的权限,分别为读取(r)、写入(w)和执行(x):

第一组字符(2-4)表示文件所有者的权限,-rwxr-xr-- 表示所有者拥有读取(r)、写入(w)和执行(x)的权限。

第二组字符(5-7)表示文件所属用户组的权限,-rwxr-xr-- 表示该组拥有读取(r)和执行(x)的权限,但没有写入权限。

第三组字符(8-10)表示所有其他用户的权限,rwxr-xr-- 表示其他用户只能读取(r)文件。

文件访问模式

文件权限是Linux系统的第一道安全防线,基本的权限有读取(r)、写入(w)和执行(x):

读取:用户能够读取文件信息,查看文件内容。

写入:用户可以编辑文件,可以向文件写入内容,也可以删除文件内容。

执行:用户可以将文件作为程序来运行。

目录访问模式

目录的访问模式和文件类似,但是稍有不同:

读取:用户可以查看目录中的文件

写入:用户可以在当前目录中删除文件或创建文件

执行:执行权限赋予用户遍历目录的权利,例如执行 cd 和 ls 命令。

改变权限

可以使用 chmod (change mode) 命令来改变文件或目录的访问权限,权限可以使用符号或数字来表示。

使用符号表示权限

对于初学者来说最简单的就是使用符号来改变文件或目录的权限,你可以增加(+)和删除(-)权限,也可以指定特定权限。

符号

说明

+

为文件或目录增加权限

-

删除文件或目录的权限

=

设置指定的权限

下面的例子将会修改 testfile 文件的权限:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile

$chmod o+wx testfile

$ls -l testfile

-rwxrwxrwx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod u-x testfile

$ls -l testfile

-rw-rwxrwx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile

也可以同时使用多个符号:

$chmod o+wx,u-x,g=rx testfile

$ls -l testfile

-rw-r-xrwx 1 amrood users 1024 Nov 2 00:10 testfile

使用数字表示权限

除了符号,也可以使用八进制数字来指定具体权限,如下表所示:

数字

说明

权限

0

没有任何权限

---

1

执行权限

--x

2

写入权限

-w-

3

执行权限和写入权限:1 (执行) + 2 (写入) = 3

-wx

4

读取权限

r--

5

读取和执行权限:4 (读取) + 1 (执行) = 5

r-x

6

读取和写入权限:4 (读取) + 2 (写入) = 6

rw-

7

所有权限: 4 (读取) + 2 (写入) + 1 (执行) = 7

rwx

下面的例子,首先使用 ls -1 命令查看 testfile 文件的权限,然后使用 chmod 命令更改权限:

$ls -l testfile

-rwxrwxr-- 1 amrood users 1024 Nov 2 00:10 testfile

$ chmod 755 testfile

$ls -l testfile

-rwxr-xr-x 1 amrood users 1024 Nov 2 00:10 testfile

$chmod 743 testfile

$ls -l testfile

-rwxr---wx 1 amrood users 1024 Nov 2 00:10 testfile

$chmod 043 testfile

$ls -l testfile

----r---wx 1 amrood users 1024 Nov 2 00:10 testfile

更改所有者和用户组

在Linux中,每添加一个新用户,就会为它分配一个用户ID和群组ID,上面提到的文件权限也是基于用户和群组来分配的。

有两个命令可以改变文件的所有者或群组:

chown:chown 命令是"change owner"的缩写,用来改变文件的所有者。

chgrp:chgrp 命令是"change group"的缩写,用来改变文件所在的群组。

chown 命令用来更改文件所有者,其语法如下:

$ chown user filelist

user 可以是用户名或用户ID,例如

$ chown amrood testfile

$

将 testfile 文件的所有者改为 amrood。

注意:超级用户 root 可以不受限制的更改文件的所有者和用户组,但是普通用户只能更改所有者是自己的文件或目录。

chgrp 命令用来改变文件所属群组,其语法为:

$ chgrp group filelist

group可以是群组名或群组ID,例如

$ chgrp special testfile

$

将文件 testfile 的群组改为 special。

SUID和SGID位

在Linux中,一些程序需要特殊权限才能完成用户指定的操作。

例如,用户的密码保存在 /etc/shadow 文件中,出于安全考虑,一般用户没有读取和写入的权限。但是当我们使用 passwd 命令来更改密码时,需要对 /etc/shadow 文件有写入权限。这就意味着,passwd 程序必须要给我们一些特殊权限,才可以向 /etc/shadow 文件写入内容。

Linux 通过给程序设置SUID(Set User ID)和SGID(Set Group ID)位来赋予普通用户特殊权限。当我们运行一个带有SUID位的程序时,就会继承该程序所有者的权限;如果程序不带SUID位,则会根据程序使用者的权限来运行。

SGID也是一样。一般情况下程序会根据你的组权限来运行,但是给程序设置SGID后,就会根据程序所在组的组权限运行。

如果程序设置了SUID位,就会在表示文件所有者可执行权限的位置上出现's'字母;同样,如果设置了SGID,就会在表示文件群组可执行权限的位置上出现's'字母。如下所示:

$ ls -l /usr/bin/passwd

-r-sr-xr-x 1 root bin 19031 Feb 7 13:47 /usr/bin/passwd*

$

上面第一列第四个字符不是'x'或'-',而是's',说明 /usr/bin/passwd 文件设置了SUID位,这时普通用户会以root用户的权限来执行passwd程序。

注意:小写字母's'说明文件所有者有执行权限(x),大写字母'S'说明程序所有者没有执行权限(x)。

如果在表示群组权限的位置上出现SGID位,那么也仅有三类用户可以删除该目录下的文件:目录所有者、文件所有者、超级用户 root。

为一个目录设置SUID和SGID位可以使用下面的命令:

$ chmod ug+s dirname

$ ls -l

drwsr-sr-x 2 root root 4096 Jun 19 06:45 dirname

$

linux文件访问权限,Linux文件权限和访问模式相关推荐

  1. Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位

    Linux下的基本指令 目录: 权限的概念 权限管理 文件访问权限的设置方法 目录的权限 粘滞位 权限的概念 Linux下用户有两种: 超级用户(root).普通用户. 超级用户:具有最高权限,可以在 ...

  2. linux数字设定法设定权限,Linux chmod命令详解和使用实例(改变文件或目录的访问权限)...

    Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁 ...

  3. linux限制组访问权限,linux用户和组管理以及文件权限访问控制ACL策略

    01.通配符 文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件. 通配符采用特定的符号,表示特定的含义,此符号称为元 meta 字符. 常见的通配符如下: * 匹配零个或多个字符,但不匹配 ...

  4. linux修改文件夹的访问权限,linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组...

    linux setfacl chmod g+s 修改文件夹和文件的默认访问权限和所属组 我们在创建一个文件夹或者一个文件的时候,希望集成父文件夹的访问权限和组 修改默认访问权限 setfacl 以及 ...

  5. linux递归访问文件权限,Linux基础管理——文件权限管理(访问控制)

    1.文件权限 1.1.三类权限简述 读.写.执行:rwx. 1.2.文件属性操作chown :设置文件的所有者(属主信息): chgrp :设置文件的属组信息: 1.3.修改文件的属主和属组 1.3. ...

  6. linux 禁止app权限,SELinux文件访问安全策略和app权限配置

    SELinux文件访问安全策略和app权限配置 Android开发 基于android6.0版本的SELinux文件访问安全策略 在android6.0以后的版本,google采用了SELinux的文 ...

  7. linux允许佚名用户访问权限,Linux上的ACL权限文件访问

    在 Unix/Linux 系统上沿用了多年的权限机制,由于欠缺灵活性,在现今的信息系统上显得落后和不敷应用.然而一个新的权限机制标准已经诞生出来,本 文将会为大家介绍这个新机制在 Linux 上的操作 ...

  8. linux查看目录访问权限,Linux文件访问权限

    一.设置用户ID和设置组ID 1.实际用户ID和实际组ID标识当前登录的用户. 2.有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限. 3.通常,有效用户ID等于实际用户ID,有效组ID ...

  9. linux下判断文件是否存在,文件夹是否存在,是否有访问权限的方法

    通常我们判断文件是否存在,就看文件是否能够访问到,如果能访问到,文件存在,访问不到,则文件不存在. 代码判断文件是否存在C++ 方法一: 使用access函数判断文件是否存在,以及文件的权限. acc ...

最新文章

  1. 点击文字弹出一个DIV层窗口代码
  2. Linux新手要了解的十个知识点
  3. abb限位开关已打开drv1_施工升降机上有10个限位器,你都知道了吗?
  4. 抑郁症自测量表测试软件,快来测测抑郁--抑郁自评量表 (此表是是收费工具,我献给大家)...
  5. 软件架构引言之项目管理的问题
  6. 如何将java程序打包成exe文件?
  7. Google的十个核心技术
  8. Java实验2 Java语言基础
  9. windows server下安装SSHD服务
  10. FTP 简介与 Windows 系统搭建 FTP 服务器
  11. 【ide】myeclipse项目右键没有configure
  12. Mac如何取消远程控制?
  13. iPerf3 局域网性能测试路由器
  14. Linux之上传文件到服务器上
  15. NMDS非度量多维尺度分析
  16. 2018 Google IO大会来了
  17. 主机甲和主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧......[数据传输率]错题总结
  18. xampp运行不成功或者安装过程中提示找不到文件“-n”,没有安装vcredist_x86的解决方法
  19. 用ros输出hello,world(c++版)
  20. 笔记本电脑wifi怎么连接

热门文章

  1. 如何处理My lead fiori应用的buffer问题
  2. 在后台查看product的change history
  3. sendData to ABAP backend via multiple form content type
  4. SAP UI5对mobile touch事件的支持
  5. SAP UI5是如何从浏览器读取语言设置并按照优先级排序的
  6. SAP Fiori应用中事务锁的实现 - Transaction Lock实现机制
  7. SAP CRM产品主数据的附件信息在搜索时就已经从后台被读取了
  8. SAP Cloud for Customer和SAP CRM的行业解决方案列表
  9. docker添加jar包_docker配置容器运行jar包
  10. python list遍历 间隔_Python 列表(List) 的三种遍历(序号和值)方法