1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux操作系统使用基础03:Linux文件权限与目录配置

Linux操作系统使用基础03:Linux文件权限与目录配置

时间:2024-06-13 00:32:40

相关推荐

Linux操作系统使用基础03:Linux文件权限与目录配置

目录

1. 用户与用户组简介

1.1 作用

1.2 相关配置文件

1.2.1 用户信息文件:/etc/passwd

1.2.2 影子文件:/etc/shadow

1.2.3 组信息文件:/etc/group

1.2.4 组密码文件:/etc/gshadow

2. Linux文件权限解析

2.1 3个身份和3种权限

2.2 权限各字段解释

2.2.1 文件类型

2.2.2 文件权限

2.2.3 文件链接数

2.2.4 文件所有者

2.2.5 文件所属用户组

2.2.6 文件大小

2.2.7 文件内容最后修改时间

2.2.8 文件名

2.3 创建文件/目录的缺省权限

3. 文件与目录的权限意义

4. 修改文件的属性与权限

4.1 chgrp命令

4.2 chown命令

4.3 chmod命令

5. Linux文件名限制

5.1 文件名长度限制(ext2/ext3)

5.2 文件名字符限制

6. Linux目录配置

6.1 目录定义的四种交互形态

6.2 FHS规则简介

6.3 Linux目录简表

7. 绝对路径和相对路径

7.1 绝对路径:由根目录写起的路径

7.2 相对路径:相对于当前位置的路径

8. 查看Linux distribution信息

1. 用户与用户组简介

1.1 作用

用户与用户组就是用于描述用户与文件的关系,即所有者(User)、同组(Group)、其他人(Other)

说明1:Linux中每添加一个用户,就会默认添加一个和该用户名相同的组,作为该用户的初始组(/etc/passwd文件中指出的就是这个初始组ID)

说明2:一个用户可以加入多个用户组

1.2 相关配置文件

1.2.1 用户信息文件:/etc/passwd

/etc/passwd文件各字段说明,

① 用户名

用来对应UID

② 密码

早期Unix将密码放置在该字段,由于所有程序均能读取该文件(/etc/passswd文件的权限为-rw-r--r--),容易造成密码数据被窃取

目前密码数据被放置在/etc/shadow文件中,所以此处字段显示为x

③ UID

UID = 0:root用户

UID = 1 ~ 499:保留给系统使用的ID(默认使用习惯)

由于希望使用最小的权限去运行系统中启动的服务,一般不使用root身份去执行,所以就需要提供这些运行中的程序的拥有者账号,这些账号通常是不可登陆的

UID = 500及以上:一般用户

④ GID

当前用户缺省组ID,用户组相关信息记录在/etc/group文件中

⑤ 用户信息说明字段

⑥ 家目录

当用户登陆后,他的shell将把该目录作为用户的工作目录

⑦ 用户登陆shell

很多系统用户的shell使用/sbin/nologin,此时该用户无法登陆系统。所谓"无法登陆"指的仅是这个用户无法使用bash或其他shell来登陆系统而已(其实系统用户也无需登陆),并不是说这个用户无法使用系统资源

说明:系统管理员通常没必要直接修改/etc/passwd文件,可以使用Linux提供的账号管理工具实现账号的管理与维护

1.2.2 影子文件:/etc/shadow

/etc/shadow文件的权限如下,

这就确保了用户密码的安全性

/etc/shadow文件各字段说明,

① 用户名

与/etc/passwd文件中用户名字段相同

② 加密密码

经过SHA512散列加密算法加密后的密码

所有伪用户的密码都是"!!"或"*",代表没有密码,是不能登陆的

如果新创建的一般用户不设置密码,那么该用户的密码字段也是"!!",表示这个用户没有密码,不能登陆

③ 最后一次修改密码的时间

以自1970年1月1日开始以来的天数计算

下图中root用户最后一次修改密码的时间是1970年1月1日之后的17628天,也就是12月11日

④ 密码有效期

该字段用于强制用户定期修改密码,可以指定距离第3个字段(最后一次修改密码)多长时间内再次变更密码

⑤ 密码需要变更前的警告天数

⑥ 密码过期后的宽限天数

⑦ 账号失效时间

以自1970年1月1日开始以来的天数计算

1.2.3 组信息文件:/etc/group

/etc/group文件各字段说明,

① 组名

② 组密码

此处的"x"也仅是密码标识,真正加密后的组密码保存在/etc/gshadow文件中

用户组密码主要是用来指定组管理员。当root用户没有时间进行用户的组管理时,可以指定组管理员,如果有用户需要加入或者退出某用户组,可以由该组的组管理员替代root进行管理

③ GID

④ 组中的用户

该字段用于列出每个组中包含的所有用户,如果该用户组是这个用户的初始组,则该用户不会列入该字段,所以该字段显示的是这个用户组的附加用户

每个用户可以加入多个附加组,但是只能属于一个初始组。如果需要把用户加入其他组,则需要以附加组的形式添加

1.2.4 组密码文件:/etc/gshadow

/etc/gshadow文件的权限如下,也是为了确保组密码的安全

/etc/gshadow文件各字段说明,

① 组名

与/etc/group文件中的组名对应

② 组密码

对于大多数用户来说,通常不设置组密码

③ 组管理员

从系统管理员的角度来说,该文件最大的功能就是创建组管理员

④ 组中的附加用户

与/etc/group文件中的组附加用户相同

2. Linux文件权限解析

2.1 3个身份和3种权限

3个身份:owner group others

3种权限:read write execute

2.2 权限各字段解释

2.2.1 文件类型

-:普通文件

具体的种类可以用file命令查看,一般可分为,

① 纯文本文件,编码集可以是ASCII、UTF8等

② 二进制文件(binary)

③ 数据格式文件(data),这属于一种特殊格式的文件,由特定的程序读取处理

e.g. last命令使用的/var/log/wtmp文件

查看wtmp的man手册可知,该文件就是将登陆信息组织为结构体存储

d:目录文件

l:链接文件(软连接)

b:块设备文件

c:字符设备文件

s:套接字文件

p:管道文件(有名管道)

2.2.2 文件权限

rw-r--r--就是3个身份的3种权限

2.2.3 文件链接数

表示有多少文件名链接到标识该文件的inode

Linux中每个文件都会将他的权限与属性记录到inode中,即文件系统是以inode来管理文件的;而目录是以文件名来管理文件的。

目录的block中记录的就是目录中的文件名与inode的对应关系,因此在实现层面,每个文件名都会关联到一个inode,也就有了此处的文件链接数。

说明:空目录的链接数为什么是2?

根据链接数的说明,一定是有2个文件名关联到了同一个inode,这2个文件名正是empty_dir和该目录下的 .

由此可以讨论下在A目录中新建目录,对A目录链接数的影响。假设在A目录下新建B目录,那么B目录的初始链接数为2;而B目录下.. 文件和A目录关联的inode相同,所以A目录的链接数会加1

2.2.4 文件所有者

如题

2.2.5 文件所属用户组

文件的默认用户组为创建该文件用户的初始组

2.2.6 文件大小

默认以B为单位,可以使用-h选项进行人性化显示

2.2.7 文件内容最后修改时间

Linux中有三个时间,

① 文件最后获取时间(access time)

② 文件内容最后修改时间(modify time)

③ 文件属性最后修改时间(change time)

实际上Linux中没有所谓文件创建时间

说明1:touch命令默认会同时修改access time & modify time,可通过选项只修改其中之一

说明2:后续笔记中将看到,修改文件属性涉及的是inode,修改文件内容涉及的是block

说明3:通过stat命令可以查看文件的属性和状态

疑问:此处Blocks & Device字段的含义并未完全理解,尤其是Blocks为啥使用了8个

2.2.8 文件名

如果以. 开头,是隐藏文件

2.3 创建文件/目录的缺省权限

所有者:文件创建者

所属组:文件创建者的初始组(每个用户可以属于多个组,但初识组只有一个)

权限:通过umask命令管理

命令名称:umask

命令英文愿意:the user file-creation mask

命令所在路径:shell内置命令

执行权限:所有用户

语法:umask [-S]

umask 新文件权限掩码

-S:以rwx形式显示新建文件缺省权限掩码

功能描述:显示、设置文件的缺省权限掩码

root的umask为0022,即在创建文件/目录时会取消group和other的w权限。当然,在创建文件时,默认不具备x权限。

说明1:普通用户默认的umask值为0002

说明2:关于设置文件权限掩码

使用umask命令设置文件权限掩码只能在shell中暂时生效,要想永久修改需要修改脚本(比如/etc/bashrc,该脚本中会根据不同的UID设置不同的umask;也可以修改各用户家目录下的.bashrc,修改时要注意各脚本的执行顺序,后执行的脚本会覆盖之前的设置)

3. 文件与目录的权限意义

关键:rwx权限对普通文件[-]和目录[d]的意义不同

核心:文件和目录(目录也是文件),均将权限属性记录在inode中,实际数据记录在block中。rwx权限就是通过inode中的信息,控制不同用户对block的访问。

造成文件与目录不同的原因就是文件的block中记录的是文件的数据,而目录的block中记录的是该目录中文件名与inode的对应关系

说明1:rwx权限不能限制root用户

e.g. /etc/shadow文件的权限为000,但是root用户依然可以编辑

说明2:如果只是拥有一个目录的r 权限而没有x 权限,在使用ls显示目录内容时可能仍无法成功

首先在/home/chencheng目录中新建test目录,并在其中touch 2个文件1.c和2.c,然后修改test目录权限为444使得用户失去x权限,然后使用ls查看该目录的内容。

分析:原因可能是ls的实现需要进入目标目录,但此时用户没有x权限

4. 修改文件的属性与权限

4.1 chgrp命令

命令名称:chgrp

命令所在路径:/bin/chgrp

执行权限:所有用户

功能描述:改变文件或目录的所属组

语法:chgrp [-R] 组名 文件名/目录名

-R:递归修改目录下的所有文件/目录

注意1:只有root用户可以进行此操作(不然可以随便给其他用户组添加文件了~~)

注意2:组名必须在/etc/group文件中,否则报错

4.2 chown命令

命令名称:chown

命令所在路径:/bin/chown

执行权限:所有用户

功能描述:改变文件所有者和所属组

语法:chown [-R]用户名[: 组名]文件名/目录名

-R:递归修改目录下的所有文件/目录

使用场景:root用户把自己的文件复制给普通用户(cp会保留文件的所有者和所属组),为了让普通用户能修改这个文件,root用户应当把这个文件的属主修改为那个普通用户

注意1:只有root用户可以进行此操作

注意2:chown可以仅修改用户名,也可以同时修改组名,此时以分号分割用户名和组名

注意3:用户名必须在/etc/passwd文件中,否则报错

4.3 chmod命令

命令名称:chmod

命令所在路径:/bin/chmod

执行权限:所有用户

功能描述:改变文件或目录的权限

语法:①数字法;②字母法

数字法比较熟悉,不再详解

字母法规则如下:

示例:chmod u=rwx,go=rx .bashrc

注意1:u=rwx,go=rx是连在一起的,中间没有空格

注意2:只有root用户和文件所有者可以修改文件权限

注意3:加-R选项可以进行递归修改

5. Linux文件名限制

5.1 文件名长度限制(ext2/ext3)

① 单一文件或目录文件名最长255个字符

② 包含完整路径最长4096个字符

5.2 文件名字符限制

由于Linux在文件界面下的一些命令操作的关系,一般情况下文件名字应避免以下特殊字符(都是在shell中有特殊含义):

* ? < > ; & ! [ ] | \ ' " ( ) { }

还有文件名最好不以-开头,否则容易和命令选项混淆

6. Linux目录配置

注:Linux目录配置遵循FHS标准(Filesysytem Hierarchy Standard)

6.1 目录定义的四种交互形态

可/不可分享:该目录是否可以分享给其他系统挂载使用(比如通过NFS供其他机器挂载),不可分享的内容都是仅与自身机器有关

可/不可变动:该目录中的数据是否经常变动

6.2 FHS规则简介

FHS仅定义了三个目录应该放置的数据

/:根目录,与开机系统有关

/usr:UNIX software resource,与软件安装/执行有关

/var:variable,与系统运行过程有关

说明1:所有目录都由根目录衍生而来

说明2:根目录还与开机、还原、修复等操作相关。由于开机时需要特定的开机软件、内核文件、开机所需程序、函数库等文件数据;若系统出现错误时根目录也必须包含有能够修复文件系统的程序。

说明3:为了性能和稳定性,根目录所在分区越小越好

说明4:开机过程中仅有根目录会被挂载,其他分区则是开机完成后才会挂载。因此,根目录下与开机过程有关的目录必须和根目录在同一分区,包括

/etc:配置文件

/bin:重要执行文件

/dev:所需要的设备文件

/lib:执行文件所需的函数库和内核所需的模块

/sbin:重要的系统执行文件

说明5:关于/usr目录

① 所有系统默认的软件(distribution发布者提供的软件)都在/usr目录下

② 系统管理员自行下载安装的软件(非distribution默认)建议安装在/usr/local目录中

6.3 Linux目录简表

注:详细表格见《鸟哥的Linux私房菜:基础学习篇》P153 ~ 157

7. 绝对路径和相对路径

7.1 绝对路径:由根目录写起的路径

绝对路径的用途:绝对路径正确性好,如果在程序中使用相对路径,可能由于执行的工作环境不同,导致一些问题发生。

7.2 相对路径:相对于当前位置的路径

相对路径的用途:

① 一般在安装软件时使用。比如一个软件需要etc、bin、man这三个目录,但有些人喜欢将软件安装在/usr/local/packages/etc、/usr/local/packages/bin和/usr/local/packages/man下,有些人喜欢安装在/home/packages/etc、/home/packages/bin和/home/packages/man目录下,此时使用相对路径可以使得安装更方便。

② 使用相对路径可以避免写很长的路径名

8. 查看Linux distribution信息

命令名称:uname

命令所在路径:/bin/uname

执行权限:所有用户

功能描述:显示系统信息

语法:uname [-asr]

-a:显示所有信息

-s:显示内核类型

-r:显示内核发行版本

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。