欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux文件基本权限与目录结构

程序员文章站 2022-05-11 19:52:49
...


本系列参考《鸟哥的Linux私房菜》而作,更多为查阅方便,鸟哥那本书实在是字太多了,方便自查吧。

1、Linux的文件权限与目录配置

1.1用户与用户组

主要区分用户,用户组,其他人的概念;
关键要点:

  • 每个文件都有user,group,others三种身份的个别权限;
  • 关于用户身份的记录信息在:/etc/passwd文件中,每一行都代表一个用户:
    Linux文件基本权限与目录结构
    • 关于用户密码的信息记录在:/etc/shadow中:
      Linux文件基本权限与目录结构
    • 关于用户组的信息记录在:/etc/group中:
      Linux文件基本权限与目录结构
    • root用户具有所有权限,是根用户;

1.2Linux权限

1.2.1Linux文件属性

文件权限是各种权限的起点,要了解文件权限先从文件属性开始,文件属性主要包含:
权限(读写执行三种权限),连接,所有者,用户组,文件容量,修改日期,文件名。
Linux文件基本权限与目录结构
第一个字符中:
字母d表示:目录;
符号-表示:文件;
字母l表示:连接文件;
字母b表示:设备文件中可供存储的借口设备;
字母c表示:设备文件中的串行端口设备;
后面的字母三个为一组,分别表示文件所有者的权限,用户组的权限,其他人的权限;
第二列开始分别对应 连接数,所有者,用户组,文件容量,修改日期,文件名;

1.2.2改变文件权限与属性

    有时我们在复制文件时会需要修改文件的属性,因为复制文件会复制文件的属性与权限 ,如果不修改复制所得的文件相关属性可能会达不到需要的效果(具体案例参考鸟哥P145)。

  • 改变文件的所有者:chown:change owner;
chown [-R] 用户名 要更改的文件或目录
chown [-R] 用户名:组名  要更改的文件或目录    同时修改所有者和所有组;

-R可选参数表示递归的修改所有子目录;

  • 改变用户组
chgrp 【-R】 用户组名  文件或目录名
  • 改变文件的权限
1、chmod 【-R】xyz 文件名或目录名
chmod 644 .log
2、chmod u=rwx ,go=rwz /a=rwz   文件名  
3、chmod  u/g/o/a+w 文件名    增减某种权限+号或者-号的使用;

xyz分别表示文件所有者,用户组,其他人拥有的权限,w(write)用数值表示:2;r(read):4;x(execute)执行:1;这三种类别的权限为读写可执行权限的数值之和;

第二种方式修改权限,u,g,o,a代表的意义是:u:user用户;g:用户组;o:other其他用户,a:all所有身份

第三种权限修改方式中字母含义与第二种相同,只是使用场景不同;

1.2.3文件与目录权限的意义

  • 文件权限的意义
    文件的读写以及执行权限相对是好理解的,需要注意的是这三种权限是针对文件内容的权限;文件能否被执行只与其是否具有X权限有关,与其他没有关系
  • 目录权限的意义
    r读权限:读取目录结构列表的权限,只有当你具有该权限时,ls命令才能将目录列表显示出来;
    w写权限:表示更改目录的权利,与该目录下的文件名的变动都需要该权限:新建文件与目录,删除已经存在的文件或目录,重命名已经存在的文件或目录,转移目录下文件或目录位置等。
    x执行权限:目录只是用来记录文件名,不存在执行与否,执行权限指的是用户能否进入该目录作为工作目录,也就是使用cd命令,能否进入该目录下;

1.3Linux目录配置标准

    Linux系统版本多样,为了有个大家都能参照的文件体系,就有了FHS(Filesystem Hierarchy standard)标准,不同版本的Linux系统按照此标准规范自己的文件系统,规范特定的目录下存放什么样的数据。

1.3.1目录的四种形态

可分享的 不可分享的
不变的 /usr(软件放置处);/opt(第三方软件) /etc(配置文件);/boot(开机与内核文件)
可变的 /var/mail(用户邮箱信箱);/var/spool/news(新闻组) /var/run(程序相关);/var/lock(程序相关)

可分享与不可分享的区别在于:该目录是否允许其它系统挂载使用;

可变与不可变的区分在于:数据是否会随着版本的不同二发生变化;

1.3.2FHS定义的存放数据的三层目录

- /(root根目录:与开机系统有关;
  根目录与开机,还原,系统修复等操作都有关系,所有的目录也是由根目录衍生出来的,因此其地位显赫,最好不要放在非常大的分区(分区越大,你越容易放较多数据,错误率会上升!),保持根目录越小越好。
  具体来讲根目录下需要有以下子目录(只列出了部分):
   /bin:放置执行文件的目录之一,特殊之处在于其放置的是在单用户维护模式下还能被操作的命令,cat,chmod,chown,date,mv,mkdir,cp,bash等;
  /boot:这个前面已经说过了,主要是放置开机会使用的文件;
  /dev:任何设备与接口设备都以文件的形式存放在该目录下,访问某个文件就是访问某个设备,常见有/dev/lp*,/dev/hd*等;
  /etc:系统的主要配置文件放置在该目录中;
  /home:系统默认的用户主文件夹,创建一个一般用户账号时,默认的用户主文件夹都会规范到该目录下;~(代表当前用户主文件夹);~xin(代表xin的主文件夹);
  /tmp:一般用户或者是正在执行的程序暂时存放文件的地方;
Linux文件基本权限与目录结构
- /usr(unix software resource):与软件安装/执行有关;
  该目录存放的数据是可分享不可变动的,可以分享给局域网内的其它主机来使用;
所有Linux版本发布者提供的软件都会放置在该目录下,其需要有以下子目录:
/usr/X11R6 windows系统重要数据放置目录,/usr/bin(与/bin相区分)存放绝大部分用户可用的命令;/usr/include/(c与c++等语言的头文件与包文件存放出);/usr/local/系统管理员在本机自行下载安装的软件建议存放在该目录;/usr/share/放置共享文件的地方;/usr/src一般源码建议放置在这里;
Linux文件基本权限与目录结构
- /var(variable):与系统运行过程有关;
  该目录安装时会占用较大的硬盘容量,在系统运行后会渐渐占用硬盘容量的目录;因此/var目录针对常态性变换的文件,包括缓存,登录文件以及软件运行所产生的文件。
/var/cache/:应用程序本身运行过程中会产生的一些暂存文件;
/var/lib/:程序本身执行过程中,需要使用到的数据文件放置的目录。
/var/log/:登录文件的存放位置;/var/log/messages,/var/log/wtmp:记录登录者的信息;
/var/run/:程序或者服务启动后会将PID放置在这个目录下;
Linux文件基本权限与目录结构

1.4绝对路径与相对路径

    主要概念应该是了解的,主要是注意以下:

  • .:一个点号代表当前目录;
  • …:两个点号代表上一层目录;

1.5目录全家福

Linux文件基本权限与目录结构
    Linux中所有文件和目录都是由根目录开始的,上图展示了其整个目录树结构,前文介绍了常见后者是常用到的一些目录,其他未涉及的可以查阅参考资料。

参考资料

[1]《鸟哥的Linux私房菜基础学习篇》(第三版),