`
wb284551926
  • 浏览: 551363 次
文章分类
社区版块
存档分类
最新评论

linux文件权限chmod

 
阅读更多

linux的文件权限通过用户,组和其它组来实现。一个文件只能属于一个用户和组, 如果其它的用户想有这个文件的权限,则可以将该用户加入这个组,一个用户可以同时属于多个组。一般来说一个应用下不要有太多的文件组和用户,最好不要用 ROOT执行角本,这样权限都放放大,比较不安全

 

Linux下很重视权限,权限包括读,写,执行。所以即使Linux下染了病毒,也不一定中病毒,其实就是这个权限的问题。初学者在Linux执行 命令是会感觉比较累,每次都是要用su来切换用户,其实这也是Linux保护数据的一种模式。当然建议,用户登入是不要直接用root用户登入。如果知道 root登录命令的话。

Linux下有用户跟群组的观念。往往分为三个部分,持该文件的用户(user),跟持该文件同组的用户(group),剩下的其他用户(other)。一个用户可以属于很多个群组。Linux下表示权限有两种方式:

一种是八进制表示法(十位表示法,不是说八进制有十位,而是三个八进制位,再加一个最高位共十位),

另外一种十二位二进制表示法(十二个二进制位)。

先介绍第一种:

是三种模式,三个属组,就构成了9位。-代表无权限,r代表只读,w代表写的权限,x则代表执行。所以就有下面的组合。将-视为0,x视为1,w视 为2,r视为4.这种组合根据该位是否有这个数来确定,就确定如下的9种组合方式。刚好,总的权值0-7对应于八进制的全部。所以也可以说权限是可以用八 进制来表示的。最高的权限就是7,代表可读,可写,可执行。3就是代表只有写跟执行的权限。其他数字类推。

 

 模式 数字
  rwx 7
  rw- 6
  r-x 5
  r-- 4
  -wx 3
  -w- 2
  --x 1
  --- 0

每个八进制数其实可以转化为三位的二进制数,

r=100,w=010,x=001,-=000

这个关系在第二种表示方法中是有用的。由于r是出现在三位中的最高位,就相当于最高位才有效,可忽略0位。在这种方法中,你可以类似的在出现的地方对它置1,不出现的地方置0,然后三个三个的转化就出来三位的八进制数了。

还是举几个例子吧:

-rw-rw-r-- 1 samuel samuel 6479 07-08 08:46 Christians.pls
根据上面对应关系为664.

-rwxr-xr-x  1 samuel samuel   0 Jan 9 17:44 scriptfile.sh
这个对应关系算出来就是755.

所以根据数字也可以推出来777就是指-rwxrwxrwx的模式。

指定权限Linux的命令为chmod,比较自由可以用数字来表示也可以用英文形象的表示。

如chmod 777 samuel.sh所有用户取得最高的权限

chmod o+w samuel.sh其他用户被赋予了写的权限

chmod go-rw samuel.sh组跟其他用户被删去读跟写的权限

chmod的行为规范:

+ 表示添加权限

- 表示删除权限

= 表示使之成为唯一的权限

只有这样,自己写的shell脚本才可以被Linux执行。否则是不可能运行的,这个就是Linux有别于Windows的机制,也是采用这个方法可以防止病毒自我运行,因为运行的条件是必须要有运行的权限,而这个权限在Linux是用户所赋予的。

关于第一位最高位的解释:

第一位代表是文件的类型,类型可以是下面几个中的一个:

  • d代表的是目录(directroy)
  • -代表的是文件(regular file)
  • s代表的是套字文件(socket)
  • p代表的管道文件(pipe)或命名管道文件(named pipe)
  • l代表的是符号链接文件(symbolic link)
  • b代表的是该文件是面向块的设备文件(block-oriented device file)
  • c代表的是该文件是面向字符的设备文件(charcter-oriented device file)

还有一个也是涉及到权限的,就是suid,sgid跟sticky。suid/sgid是为了适应“没有取得特权用户要完成一项必须要有特权才可以执行的任务”才产生的。

suid(set User ID,set UID)的意思是进程执行一个文件时通常保持进程拥有者的UID。然而,如果设置了可执行文件的suid位,进程就获得了该文件拥有者的UID。

sgid(set Group ID,set GID)意思也是一样,只要把上面的进程拥有者改成进程组就好了。

如果一个文件被设置了suid或sgid位,会分别表现在所有者或同组用户的权限的可执行位上。

如果还设置了x位,则相应的位表示为s(小写)。但是,如果没有设置x位,它将表示为S(大写)。如下例:

1、-rwsr-xr-x 表示suid和所有者权限中可执行位被设置

2、-rwSr--r-- 表示suid被设置,但所有者权限中可执行位没有被设置

3、-rwxr-sr-x 表示sgid和同组用户权限中可执行位被设置

4、-rw-r-Sr-- 表示sgid被设置,但同组用户权限中可执行位没有被社置。

再介绍第二种:

在UNIX的实现中,文件权限还可以用十二个二进制位表示,具体方法是在这十二位的每一位上都置值。如果该位置上的值是1,表示有相应的权限,而0表示没有此权限。

这十二位分别对应关系如下:
11 10 9 8 7 6 5 4 3 2 1 0
S G T r w x r w x r w x

第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位。
-rwsr-xr-x的值为: 1 0 0 1 1 1 1 0 1 1 0 1
-rw-r-Sr--的值为: 0 1 0 1 1 0 1 0 0 1 0 0

其实两种方法都是互通的。

给文件加suid和sgid的命令如下(类似于上面chmod赋予一般权限的命令):
chmod u+s filename   设置suid位
chmod u-s filename    去掉suid设置
chmod g+s filename   设置sgid位
chmod g-s filename    去掉sgid设置

但是在许多环境中,suid 和 suid 很管用,但是不恰当地使用这些位可能使系统的安全遭到破坏。最好尽可能地少用“suid”程序。passwd 命令是为数不多的必须使用“suid”的命令之一。

现在介绍sticky:

一般来说,只要对一个目录有写访问权,任何人都可以重命名或删除该目录中的文件。对于个别用户使用的目录,这种行为是很合理的。但是,对于很多用户 使用的目录来说,尤其是 /tmp 和 /var/tmp,这种行为可能会产生麻烦。因为任何人都可以写这些目录,任何人都可以删除或重命名任何其他人的文件,即使是不属于他们的!显然,当任何 其他用户在任何时候都可以输入“rm -rf /tmp/*”并损坏每个人的文件时,很难把 /tmp 用于任何有意义的文件。所幸,Linux 有叫做“粘滞位”(sticky bit)的东西。当给 /tmp 设置了粘滞位(用 chmod +t),唯一能够删除或重命名 /tmp 中文件的是该目录的所有者(通常是 root 用户)、文件的所有者或 root 用户。事实上,所有 Linux 分发包都缺省地启用了 /tmp 的粘滞位,而您还可以发现粘滞位在其它情况下也很管用。

总结:

正如上面所说的,其实两种方法可以互通。对于第二种,我们也可以三位三位的转化为4个八进制数。最高的一位八进制数就是suid,sgdi,sticky的值一个反应。777就是他们都设为了1.

分享到:
评论

相关推荐

    LINUX修改文件权限

    ### Linux文件权限对象分类 Linux中的文件权限主要针对以下三类对象: 1. **User(文件拥有者)**:指创建文件或目录的用户,对文件具有最高的控制权。 2. **Group(文件拥有者所在组)**:除了文件拥有者之外,同...

    linux 文件权限设置技巧

    Linux 文件权限设置技巧 Linux 操作系统中的文件权限设置是非常重要的安全机制之一。正确的文件权限设置可以有效地防止未经授权的访问和修改,从而保护系统和数据的安全。在 Linux 中,每个文件都有一个所有者和一...

    LINUX文件权限理解

    ### Linux 文件权限理解 #### 一、用户与组群管理 在 Linux 系统中,用户的账号信息主要存储于 `/etc/passwd` 文件内,包括一般用户和超级用户(root)的相关信息。每个用户的密码信息则单独保存在 `/etc/shadow` ...

    linux修改目录和文件权限的简单命令解释

    目录的权限表示:dwrxr–r– 其中第一个字符 d代表目录, -代表字符 w代表可写,r代表可读... 您可能感兴趣的文章:Linux中改变文件权限的chmod命令详析修改linux文件权限命令:chmod命令详解Linux 下目录文件权限(命

    Linux文件权限与目录配置.pdf

    Linux 文件权限与目录配置 Linux 操作系统中,文件权限和目录配置是非常重要的安全防护机制。Linux 是一个多用户多任务的操作系统,可以允许多个用户同时使用Linux。Linux 的用户及群组功能是相当健全好用的一个...

    Linux基础课件文件权限设置chmod命令共9页.pdf

    【标题】"Linux基础课件文件权限设置chmod命令"涵盖了Linux操作系统中的基本概念,特别是关于文件权限管理和`chmod`命令的使用。在Linux系统中,理解文件...因此,我们主要关注的是Linux文件权限和`chmod`命令的学习。

    中标麒麟Linux文件权限管理和归属管理.pdf

    中标麒麟Linux文件权限管理和归属管理技术创新 中标麒麟Linux服务器操作系统文件权限管理和归属管理是 Linux 操作系统中的一种重要机制,用于控制用户对文件和目录的访问权限和所有权。本章将详细介绍中标麒麟Linux...

    Linux文件权限的修改命令

    Linux 文件权限的修改命令 Linux 文件权限是 Linux 操作系统中一个非常重要的概念,它控制着用户对文件和目录的访问权限。Linux 文件权限的修改命令是指通过使用特定的命令来改变文件或目录的所有权和权限。 1. ...

    Linux文件目录的权限和属性实践讲解

    #### 一、Linux 文件权限简介 在Linux操作系统中,文件和目录的权限管理是非常重要的一个方面。通过适当的权限设置,可以确保系统的安全性和稳定性,防止未授权访问导致的数据泄露或破坏。本文将详细介绍Linux文件...

    linux文件权限设置.docx

    Linux 文件权限设置 Linux 操作系统中,文件权限是非常重要的一个概念。文件权限决定了用户对文件的访问权限,包括读、写、执行等权限。在 Linux 中,每个文件都有其所属的用户和组,并且每个用户和组都有其对应的...

    Linux安全体系的文件权限管理.doc

    Linux 安全体系的文件权限管理 Linux 操作系统中的文件权限管理是指控制用户或用户组对文件或目录的访问权限。...chmod 命令、umask 命令、suid 和 guid 命令、ACL 权限管理命令都是 Linux 文件权限管理的重要命令。

    linux的chmod使用详解

    `chmod`是Linux系统中一个非常强大的命令,用于精细控制文件和目录的访问权限。理解并熟练掌握`chmod`的使用,对于维护系统的安全性和稳定性至关重要。通过灵活运用符号和数字表示法,管理员可以精确地设定每个文件...

    第5章linux文件权限及设置命令

    本章将深入探讨Linux文件权限的概念、查看权限的方法以及如何通过命令来设置这些权限。 5.1 文件权限 文件权限定义了不同用户对文件或目录的访问类型,包括读(read)、写(write)和执行(execute)。每个文件或...

    linux文件属性和更改文件权限详解

    1.2 linux文件系统介绍 2.更改目录/文件权限 2.1 用户和用户组的相关指令 2.2 chgrp命令 2.3 chown命令 2.4 chmod命令 2.5 umask命令  1.文件属性 1.1 ls命令 ls命令是我们最常用的命令之一,用来查看当前目录下的...

    Linux文件权限管理实验.pdf

    Linux是一种操作系统,其安全性是设计时的首要考虑之一...通过这个实验,学习者能够深入理解Linux文件权限管理的工作机制,以及如何在实际操作中合理地管理文件和目录权限,这对于维护Linux系统的安全和稳定至关重要。

    Linux文件权限的设置方法.doc

    本篇文章将深入探讨Linux文件权限的设置方法及其重要性。 首先,我们要了解Linux文件系统的权限模型。在Linux中,每个文件都有一个9位的权限字段,用于表示所有者、所属组和其他用户的读(r)、写(w)和执行(x)...

    如何设置Linux系统下的文件权限

    设置Linux文件权限通常涉及以下步骤: 1. **检查系统核心支持**:首先,确保你的Linux内核支持ACL功能。通过查看 `/boot/config-kernel-version` 文件中有关EXT3文件系统的配置项,如 `CONFIG_EXT3_FS_ACL`,确认...

Global site tag (gtag.js) - Google Analytics