Fork me on GitHub


title: 鸟哥私房菜基础篇
tags:

  • Linux
    copyright: true
    comments: true
    toc: true
    date: 2019-03-05 15:29:55
    categories: Linux
    password:

简介

  • Linux是一个多用户、多任务环境。
  • Linux一般将文件可存取访问的身份分为3个类别:owner、group、others,且各有read、write、execute等权限

文件权限

  • owner:文件的所有者
  • group:每个账号都可以有多个用户组的支持
  • others:root用户

日常操作报“Permission deny”–权限设置错误,主要涉及文件权限
image
ls:list

1
2
[   1    ] [2]   [3]    [4]     [5]      [6]         [7]
[ 权限 ][连接][所有者][用户组][文件容量][修改日期] [文件名称]
  • 1.文件类型和权限:10个字符:1+33=10,1表示文件类型,33分别是owner、group、others的权限
  • 2.表示有多少文件名连接到此节点(inode)
  • 5.文件容量,默认单位为B
  • 6.文件的创建日期或者修改日期
  • 7.文件名前多一个.表示是隐藏文件

属性/组


可修改/etc/sysconfig/i18n文件配置系统默认语言

改变文件属性与权限:
chgrp:改变文件所属用户组
chown:改变文件所有者
chmod:改变文件权限
方式一:数字类型
权限权重值:r-4 w-2 x-1
方式二:符号类型
chmod u/g/o/a +/-/= rwx 文件或目录

权限对文件的重要性:
文件时实际含有数据的地方。
r:可读取次文件的实际内容
w:可以编辑、新建或者修改文件的内容,但不包括删除文件
x:该文件具有可以被系统执行的权限
Linux下文件是否能够被执行是由是否具有X这个权限决定的,而跟文件名没有任何关系。文件扩展名只是文件类型的一种提示。
权限对目录的重要性:
目录主要的内容就是记录文件名列表。
r:具有读取目录结构列表的权限,表示可以查询目录下的文件名数据,所以可以用ls命令列出目录下的内容
w:表示你具有更改目录结构列表的权限,包括
1.新建新的文件与目录;
2.删除已经存在的文件与目录;
3.将已存在的文件或目录进行重命名;
4.转移该目录内的文件、目录的位置。
总之,目录的w权限与该目录下面的文件名变动有关。
x:代表用户能否进入该目录成为工作目录。如果在某目录无x权限,则无法切换到该目录下,也就无法执行该目录下的命令。

Linux目录标准配置:FileSystem Hierarchy Standard(FHS)其主要目的是让用户可以了解到已安装软件通常放置于哪个目录下,各个软件开发商和操作系统制作者都要遵守此规则。依据文件系统使用的频繁与否与是否允许用户随意改动,而将目录定义成四种交互作用的状态。

可分享的 不可分享的
不可变的 /usr(软件放置处) /etc(配置文件)
/opt(第三方软件)	|	/boot(开机与内核文件)	   

可变动的 /var/mail | /var/run
/var/spool/news | /var/lock

其实,FHS针对目录树架构仅定义了三层目录下面应该放置什么数据,分别是下面这三个目录的定义:

  1. /(root,根目录):与开机系统有关;
    FHS标准建议:根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较好,根目录所在的文件系统也较不容易发生问题。
    image
  2. /usr(UNIX software resource):与软件安装/执行有关;
    FHS建议所有软件开发者应该将他们的数据合理的分别放置到这个目录下的子目录。/usr里面放置的数据属于可分享的与不可变动的。
  3. /var(variable):与系统运作过程有关。

关于执行文件路径的变量:$PATH
1.不同身份用户默认的PATH不同,默认能够随意执行的命令也不同
2.PATH是可以修改的
3.使用绝对路径或相对路径直接指定某个命令的文件名来执行,会比查询PATH来的正确
4.命令应该要放置到正确的目录下,执行才会比较方便
5.本目录(.)最好不要放到PATH当中

cp的源文件与目的文件的权限是不同的,目的文件的所有者通常是命令操作者本身。

basename:获取文件名
dirname:获取目录名

文件内容查询:
1.cat:由第一行开始显示文件内容
2.tac:从最后一行开始显示(tac是cat的倒写)
3.nl:显示的时候,顺便输出行号
4.more:一页一页的显示文件内容
5.less:与more类似,但可以往前翻页
6.head:只看头几行
7.tail:只看结尾几行
8.od:以二进制的方式读取文件内容

Linux下会记录许多的时间参数,主要有三个变动的时间:
modification time(mtime):
当该文件的内容数据更改时,就会更新这个时间
status time(ctime):
当该文件的状态改变时,就会更新这个时间,如权限与属性被更改时
access time(atime):
当该文件的内容被取用时,就会更新这个时间,如cat某文件时
默认情况下,ls显示的时间是当前文件的mtime。可以通过touch命令配合相应参数修改以上的相应时间,touch命令肯定会修改的日期是mtime,atime

Linux命令可以通过;隔开之后,代表多个命令的连续执行

文件的默认权限:
umask就是指定“目前用户在新建文件或目录时候的权限默认值”,可以通过umask/umask -S查看当前umask;
umask的分数指的是“该默认值需要减掉的权限”

文件的隐藏属性:
chatrr:设置文件的隐藏属性,格式chattr ±=参数 文件或目录名称
lsatrr:显示文件隐藏属性

文件的特殊权限:SUID,SGID,SBIT
SetUID:SUID仅对具有x权限的二进制程序的所有者在执行程序的过程中具有该程序所有者的权限,不能够用在Shell Script上面
SetGID:对应与SUID,只不过是针对s所在用户组来说
Sticky Bit:仅针对目录有效,当用户对目录由wx的权限时,只有自己与root可以删除该文件
修改文件的特殊权限:
SUID-4 SGID-2 SBIT-1
使用命令chmod,如chmod 1755,其中1表示添加SBIT权限

查看文件类型: file

文件的查询:
脚本文件名的查询:which(寻找执行文件),这个命令是根据PATH这个环境变量所规范的路径去查询执行文件的文件名
文件名的查询:
whereis和locate是通过数据库来查询数据的,所以会比find快的,但可能也会引起找不到最新新建的文件或者会找到已经被删掉的文件
whereis(寻找特定文件)
locate寻找的数据是由已创建的数据库/var/lib/mlocate里面的数据所查找到的,数据库的创建默认是每天执行一次,可以通过updatedb命令去读取/etc/updatedb.conf这个配置文件的设置,然后再去硬盘里面进行查找文件名的操作,最后就更新整个数据库文件
find:可以通过添加时间查找特定时间的文件,自动会查找子目录

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!