第六章 Linux 文件权限

第六章 Linux 文件权限

一、 用户分类与文件访问权

• Linux 将用户划分为四类;

root ;或所有 UID=0 的用户,具有至高权限;

owner :文件的所有者,默认即文件的创建者;

group ;所属组,除 owner 外同组其他成员有同等权限;

world ;除上面三类外的其他普通用户。

自然,Linux 的权限管理只针对 owner、group、world。

• 访问权限有三种;读、写、执行,分别用 r、w、x 表示

ls –l 命令显示的结果中第 1 列的 2-10 分别表示三类用户对

此文件(或目录)的三种访问权限,“

-”表示无此权限,例:

-rwxr-x- - - 2 z3 g1 737 oct 7 18:42 a.sh

表示 a.sh 文件为 z3 所有,属于 g1 组,z3 具有全部权限,

g1 组内其他成员具有读和执行权限,其他用户无任何权限。

• 为便于记忆与交流,专业人员习惯以八进制描述权限,比如

上例文件的访问权限可表示为 750。

二、 文件权限与目录权限

文件与目录的访问权限都分为读、写和执行,但作用不同:

读权限

写权限

执行权限

文件

读取文件内容 修改该文件

执行

目录

列出其中的文

件名

在其中创建或

删除文件

进入目录注意:

⑴在 Linux 中一个文件是否是可执行文件与其扩展名无关。

其可否执行取决于两个条件:用户是否具有执行权限;该文

件是否是可执行文件。 普通的文本文件(非脚本文件)即

便被赋予执行权限也无法执行。File 命令可查看文件类型。

⑵Redhat Linux 9.0 上的实验表明:若要对目录中的文件名列

表或在其中创建与删除文件都必须要对该目录拥有执行权

限。这点与很多书籍上的说法存在出入。

三、 改变文件的所有者和所在组

① chown 命令:改变文件的所有者

例:chown l4 a.txt 改 a.txt 文件的所有者为 l4

chown l4 mydir 改 mydir 目录的所有者为 l4

chown –R l4 mydir 将 mydir 目录全部归 l4 所有

说明:⑴ -R 参数表示递归操作,即把 mydir 及其下的所有

目录与文件的所有者都改为 l4。

⑵ 只有 root 用户有劝执行 chown 命令。

② chgrp 命令:改变文件的所属组

例:chgrp g1 a.txt 改 a.txt 文件的所属组为 g1

chgrp –R l4 mydir 递归改变 mydir 目录所属组

说明:普通用户也可以执行 chgrp 命令,但前提条件是该

用户必须同时具备两组的成员身份。③同时改变所有者和所属组

chown newuser.newgroup filename_or_directory

即用点连接新所有者和新组,执行 chown 命令。

例:chown l4.g1 mydir

四、 改变文件的访问权限

• chmod 命令用于修改文件或目录的访问权限。命令格式:

chmod 权限 文件或目录名

例:chmod 755 /home/l4 修改 l4 的主目录访问权限为 755

(注:如果需要,当然也可以使用递归操作参数-R)

• 还可以使用字符串取代八进制的权限表示:

u、g、o、a 分别表示 owner、group、world、all

r、w、x 分别表示 read、write、exec

+、- 分别表示增加、去除权限

例:chmod a+r g+x u+xw /home/l4

使/home/l4 对任何人可读、组用户可执行、拥有者可读可执行

又例:chmod +x install.sh

使当前目录下的 install.sh 文件对任何人可执行。这种用法常

用在改变下载文件的权限属性以便其可执行。

注意:

⑴对硬连接的访问权限修改会同时影响到所有相关的硬连接权限属性。因为它们是同一个文件。

⑵对软连接的访问权限修改只改变了被连接文件的权限属性,

连接文件自身的访问权限并没有被修改,仍是 777。

五、 用户的默认访问权限和 umask

用户在创建新文件时,系统通常按默认值赋予其权限:

目录

一般文件

root

755

644

普通用户

775

664

影响用户的权限默认值的是个与用户相关的系统值 umask。

Root 的 umask=022,普通用户的 umask=002

目录的默认权限等于:777 与 umask 反码;(777 减去 umask)

文件的默认权限等于:666 与 umask 反码。(666 减去 umask)

不带参数地执行 umask 将显示当前用户的 umask 值。

umask 新值 可改变当前用户的 umask 值,

例:umask 222 令当前用户 umask=222,任何人都不可写

说明:

⑴umask 只与用户有关,与当前在哪个目录无关。

⑵只能改变自己的 umask,并且只对自己的本次登录有效。

下次登录 umask 还是原值。所以修改的意义似乎不大。

⑶注意:“减去 umask”的说法只是一些书籍上为不熟悉布

尔代数的初学者提供的一种权宜的助记方法,该说法其

实很有问题,造成很多现象无法解释。笔者认为准确的说法应该是:“默认的访问权限等于权限基值与上

‘umask 的反码’,对于新建目录和新建文件来说,其权

限基值分别是 777 和 666;但对于由拷贝操作产生的新

目录和新文件来说,其权限基值就是源目录(或源文件)

的原有值”。也就是将权限基值上的那些与 umask 中置 1

位相对应的权限位清零便可得到新文件的默认权限值。

六、 理解 SUID 和 SGID

先分析一个现象:

记录用户账号信息的/etc/passwd 文件其权限是:root.root 644

记录加密口令的/etc/shadow 文件其权限是: root.root 400

对于普通用户 passwd 只能读而不能改写;shadow 连读都不允

许。可为什么我们可以通过 passwd 命令改写自己的口令?

查看一下命令程序 usr/bin/passwd 文件的属性:

/usr/bin/passwd 文件其权限是:root.root -r-s- -x- -x

这个文件是允许普通用户执行的。root 的执行位是 s,就是这

个 s 使普通用户执行 passwd 时具有了 root 身份从而获得了对

/etc/passwd 和/etc/shadow 的完全访问权(root 什么权没有?)。

实际上表示 Linux 文件权限的是 12bit,前面的 3bit 是:

SUID:若文件可以执行,则按所有者身份运行;

SGID:若文件可以执行,则按组成员身份运行;

sticky:粘接位,结束后仍驻留内存。目前并不常用。在 ls –l 命令显示中的表示方法:

SUID 置位:所有者的执行位的 x 被 s 取代;

SGID 置位:所属组的执行位的 x 被 s 取代;

sticky 置位:其他人的执行位的 x 被 t 取代。

所以,-r-s- -x- -x 用值表示就是 4511。

注意,使用 SUID 和 SGID 位要特别小心。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻傻的心动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值