Linux教程

Linux学习基础笔记(5)

本文主要是介绍Linux学习基础笔记(5),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.文件的相关内容

  我在用root执行 ls -al 与用普通用户执行后发现显示的文件不一样,通过一番折腾(一开始迷糊了到处搜没搜到,冷静下来才想起来可以用 pwd 查看当前路径)才发现用 su - 切换用户后对应的路径也变化了,虽然都是 ~ ,普通用户(就拿为自己的为例)~ 默认 /home/zjw ,root用户为 /root

  drwxr-xr-x 20 root root 4096  6月 11 01:17 ..

  第一个字符代表了这个文件的类型: d 为目录; - 为文件; | 为链接文件; b 为设备文件里的可供存储的周边设备; c 为设备文件里的串行端口设备如键盘鼠标等

  后面的字符三个一组,分别为 文件拥有者读写执行、加入此用户组账号读写执行、非本人且没有加入本用户组的其他帐号读写执行

  20表示有20个文件名链接到此节点

  第一个 root 表示这个目录的拥有者;第二个 root 表示这个目录的所属用户组

  4096为这个目录的容量大小,默认单位 Bytes (通过帮助得知可以用 -h 将大小改为 human-readable ,即单位自动切换成 K、M 等等

  后面的为创建日期或修改日期,太过久远不会详细显示

 


 

2.文件属性修改

  更改用户组名

    chgrp [-R] 组名 文件名

  -R 作用为递归

    chown [-R] .组名 文件名

  更改文件拥有者名

    chown [-R] 用户名 文件名

  两个名称同时修改

    chown [-R] 用户名:组名 文件名

  同时修改两个名称也可以用 . 相连,考虑到用户名或者组名中可能存在 . 所以用 : 间隔

    如果想知道自己电脑里面有哪些用户名及组名,可到 /etc/passwd 中查看用户名称, /etc/group 中查看用户组名

  更改文件权限1  利用数字修改

    chmod [-R] 分数 文件名

      r:4  w:2  x:1

  更改文件权限2  利用符号修改

    u g o a 分别表示 user group other all , + - = 分别表示 加入 移除 设置

1 root@zjw-Lenovo-Legion-Y7000P-2020H:~# ls -l 2
2 ---xrw-rw- 1 root root 0  6月 23 15:36 2

 

    若想将文件 2 权限改为 -rwxrwxrwx 即执行 chmod a=rwx 或者分开 chmod u=rwx,g=rwx,o=rwx  + - 同理

    相比较下来,个人更倾向于利用数字更改

 

  利用 cp 命令将文件复制给文件,或将多个文件复制到目录中

    cp 源文件 目标文件

    虽然 cp 命令会将执行者的属性与权限都复制给目标,但是经过测试我发现只有用户所有权限、用户组与其他人的读与执行权限会复制给目标,换句话说,如果源文件权限为 777 ,则目标文件权限为 755

 


 

3.目录与文件的权限

  文件的读取,即读取实际内容

  文件能否执行,与 x 有关,与文件名无关

  文件中的 w 权限,只能具有写入、编辑、新增、修改文件内容权限,不具备删除文件本身的权限

 

  目录的读取,即可以查询目录中的文件名数据

  目录的可写入权限即对目录中的文件的操作(非文件内部数据)

  目录的可执行,即能否进入该目录    !注意!:能否查看目录内容由 决定,能否进入目录由 x 决定

 

1 drwxr-x--x 2 root root 4096  6月 23 20:04 1
2 drwxr-xr-- 2 root root 4096  6月 23 20:04 2

 

分别建立两个目录,给予其他用户一个 r ,另一个 x

1 zjw@zjw-Lenovo-Legion-Y7000P-2020H:~$ cd ./1
2 zjw@zjw-Lenovo-Legion-Y7000P-2020H:~/1$ ls
3 ls: cannot open directory '.': Permission denied

只有执行权限的1目录可进入,却无法查询目录内容

1 zjw@zjw-Lenovo-Legion-Y7000P-2020H:~$ cd ./2
2 bash: cd: ./2: Permission denied
3 zjw@zjw-Lenovo-Legion-Y7000P-2020H:~$ ls -l ./2
4 ls: cannot access './2/file': Permission denied
5 total 0
6 -????????? ? ? ? ?             ? file

只有读取权限的2目录无法进入,也只能获取目录内的文件名列表

!若目录仅有 x 权限,则在此目录中使用 tab 无法自动补齐


 

4.文件种类

  纯文本常规文件、二进制常规文件、数据文件

  目录

  链接文件

  区块设备文件、字符设备文件

  数据接口文件

  数据输送文件

  一个文件能否被执行,只与文件属性有关,与文件名无关


 

5.FHS标准

  代表性目录:

  可分享 不可分享
不变 /usr(软件存放处) /etc(配置文件)
  /opt(第三方辅助软件) /boot(启动与内核文件)
可变动 /var/mail(用户邮箱) /var/run(程序相关)
  /var/spool/news(新闻组)

/var/lock(程序相关)

  可分享,即能够分享给网络上其他主机或其他系统挂载用的目录

  不可分享

  不变,即数据跟随着发行版不会经常变动

  可变动,经常修改的数据

 

  FHS针对目录树架构仅给出的三个目录的定义

    /(根目录):与启动系统有关    注意:表示的是根目录,有 root 的意思,而 /root 表示的是系统管理员的身份

    /usr:与软件安装/执行有关

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

/ 下的目录

FHS要求必须存在的目录
/bin 放置单人维护模式下还能够使用的命令,其中的命令可以被 root 与一般账号所使用,如:cat、chmod...
/boot 主要放置启动时会使用到的文件,包括Linux内核文件、启动选项等。Linux内核常用文件名为:vmlinuz
/dev 任何设备与接口设备都是以文件形式存在于这个目录中,只要读写某个文件,就等于读写某个设备
/etc

系统主要的配置文件几乎都在这个目录中,FHS建议不要放置可执行文件

/etc/opt(必要):这个目录放置第三方辅助软件 /opt 的相关配置文件

/etc/X11(建议):与 X Window 有关的各种配置文件都在这

/etc/sgml(建议):与SGML格式有关的各项配置文件

/etc/xml(建议):与XML格式有关的各项配置文件

/lib

放置在启动时会用到的函数库,以及在 /bin 或 /sbin 下面的命令会调用的函数库

/lib/modules(必要):这个目录放置可抽换式的内核相关模块(驱动程序)

/media 放置可删除设备如软盘、光盘、DVD等设备
/mnt 暂时用于挂载某些额外的设备
 /opt 放置第三方辅助软件(非原本发行版提供的独立软件)
/run 放置启动后所产生的各项信息
/sbin 放置只有 root 才能够使用的启动过程中所需要的命令
/srv 放置网络服务启动后所需要的数据目录   
/tmp 暂时放置文件的地方,任何人都能够存取,但是重要目录不要放置在这
/usr  
/var  
FHS建议可以存在的目录
/home 系统默认的用户家目录
/lib<qual> 存放与/lib 不同格式的二进制函数库
/root 系统管理员家目录

 

/usr 下的目录

FHS要求必须存在的目录
/usr/bin/ 所有一般用户能够使用的命令存放于此
/usr/lib/ 基本上与/lib功能相同
/usr/local/ 系统管理员在本机安装自己下载的软件,建议安装到此处
/usr/sbin/ 非系统正常运行所需要的系统命令,功能与/sbin差不多
/usr/share/ 主要放置只读数据文件,包括共享文件
FHS建议可以存在的目录
/usr/games/ 与游戏相关的数据放置处
/usr/include/ c/c++等程序语言的头文件与包含文件放置处
/usr/libexec/ 某些不被一般用户常用的执行文件或脚本等
/usr/lib<qual> 与 /lib<qual>/ 功能相同
/usr/src/ 一般源代码建议放置于此内核源码建议放置在 /usr/src/Linux/ 目录下

 

/var 下的目录

FHS要求必须要存在的目录
/var/cache/ 应用程序本身运行过程中会产生的一些缓存
/var/lib/ 程序本身执行的过程中,需要使用到的数据文件放置的目录,各自的软件有各自的目录
/var/lock/ 某些设备或是文件资源一次只能被一个应用程序所使用,因此就得将该设备上锁,以确保该设备只会给单一软件使用
/var/log/ 非常重要,放置日志文件的目录
/var/mail/ 放置个人电子邮箱的目录
/var/run/ 某些程序或服务启动后,会将它们的PID放置在这个目录下,与/run相同
/var/spool/ 通常放置队列数据,如 收到的新邮件会放置在 /var/spool/mail 中,用户收下后该封信原则上会被删除

  以上目录信息会在后续逐渐理解

第五章总结:文件的属性及权限一定要熟记,如何修改权限;FHS标准中定义的目录占了比较大的篇幅,但是暂作了解;根路径与相对路径。

这篇关于Linux学习基础笔记(5)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!