用户与用户组
- Linux中, 任何一个文件都具有”User, Group及Others”3种身份的个别权限
- 默认情况下, 所有的系统上的账号与一般身份用户, 以及root相关信息都记录在/etc/passwd文件内, 个人密码记录在/etc/shadow文件内, 所有的组名都记录在/etc/group内
Linux文件权限概念
Linux文件属性
root@DESKTOP-LMORNNS:/# ls -al
total 700
drwxr-xr-x 21 root root 4096 Jul 8 20:06 .
drwxr-xr-x 21 root root 4096 Jul 8 20:06 ..
drwxr-xr-x 4 root root 4096 May 6 09:34 .vim
lrwxrwxrwx 1 root root 7 Mar 25 05:40 bin -> usr/bin
drwxr-xr-x 2 root root 4096 Mar 25 05:47 boot
drwxr-xr-x 8 root root 2740 Jul 8 20:06 dev
- 第一列代表这个文件的类型和权限
- 第一个字符代表这个文件是”目录, 文件或是链接文件等”
- [d]表示目录
- [-]表示文件
- [l]表示连接文件
- [b]表示设备文件里面的可供存储的接口设备
- [c]表示设备文件里面的串行端口设备, 例如键盘, 鼠标
- 接下来的字符, 以3个为一组, 均为rwx3个参数的组合, 代表可读可写可执行
- 第一组为文件所有者的权限
- 第二组为同用户组的权限
- 第三组为其他非本用户组的权限
- 第一个字符代表这个文件是”目录, 文件或是链接文件等”
- 第二列表示有多少文件名连接到此节点(i-node)
- 每个文件都会将它的权限与属性记录到文件系统的i-node中, 而目录树却是使用文件名来记录, 因此每个文件名就会连接到一个i-node, 这个属性记录的就是有多少不同的文件名连接到相同的一个i-node号码
- 第三列表示文件或目录的所有者账号
- 第四列表示这个文件的所属用户组
- 第五列为文件的容量大小, 默认为B
- 第六列为文件的创建日期或最近的修改日期, 格式为(月/日) 及时间, 若距离太久, 则仅显示年份
- 第七列为该文件名, 以”·”开头为隐藏文件
如何改变文件属性与权限
- chgrp: 改变文件所属用户组
- 改变的组名须在/etc/group中存在, 否则会显示错误 ```shell chgrp [-R] 用户组 文件 -R 递归一个目录下所有的文件
示例 chgrp -R xinzhang 1.txt
- chown: 改变文件所有者
```shell
chown [-R] 用户:用户组 文件
-R 递归
示例: chown xinzhang:xinzhang 1.txt
- chmod: 改变文件的权限
- 数字类型改变文件权限, r:4, w:2, x:1 ```shell chmod [-R] xyz 文件或目录 示例
- 编辑完一个shell后, 权限通常为”-rw-rw-r”, 要将文件修改成可执行文件并且不让他人修改的话, 需要”-rwxr-xr-x”, 需要执行chmod 755 test.sh
有些文件不希望被别人看到, 需要设置权限为”-rwxr——-“, 需执行chmod 740 finename ```
- 符号类型改变文件权限, 使用u,g,o来代表user, group other3种身份的权限, 使用a代表全部的身份, 注意使用+,- 来设置权限时, 没有被执行的选项, 权限不会变
- ```shell 示例:
- 设置一个文件权限为”-rwxr-xr-x”, 执行chmod u=rwx,go=rx filename
- 设置”-rwxr-xr”, 可使用 chmod u=rwx,g=rx,o=r filename
- 给文件增加写入, 设置 chmod a+w filename ```
目录与文件的权限意义
- 权限对文件的重要性
- r代表可读取文件内容
- w代表可编辑, 新增或修改文件内容, 但不含删除该文件
- x代表该文件具有可被系统执行的权限
- 权限对目录的重要性
- r代表具有读取目录结构列表的权限
- w非常强大, 代表具有更改该目录结构列表的权限
- 新建新文件或目录
- 删除已存在的文件或目录
- 将已存在的文件或目录重命名
- 转移该目录内的文件, 目录位置
- x代表用户能否进入该目录
Linux文件种类与拓展名
- 文件种类
- 普通文件, 第一个字符为[-], 按文件内容, 可大略分为
- 纯文本文件(ASCII), cat读取
- 二进制文件(binary)
- 数据格式文件(data), last读取
- 目录, 第一个属性为[d]
- 连接文件, 第一个字符为[l], 类似win的快捷方式
- 设备与设备文件(device), 与系统外设以及存储等相关的一些文件, 通常集中在/dev目录, 通常分为两种:
- 快设备文件(block), 就是一些存储数据, 以提供系统随机访问的设备接口, 如硬盘, 软盘等, 第一个属性为[b]
- 字符设备文件(character), 一些串行端口的接口设备, 如键盘, 鼠标等, 第一个属性为[c]
- 套接字(sockets), 数据接口文件, 通用用在网络上的数据连接, 我们可以启动一个程序来监听客户端的请求, 而客户端就可以通过这个socket来进行数据的通信了, 第一个属性为[s], 通常在/var/run目录中可以看到这种文件类型
- 管道(FIFO,pipe), 其目的在于解决多个程序同时访问一个文件所造成的错误问题, 第一个属性为[p]
- 普通文件, 第一个字符为[-], 按文件内容, 可大略分为
- Linux文件常用拓展名
- .sh表示脚本或批处理文件(scripts)
- Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件
- .html, .php网页相关文件
- Linux文件长度限制
- 使用默认的Ext2/Ext3文件系统时, 针对文件名的长度限制为:
- 单一文件或目录最大为255个字符
- 包含完整路径名称以及目录(/)的完整文件名为4096个字符
- 使用默认的Ext2/Ext3文件系统时, 针对文件名的长度限制为:
Linux目录配置
FHS
Filesystem Hierarchy Standard, 规范了每个目录下应放置什么样的数据
FHS依据文件系统使用的频繁与否与是否允许用户随意改动, 而将目录定义成为四种交互作用的形态
- 可分享的: 可以分享给其他系统挂载使用的目录, 包括执行文件与用户的邮件等数据
- 不可分享的: 自己机器上面运行的设备文件或者是与程序有关的socket文件等
- 不变的: 例如函数库, 文件说明文件, 系统管理员所管理的主机服务配置文件等
- 可变动的: 经常改变的数据
事实上, FHS仅定义出三层目录:
- /: root根目录, 与开机系统有关
- /usr: UNIX software resource, 与软件安装/执行有关
- /var: variable, 与系统运作过程有关
FHS定义出根目录有下面这些子目录存在才好
- 补充:
- /usr: /usr里面放置的数据属于可分享的与不可变动的, UNIX Software Resource, 也就是UNIX操作系统软件资源所放置的目录, 而不是用户的数据, 系统默认的软件都会放置到/usr下面, 类似win的C:\Windows\和C:\Program files\这两个目录的综合体
- /var: 针对常态性变动的文件, 包括缓存, 登录文件以及某些软件运行所产生的文件, 包括程序文件, 例如MySQL数据库的文件等
目录树
绝对路径与相对路径
- 绝对路径: 由根目录开始写起的文件名或目录名称, 如/home/dmt
- 相对路径: 相对于目前路径的文件名写法, 如./home/dmt
- . :代表当前目录, 也可以用./来表示
- ..: 表示上一级目录, 也可以用../来表示
查看Linux标准(Linux Standard Base)
uname -r
lsb_release -a