引:了解好文件权限和目录的具体含义才能更好的操作Linux,所以理解好文件权限与目录配置才至关重要。
用户与用户组
用户(User)
- 用户可以随意改变自己所拥有的文件
- root用户就是最大的大佬,可以干任何事。
用户组(Group)
- 同一个用户组的用户可以访问该用户组的文件
- 每个账号可以加入多个用户组
- 在同一个用户组的文件也可以设置不同的权限,可以不让本组用户查看
其他人(Others)
除了文件用户、同组用户以外的人就是其他人。
Linux用户身份与用户组记录的文件
- 系统上的账号与一般身份用户以及root的相关信息都记录在/etc/passwd文件中
- 个人的密码都记录在/etc/shadow文件中
- Linux所有的组名都记录在/etc/group文件中
文件权限概念
Linux文件属性
我们可以利用下面的命令来查看文件属性:
ls -al // 列出所有文件详细的权限和属性(包含隐藏文件)
如下:1
2
3
4
5
6总用量 92
drwxr-xr-x. 22 root root 4096 3月 17 12:33 .
dr-xr-xr-x. 20 root root 4096 3月 22 09:14 ..
drwxr-xr-x. 2 root root 4096 11月 5 2016 adm
drwxr-xr-x 2 root root 4096 3月 12 10:27 alldata
... 省略
解释一下上面7列的意思:
第一列:文件的类型与权限
第一个字符代表这个文件是“目录、文件或链接文件等”。
- d:目录文件
- -:普通文件
- l:链接文件
- b:用于存储数据的设备文件
c:用于传输数据的设备文件:鼠标、键盘
接下来都是三个字符为一组,分别表示文件所有者的权限、同组用户的权限、其他用户的权限,而且r(读)、w(写)、x(执行)的顺序是固定不变的。
- 第二列:有多少文件名连接到此节点
- 第三列:这个文件(或目录)的所有者账号
- 第四列:这个文件所属的用户组
- 第五列:这个文件的大小,单位是B
- 第六列:这个文件的创建日期或修改日期
- 第七列:文件名
改变文件属性与权限的命令
- chgrp:改变文件所属的用户组 (注意-R 参数,递归更改)
- chown:改变文件所有者 (注意-R 参数,递归更改)
chmod:改变文件的权限 (注意-R 参数,递归更改)
改变文件的权限有两种办法,分别是:用数字进行权限的修改、用符号进行权限的修改。
用数字进行权限的修改:权限有9个字母组成,并且每三个为一组,分别表示:文件主的权限、同组用户的权限、其他人的权限。在这种方式中,r=4、w=2、x=1,将每一组的三个值加起来,组成一个三位数即可。实例如下:
1
chmod -R 754 文件或目录
用符号进行权限的修改:我们通过u(user),g(group),o(others),a(all)来表示身份权限,通过
r(读),w(写),x(执行)来表示读写的权限,通过+(加入),-(除去),=(设置)来表示修改操作,实例如下:1
chmod u/g/o/a +/-/= r/w/x 文件/目录
目录与文件的权限意义
- 权限对文件的重要性:
- r:可读取此文件的实际内容。
- w:可以编辑、新增或者修改该文件的内容(单不含删除该文件)
- x:该文件具有可以被系统执行的权限。
- 权限对目录的重要性
- r:表示具有读取目录结构的权限,即可以执行ls命令
- w:表示具有更改该目录结构列表的权限,比如新建新的文件与目录、删除已经存在的文件与目录、将已存在或目录进行重命名、转移该目录内的文件和目录位置
- x:表示用户能否进入该目录,即可以使用cd进入该目录
文件种类与扩展名
- 文件种类
- 普通文件
- 纯文本文件(ASCII),可以用cat命令读取
- 二进制文件(binary),Linux中的可执行文件
- 数据格式文件(data),就是程序运行时会被读取的具有特定格式的文件,如配置文件,需要用last命令去读取,用cat读取会乱码
- 目录
- 连接文件,类似Windows下的快捷方式
- 设备与设备文件
- 块设备文件,用于存储数据的设备文件,如:硬盘、软盘
- 字符设备文件,用于数据传输的设备文件,如:键盘、鼠标
- 套接字,这个设备文件在/var/run中
- 管道,用于解决多个程序同时访问一个文件所造成的错误问题
- 普通文件
文件扩展名
Linux并没有扩展名,一个Linux的文件是否可以执行,取决于这个文件的属性中是否有x这个权限(也要真的可以执行)。
但是为了增强文件的可读性,我们还是给文件增加了“扩展名“。如下面几种(等):- *.sh表示脚本或批处理文件
- *Z、*.tar、*.tar.gz、*.zip、*.tgz他们都是压缩文件
注意:从网上下载的文件的权限是有可能发生改变的,所以当我们下载的文件无法运行时查看一下它的权限是否有x。
Linux对文件的限制:Linxu默认采用Ext2/Ext3文件系统,对文件名的长度限制为,单个文件名或目录名最大长度255个字符;完整的文件或目录名最大长度为4096个字符。
Linux目录配置
Linux目录配置标准
FHS一句文件系统使用的频繁与否与是否允许用户随意改动,而将目录定义为四中交互的形态,如下:
/ | 可分享的(shareable) | 不可分享的(unshareable) |
---|---|---|
不变的(static) | /usr (软件放置处) | /etc (配置文件) |
不变的(static) | /opt (第三方软件) | /boot(开机与内核文件) |
可变动的(variable) | /var/mail (用户邮箱信件) | /var/run (程序相关) |
可变动的(variable) | /var/spool/news (新闻组) | /var/lock (程序相关) |
解释一下四个类型的意思:
- 可分享的:可以分享给网络上的其他主机挂载使用
- 不可分享的:只与自己的机器有关,所以自然就不能分享给其他主机
- 不变的:不管什么样的distributions,这些数据基本不发生变化。一般这些目录中存放函数库、系统配置文件等
- 可变的:经常改变的数据,如登录文件、新闻组等
根目录是整个系统最重要的目录,其他所有的子目录都是由根目录衍生而来的,同时根目录也与开机、还原、系统修复等操作有关。
FHS建议:根目录要足够的小,而且应用程序不要和根目录放在同一个分区中。同时,FHS建议根目录下应该要有这些目录:
目录 | 应放置文件内容 |
---|---|
/bin | 在bin目录下的命令可以被所有账号使用,一般的命令是:cat、chmod、chown、date、mv、mkdir、cp、bash |
/boot | 主要放置开机会使用到的文件 |
/dev | 任何设备都是以文件的形式存放在这个目录当中 |
/etc | 统主要的配置文件都放在这个目录中。这个目录下的文件属性是可以给一般用户查阅的,但只有root才可以修改,FHS建议:这个目录下不要放置可执行文件 |
/home | 系统默认的用户主文件夹,~表示当前登陆用户的主文件夹 ,~rex表示指定用户的主文件夹 |
/lib | 存放开机时用到的库函数及/bin、/sbin目录下的命令会使用到的库函数 |
/media | 放置可删除的设备文件。如:软盘、光盘 |
/mnt | 如果要临时挂载一些额外的设备就放在这个文件夹下 |
/opt | 放置第三方软件的目录 |
/root | 系统管理员的主文件夹 |
/sbin | 放置开机过程中需要的,包括开机、修复、还原系统所需要的命令 |
/srv | 是service的缩写,存放网络服务所需的一些数据 |
/tmp | 一般用户执行程序暂时存放数据的地方。任何人都可以访问,所以要定时清理一下。FHS建议distributions开机时要将这个目录清空 |
其他重要的目录:
目录 | 应放置文件内容 |
---|---|
/lost+found | 使用ext2/ext3文件系统才会产生的一个目录。当文件系统发生错误时,一些丢失的片段就会放在这个目录中 |
/proc | 是一个虚拟文件系统,也就是它的数据都是存放在内存中的,不占用硬盘空间 |
/sys | 也是一个虚拟文件系统,记录内核相关信息 |
开机的时候只有根目录被挂载了,其他的目录所在的分区都是在系统启动完成之后才被挂载的。因此与开机过程有关的目录就必须要和根目录放在同一个分区中。必须与根目录放在同一个分区中的目录有下面这些目录:
- /etc:配置文件
- /bin:重要的执行文件
- /dev:所需要的设备文件
- /lib:执行文件所需要的库函数与内核所需要的模块
- /sbin:重要的系统执行文件
/usr目录:=UNIX Software Resource,是操作系统关键资源放置的目录。
FHS建议:所有软件开发者都应将数据放置在这个目录的子目录下,而不要自行创建独立的目录。
这个目录就相当于Windows下的c:\program files
/var目录:/usr放置安装程序时所需要的较大容量的文件,而/var下存放系统运行后才会渐渐占用硬盘的目录。如:缓存、日志、Mysql数据库的文件等。
目录树
在Linux里面,所有的文件与目录都是由根目录开始的,那是所有目录与文件的源头,然后在一个一个分支下来,我们称这种目录配置为目录树。
目录树主要有以下特征:
- 目录树的起始点为根目录(/,root)
- 每个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统,例如可以利用NFS服务器挂载某特定目录等
- 米格文件在此目录树的文件名(包含完整路径)都是独一无二的。
参考
- 《鸟哥的Linux私房菜》