linux目录的属主是数字,属主与权限

一、属主,属组,其他人

Linux 系统中一切皆文件。

每个文件和目录都有自己的属主和属组

属主 表示这个文档是属于哪个用户的,这个用户必须存在于这个系统中。

属组 表示这个文档是属于哪个组的, 这个组必须存在于这个系统中。

其他人 表示这个文档和哪些用户没有任何的关系,此时那些用户就是其他人的范畴。

二、记录用户和组的文件

/etc/passwd 保存了用户的相关信息

/etc/shadow 保存了用户的密码等信息

/etc/group 保存了组的相关信息

三、文件属性

4a161689e7d8

image

文档类型

- :常规文件;即普通文件;

d : directory 目录文件

b : block device, 块设备文件,支持以block(块)为单位进行随机访问

c :character device,字符设备文件,支持以(字符)character为单位进行线性访问,

例如键盘、鼠标(一次性读取设备)。

major number :主设备号,用标识设备文件,今儿确定要加载的驱动程序

minor number :次设备号,用于标识同一类型中的不同的设备

8位二进制:0-255

l : symbolic link, 符号链接文件,就行 Windows 中的快捷方式;

p : pipe, 命名管道;

s : socker, 套接字文件;

关于索引节点,课外阅读资料阮一峰博客

关于权限部分

4a161689e7d8

image

一个文档的权限分为三部分,每个部分对应了具体的对象(谁的,哪个组的,其他人)。

每个部分有分为 3 个位,每个位都对应了不同的权限。所有的位置中,假如表示没有权限,就在次位置用英文的短横线 - 占位 。

第一个位置是 读权限,有读权限,就在此位置用 r 表示,假如没有,用英文的短横线 - 表示。

比如: r-- , 表示 只读的权限。

第二个位置是 写权限, 有写权限,就在此位置用 w 表示。

第三个位置是 执行权限, 有写权限, 就在此位置用 x 表示。

随意练习一下, 开始你的表演。提问开始

修改文档的权限和属性

修改属主和组

修改属主和属组的命令可以使用 chown, 就是 change owner 的简写。

chown 命令语法

chown [-R] 帐号名称 文件或目录

chown [-R] 帐号名称:组名称 文件或目录

chown [-R] 帐号名称.组名称 文件或目录

注意:

这里的账号名称和组名称,必须存在于系统中,在 /etc/passwd 和 /etc/group 文件中有相应的记录。

// 修改属主和属组

chown sshd.sshd a.txt

// 修改目录及其下面所有的文件和目前的属主和属组, 需要创建这个目录

chown -R sshd:sshd /opt/mysql/data

// 修改属主

chown sshd b.txt

// 修改属组, 注意组名 sshd 前面有个点

chown .sshd b.txt

修改权限

修改权限的命令使用 chmod, 就是 change mode 的简写。

chmod 命令语法

chmod [-R] 权限表示方式 文件或目录

-R 选项是对目录进行递归操作

权限的改变使用的是chmod这个指令,但是,权限的设置方法有两种, 分别可以使用数字或者是符号来进行权限的变更。

符号的方式

4a161689e7d8

image

所谓的符号就是上图中的 r、w 和 x。

那如何表示身份对象呢?

属主, 就是 user 的意思, 可以使用 u 来表示

属组, 就是 group 的意思, 可以使用 g 来表示

其他人, 就是 others 的意思, 可以使用 o 来表示

所有人, 可以使用 all, 就用 a 来表示

增加权限使用英文的 + 符号

移除权限使用英文的 - 符号

设置权限使用英文的 = 符号

开始你的表演

设置 .bashrc 文件的权限,具体要求如下

属主为 可读,可写

属组为 可读

其他人为 可读

chmod u=rw,g=r,o=r .bashrc

修改 .bashrc 文件的权限为如下描述

属主增加 可执行权限

属组增加 可写,可执行权限

其他人移除 可读权限

chmod u+x,g+wx,o-r .bashrc

修改 .bashrc 文件的权限为:

给所有用户增加可执行权限

chmod a+x .bashrc

数字的方式

使用数字的方式操作权限,就是把之前的每个角色的具体位置的的符号转变成一个数字。

r --> 4

w --> 2

x --> 1

那如何把这些数字对应到具体的身份中呢,比如 属主、数组,其他人。

对应到每个身份上时,需要把三个位置的数字相加。

比如一个文档的权限是 -rwxr--r--, 对应的数字方式的权限是 744.

文档类型: - 代表普通文件

属主:rwx 分别对应了 4 2 1,相加后就是 7

属组: r-- 分别对应了 4 0 0 , 相加后就是 4

其他人: r-- 分别对应了 4 0 0 , 相加后就是 4

开始你的表演

数字方式的权限设置,都是直接设置的,没有增加、删除之说。

设置文件 .bashrc 的权限为

属主:可读可写可执行

属组: 可读可执行

其他人: 无权限

chomd 750 .bashrc

四、权限对于文件和目录的意义

认识 Linux 系统

分区和文件系统的基本认知

4a161689e7d8

image

4a161689e7d8

image

由于盘片是圆的,并且通过机器手臂去读写数据,盘片要转动才能够让机器手臂读写。因此,通常数据写入当然就是以圆圈转圈的方式读写啰!

所以,当初设计就是在类似盘片同心圆上面切出一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。 这个小区块就是磁盘的最小物理储存单位,称之为扇区 (sector),那同一个同心圆的扇区组合成的圆就是所谓的磁道(track)。 由于磁盘里面可能会有多个盘片,因此在所有盘片上面的同一个磁道可以组合成所谓的柱面 (cylinder)。

原本硬盘的扇区都是设计成 512Byte 的容量,但因为近期以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的大容量硬盘已经有 4KByte 的扇区设计! 购买的时候也需要注意一下。也因为这个扇区的设计不同了,因此在磁盘的分区方面,目前有旧式的 MSDOS 相容模式,以及较新的 GPT 模式。

一块磁盘需要经过分区,之后对每个分区进行格式化操作,操作系统才能用于存储数据。

一块磁盘 --》 一大间房子

分区 --》 分割成不同的房间

格式化 --》 规定每个房间的用途

规定每个房间的用途,就相当于确定如何使用存放数据,这个过程中就需要制定一定的规则,就是规定数据如何存放的硬盘的这个分区。这个规则称为文件系统。

为什么需要进行格式化*呢?这是因为每种操作系统所设置的文件属性/权限并不相同, 为了存放这些文件所需的数据,因此就需要将分区进行格式化。

所以不同的操作系统也有自己独有的文件系统。

对于 Windows 中,有的文件系统比如 FAT32、NTFS 等

对于 Linux 系统中,有的文件系统:EXT2、 EXT3、 EXT4、 XFS

大部分情况下,每种操作系统只能够使用自己的文件系统,也有一些特殊的,比如FAT32 多种操作系统都是可以支持的,因为这个文件系统比较陈旧,支持的特性功能不多,所以大部分操作系统都支持。

Mac 和 Windows 都能读写的文件系统是 ExFAT

Mac 、Linux、Windows 都是读写的是 Fat32。

Fat32 系统缺点读写速度慢,并且单个文件的大小不能超过 4G, 比如不能存储一个超过 4G的视频或者 ISO格式的文件等

inode 和 block

Linux 系统中有很多高级的文件系统,这些文件系统中的文档除了有文件内容本身外,还有很多属性,在管理这些内容的时候,会把一个文档这些内容分为两个部分存储。

inode 部分和 block 部分

每个 inode 与 block 都有编号

inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;

block:实际记录文件的内容,若文件太大时,会占用多个 block 。

假设某一个文件的属性与权限数据是放置到 inode 4 号(下图较小方格内),而这个 inode 记录了文件数据的实际放置点为 2, 7, 13, 15 这四个 block 号码,此时我们的操作系统就能够根据 block 号来排列磁盘的读取顺序,可以一口气将四个 block 内容读出来! 那么数据的读取就如同下图中的箭头所指定的模样了。

4a161689e7d8

image

关于 inode

inode 也可以称为 inode table(表格)

inode 的内容在记录文件的属性以及该文件实际数据是放置在哪几号 block 内! 基本上,inode 记录的文件数据至少有下面这些:

该文件的存取模式(read/write/excute);

该文件的拥有者与群组(owner/group);

该文件的容量;

该文件创建或状态改变的时间(ctime);

最近一次的读取时间(atime);

最近修改的时间(mtime);

定义文件特性的旗标(flag),如 SetUID...;

该文件真正内容的指向 (pointer);

关于 block

block 可以称为 data block

data block 顾名思义,就是存放数据的,但是,block 对于文件和目录有不同的意义。存放的数据不一样,具体如下:

对于文件来说,就是存放真实是文件内容的,比如文件内容是 "hello shark" 就是存放 "hello shark" 这几个字符串的。

对于目录,Linux 中一切皆文件,目录其实也是文件。目录的 block 中存放了这个目录下的文档名和其对应的 inode 号。像下面这样

4a161689e7d8

image

所以整个目录和其下面的文档的记录方式和关系如下图:

4a161689e7d8

image

五、 权限与指令间的关系

我们知道权限对于使用者帐号来说是非常重要的,因为他可以限制使用者能不能读取/创建/删除/修改文件或目录! 在这一章我们介绍了很多文件系统的管理指令,第五章则介绍了很多文件权限的意义。在这个小节当中, 我们就将这两者结合起来,说明一下什么指令在什么样的权限下才能够运行吧!_

1、让使用者能进入某目录成为“可工作目录”的基本权限为何:

可使用的指令:例如 cd 等变换工作目录的指令;

目录所需权限:使用者对这个目录至少需要具有 x 的权限

额外需求:如果使用者想要在这个目录内利用 ls 查阅文件名,则使用者对此目录还需要 r 的权限。

2、使用者在某个目录内读取一个文件的基本权限为何?

可使用的指令:例如本章谈到的 cat, more, less等等

目录所需权限:使用者对这个目录至少需要具有 x 权限;

文件所需权限:使用者对文件至少需要具有 r 的权限才行!

3、让使用者可以修改一个文件的基本权限为何?

可使用的指令:例如 vi 文本编辑器等;

目录所需权限:使用者在该文件所在的目录至少要有 x 权限;

文件所需权限:使用者对该文件至少要有 r, w 权限

4、让一个使用者可以创建一个文件的基本权限为何?

目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!

5、让使用者进入某目录并执行该目录下的某个指令之基本权限为何?

目录所需权限:使用者在该目录至少要有 x 的权限;

文件所需权限:使用者在该文件至少需要有 x 的权限

例题:让一个使用者 shark 能够进行“cp /dir1/file1 /dir2”的指令时,请说明 dir1, file1, dir2 的最小所需权限为何?答:执行 cp 时, dmtsai 要“能够读取来源文件,并且写入目标文件!”所以应参考上述第二点与第四点的说明! 因此各文件/目录的最小权限应该是:

dir1 :至少需要有 x 权限;

file1:至少需要有 r 权限;

dir2 :至少需要有 w, x 权限。

例题:有一个文件全名为 /home/student/www/index.html ,各相关文件/目录的权限如下:

drwxr-xr-x 23 root root 4096 Sep 22 12:09 /

drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home

drwx------ 6 student student 4096 Sep 29 02:23 /home/student

drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www

-rwxr--r-- 6 student student 369 Sep 29 02:27 /home/student/www/index.html

请问 shark 这个帐号(不属于student群组)能否读取 index.html 这个文件呢?答:虽然 www 与 index.html 是可以让 shark 读取的权限,但是因为目录结构是由根目录一层一层读取的, 因此 shark 可进入 /home 但是却不可进入 /home/student/ ,既然连进入 /home/student 都不许了, 当然就读不到 index.html 了!所以答案是“shark不会读取到 index.html 的内容”!

那要如何修改权限呢?其实只要将 /home/student 的权限修改为最小 711 ,或者直接给予 755 就可以啦! 这很重要!

六、文档默认权限 umask

权限掩码

umask -S

当用户创建文档时,创建后的默认权限计算方法

创建文件时:

(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--

创建目录时:

(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

修改用户的 umask 可以在 /etc/profile 和 /etc/bashrc 文件中修改。

七、 文件特殊权限: SUID, SGID, SBIT

Set UID

名词介绍

二进制文件 就是可以被执行的文件,通俗说就是命令文件,程序文件,就想是 windows 中的 .exe 文件。

二进制文件也可以叫做二进制程序

先看一个文件

➜ ~ ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 27832 Jun 10 2014 /usr/bin/passwd

上面文件拥有者的权限部分中的 x 位置,出现了一个 s, 这个 s 标识就代表了这个文件具有 SUID 特殊权限。

其作用和限制如下:

SUID 权限仅对二进制程序(binary program)有效;

执行者对于该程序需要具有 x 的可执行权限;

本权限仅在执行该程序的过程中有效 (run-time);

在执行此文件时,执行者将具有该程序拥有者 (owner) 的权限。

给一个文件设置 SUID

chmod u+s file

Set GID

当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID,即 SGID .

当一个文件具有 SGID(用的情况不多)

SGID 对二进制程序有用;

程序执行者对于该程序来说,需具备 x 的权限;

执行者在执行的过程中将会获得该程序群组的权限!

当一个目录具有 SGID

用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;

用户在此目录下的有效群组(effective group)将会变成该目录的群组;

用途:若用户在此目录下具有 w 的权限(可以新建文件),则用户所创建的新文件时,该新文件的群组与此目录的群组相同。

Sticky Bit

这个 Sticky Bit, SBIT 目前只针对目录有效,对于文件已经没有效果了。

SBIT 对于目录的作用是:

当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时;

当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件

ls -ld /tmp

设置 SBIT

chmod o+t a/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值