马哥博客作业第二周

一 、 文件管理 

1.文件结构目录功能

  • /boot               引导文件存放ml
  • /bin                 所有用户使用的基本命令
  • /sbin               管理员使用的命令
  • /etc                 配置文件目录
  • /home             普通用户家目录
  • /root                管理员的家目录
  • /media            便携式移动设备挂载点
  • /mnt                临时文件系统挂载点
  • /dev                设备文件及特殊文件储存位置
  • /opt                 第三方应用程序的安装位置
  • /tmp                临时文件储存位置
  • /proc               于输出内核与进程信息相关的虚拟文件系统
  • /sys                 用于输出当前系统上硬件设备相关信息虚拟文件系统

2.linux的文件类型

文件类型

名称

类型

-

普通文件

 

b

块文件

block

d

目录

directory

c

字符设备

char

l

链接文件

link

p

管道文件

pipe

s

套接字文件

socket

 

 

 

 

   

 

 

 

 

 

 

 

3.绝对路径和相对路径

l绝对路径:以正斜杠(/)及根目录开始,完整的文件路径位置,可用于任何想指定的文件位置。

 

相对路径:不以斜杠开始,一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置

4.查看文件状态

 

每个文件有三个时间戳

 

Atime  访问时间,读取文件内容

 

Mtime  修改时间,改变文件内容(数据)

 

Ctime  改变时间,元数据发生变化

5.文件通配符模式

符号 含义
*

匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件

匹配任何单个字符

~                                 当前用户家目录
[0-9] 匹配数字范围
[a-z] 字母
[^wang] 除了wang字符

[:digit:]

任意数字,相当于0-9 

[:lower:]

任意小写字母,表示 a-z 

[:upper:]

任意大写字母,表示 A-Z 

[:alpha:]

任意大小写字母

[:alnum:]

任意数字或字母

[:blank:]

水平空白字符

[:space:]

水平或垂直空白字符

[:punct:]

标点符号

[:print:]

可打印字符

[:cntrl:]

控制(非打印)字符

[:graph:]

图形字符

[:xdigit:]

 

十六进制字符

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.ls命令   列出目录内容

  • l -a   包含隐藏文件
  • l -l    显示额外的信息
  • l -ld   目录和符号的信息
  • l -S  (大写)    从大到小
  • l -t   按Mtime顺序
  • l -u   配合-t,显示并按Mtime从新到旧排序
  • l -U   按文件目录存放顺序显示
  • l -X   按文件后缀排序

6.touch 命令 创建通配符文件和刷新时间

格式 :

 

 

选项:

 

 

  • -a 仅改变 atime和ctime
  • -m 仅改变 mtime和ctime
  • -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
  • -c 如果文件存在,则不予创建

 7.cp 命令  复制文件和目录

格式:

cp [OPTION]... [-T] SOURCE DEST

cp [OPTION]... SOURCE... DIRECTORY

cp [OPTION]... -t DIRECTORY SOURCE...

常用选项:

  • -i  覆盖前提示
  • -n  不覆盖,注意两者顺序
  • -r R 递归复制目录及内部的所有命令
  • -b   目标存在,覆盖前先备份,形式为 fifilename~
  • -a 归档,相当于-dR --preserv=all
  • -u --update 只复制源比目标更新文件或目标不存在的文件

8.mv命令  移动和重命名文件

 

可以实现文件或目录的移动和改名

同一分区移动数据,速度很快:数据位置没有变化

不同分区移动数据,速度相对慢:数据位置发生了变化

利用rename可以批量修改文件名

格式:

 

常用选项:

  • -i     交互式
  • -f     强制
  • -b    目标存在,覆盖前先设备

利用rename可以批量修改文件名

格式:

 

 

 9.rm  命令    删除文件

格式:

 

 

 常用选项:

  • -i           交互式
  • -f           强制删除
  • -r           递归
  • -no-preserve-root     删除/

注意

此命令非常危险,慎重使用,建议使用mv代替rm

 

10.tree  树目录

 

常见选项:

  • -d: 只显示目录
  • -L level:指定显示的层级数目
  • -P pattern: 只显示由指定wild-card pattern匹配到的路径

mkdir 创建目录

 常见选项:

  • -p: 存在于不报错,且可自动创建所需的各目录
  • -v: 显示详细信息
  • -m MODE: 创建目录时直接指定权限

rmdir  删除空目录

常见选项:

  • -p 存在于不报错,且可自动创建所需的个目录
  • - v 显示详细信息.

注意:rmdir只能删除空目录,如想删除非空目录,可以使用rm-r命令,递归删除目录

格式:

11.文件元数据和节点表结构

 

inode表记录对应保存了以下信息

  • l Inode number节点号
  • l 文件类型
  • l 权限
  • l UID
  • l GID
  • l 链接数(指向这个文件路径名称个数)
  • l 该文件的大小he不同时间戳
  • l 指向磁盘上文件的数据块指针
  • l 有关文件的其他数据

硬链接(hard)

特性:

  1. 创建硬链接会在对应的目录中增加额外的记录项以引用文件
  2. 对应于同一个文件系统上的一个物理文件
  3. 每个目录引用相同的inode号
  4. 创建时链接数递增
  5. 删除文件时:rm命令递减计数的链接,文件要存在,至少有一个链接,当链接为0时,该文件被删除
  6. 不能跨越驱动器和分区
  7. 不支持对目录创建硬链接

格式:

 软连接  (soft)

 

特点:

  • 一个符号的链接内容是她引用文件的名称
  • 可以对目录创建软连接
  • 可以跨分区的文件实现
  • 指向的另一个文件的路径,其大小指向的路径字符串的长度;不增减或减少目录文件的inode的引用计数
  • 软连接如果使用相对路径,是相对于源文件的路径,而非相对于当前目录

格式:

 

范例:

 

硬软连接的区别总结

  硬链接 软连接
本质 是同一个文件 不是同一个文件
跨设备 不支持 支持
inode 相同                                                                                                               不同
链接数

创建新的硬链接,链数会增加,删除硬链接,连数会减少

创建或删除,连数不会变化

文件夹                      不支持 支持
相对路径

原始文件相对路径是相对于当前工作目录

原始文件的相对路径是相对于链接文件的相对路径

删除原文件

只是链接数减一,但链接文件的访问不受影响

链接文件将无法访问

文件类型

和源文件相同

链接文件,和源文件无关

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、标准i/o重定向和管道

1. 3种i/o设备

 

  • 标准输入  -0   默认接受来自终端窗口的输入
  • 标准输出  -1   默认输出到终端窗口
  • 标准错误  -2   默认输出到终端窗口

2. 重定向

        符号       用途
                   >       输出重定向(覆盖)
                   >>       输出重定向(追加)
                   2>       错误输出重定向
                   &>       所有输出重定向
            set  -C       禁止覆盖
        set +C       允许覆盖
        >| file       强制覆盖
        <       输入重定向
        <<       多行输入重定向

 

 

 

 

 

 

 

 

 

3.  tr命令

转换和删除字符

格式:

 

 

选项:

  • -d (--delete):  删除所有属于第一字符集的字符
  • -s(--squeeze-repeats): 把连续重复的字符以单独的一个字符表示,即去重
  • -t(--truncate-set1):将第一个字符集对应字符转化为第二字符集对应的字符
  • -c-C(--complement):取字符集的补集 

 范例

 

4.管道

      符号       名称

      |

      标准输出
      |&       所有输出
      -                          前一个命令的           stout
      |tee -a       -a追加 即输出到           屏幕有输出到管道

 

 

 

 

 

 

 

 

三、用户 、组和权限

1.用户个组的主要配置文件

  1. /etc/passwd:用户及其属性信息(名称、UID、主组ID等)
  2. /etc/shadow:用户密码及其相关属性
  3. /etc/group:组及其属性信息
  4. /etc/gshadow:组密码及其相关属性 

2.文件格式

passwd文件格式

login name:登录用名(wang)

passwd:密码 (x)

UID:用户身份编号 (1000)

GID:登录默认所在组编号 (1000)

GECOS:用户全名或注释

home directory:用户主目录 (/home/wang)

shell:用户默认使用shell (/bin/bash) 

shadow 文件格式

登录用名

用户密码:一般用sha512加密

从1970年1月1日起到密码最近一次被更改的时间

密码再过几天可以被变更(0表示随时可被变更)

密码再过几天必须被变更(99999表示永不过期)

密码过期前几天系统提醒用户(默认为一周)

密码过期几天后帐号会被锁定

从1970年1月1日算起,多少天后帐号失效

group文件格式

群组名称:就是群组名称

群组密码:通常不需要设定,密码是被记录在 /etc/gshadow

GID:就是群组的 ID

以当前组为附加组的用户列表(分隔符为逗号) 

 gshdow文件格式

群组名称:就是群的名称

群组密码:

组管理员列表:组管理员的列表,更改组密码和成员

以当前组为附加组的用户列表:多个用户间用逗号分隔

3.用户命令

命令

作用

格式

 

常见选项

 

usermad

可以创建新的Linux用户

useradd [options] LOGIN 

  • -u  UID

  • -o 配合-u 选项,不检查UID的唯一性

  • -g GID 指明用户所属基本组,可为组名,也可以GID

  • -c "COMMENT“ 用户的注释信息

  • -d HOME_DIR 以指定的路径(不存在)为家目录

  • -s SHELL 指明用户的默认shell程序,可用列表在/etc/shells文件中

  • -G GROUP1[,GROUP2,...] 为用户指明附加组,组须事先存在

  • -N 不创建私用组做主组,使用users组做主组

  • -r 创建系统用户 CentOS 6之前: ID<500,CentOS 7以后: ID<1000

  • -m 创建家目录,用于系统用户

  • -M 不创建家目录,用于非系统用户

usermod

用户属性修改

usermod [OPTION] login

  • -u UID: 新UID

  • -g GID: 新主组

  • -G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使

  • 用-a选项

  • -s SHELL:新的默认SHELL

  • -c 'COMMENT':新的注释信息

  • -d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项

  • -l login_name: 新的名字

  • -L: lock指定用户,在/etc/shadow 密码栏的增加 !

  • -U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

  • -e YYYY-MM-DD: 指明用户账号过期日期

  • -f INACTIVE: 设定非活动期限,即宽限期

id

查看用户相关的id信息

 id [OPTION]... [USER] 

 

  • -u: 显示UID

  • -g: 显示GID

  • -G: 显示用户所属的组的ID

  • -n: 显示名称,需配合ugG使用

su 

切换用户

su  zhanghu

-l --login   su -l UserName   相当于 su - UserName-c, --command <command>         pass a single command to the shell with -c 

passwd

可以修改密码

passwd  [OPTIONS]  UserName                        

  • -d:删除指定用户密码

  • -l:锁定指定用户

  • -u:解锁指定用户

  • -e:强制用户下次登录修改密码

  • -f:强制操作

  • -n mindays:指定最短使用期限

  • -x maxdays:最大使用期限

  • -w warndays:提前多少天开始警告

  • -i inactivedays:非活动期限

  • --stdin:从标准输入接收用户密码,Ubuntu无此选项 

chage

修改用户密码策略

chage [OPTION]... LOGIN 

 

  • -d LAST_DAY               #更改密码的时间

  • -m --mindays MIN_DAYS

  • -M --maxdays MAX_DAYS

  • -W --warndays WARN_DAYS

  • -I --inactive INACTIVE #密码过期后的宽限期

  • -E --expiredate EXPIRE_DATE #用户的有效期

  • -l 显示密码策略 

 

4.组命令

命令 作用 格式 常见选项
groupadd 创建组

groupadd [OPTION]... group_name

  • -g GID 指明GID号;[GID_MIN, GID_MAX]
  • -r 创建系统组,CentOS 6之前: ID<500,CentOS 7以后: ID<1000
groupmod 修改组

groupmod [OPTION]... group

  • -n group_name: 新名字
  • -g GID: 新的GID 
groupdel 删除组

groupdel [options] GROUP

   -f, --force 强制删除,即使是用户的主组也强制删除组

gpasswd 更改组密码

gpasswd [OPTION] GROUP 

  • -a user 将user添加至指定组中
  • -d user 从指定附加组中移除用户user
  • -A user1,user2,... 设置有管理权限的用户列表
newgrp 临时切换主组

newgrp [-] [group]

如果使用 - 选项,可以初始化用户环境

groupmems 更改和查看组成员

groupmems [options] [action] 

  • -g, --group groupname   #更改为指定组 (只有root)
  • -a, --add username     #指定用户加入组
  • -d, --delete username #从组中删除用户
  • -p, --purge               #从组中清除所有成员
  • -l,  --list                 #显示组成员列表
group 可查看用户组关系

 groups [OPTION].[USERNAME]...

 

  

5. 文件管理

 

1.文件权限:

1.针对三类对象进行定义:

owner 属主, u
group 属组, g
other 其他, o
注意:
用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即
生效,不再向右查看其权限 
 
2. 每个文件针对每类访问者都定义了三种权限
r Readable   读
w Writable    写
x eXcutable  执行
 
3.对目录的权限
r 可以使用ls查看此目录中文件列表
w 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x 可以cd进入此目录,可以使用ls -l查看此目录中文件元数据(须配合r权限),属于目录的可访问的最
   小权限
X 只给目录x权限,不给无执行权限的文件x权限
4. 数学法的权限:
八进制数字
- - -     000      0
- -x     001     1
-w-     010     2
-wx      011      3
r- -     100     4
r-x      101      5
rw-     110      6
rwx      111     7 

2.chmod 权限命令

格式:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
#参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION]... --reference=RFILE FILE... 
 
说明:
MODE:who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x
修改指定一类用户的所有权限
u= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R: 递归修改权限 
 

3.umask 的值可以用来保留在创建文件权限

 实现方式:

  • 新建文件的默认权限: 666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变

  • 新建目录的默认权限: 777-umask  

非特权用户umask默认是 002

root的umask 默认是022

6. linux文件系统上的特殊权限

1. 特殊权限SUID

前提:进程有属主和属组;文件有属主和属组

1. 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

2. 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

3. 进程访问文件时的权限,取决于进程的发起者

(a) 进程的发起者,同文件的属主:则应用文件属主权限

(b) 进程的发起者,属于文件属组;则应用文件属组权限

(c) 应用文件其它权限

 

二进制的可执行文件上SUID权限功能:
  • 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
  • 启动为进程之后,其进程的属主为原程序文件的属主
  • SUID只对二进制可执行程序有效
  • SUID设置在目录上无意义

2.特殊权限SGID

二进制的可执行文件上SGID权限功能:

  •  任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

  • 启动为进程后,其进程的属组为源程序文件的属组

 SGID权限设定:

chmod g+s FILE...

chmod 2xxx FILE

chmod g-s FILE...

 

3.特殊权限 Sticky 位

 具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权在目录设置Sticky 位,只有文件的所有者或root可以删除该文件sticky 设置在文件上无意义

 

权限设定:

chmod o+t DIR...

chmod 1xxx DIR

chmod o-t DIR...

4.权限位映射

SUID: user,占据属主的执行权限位
s:属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
 

5.设定文件特殊属性

 
设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件
 
不能删除,改名,更改   chattr +i 

 只能追加内容,不能删除,改名    chattr +a 

 显示特定属性     lsattr 

7. 访问控制列表

1.ACL权限功能 

ACLAccess Control List,实现灵活的权限管理

除了文件的所有者,所属组和其它人,可以对更多的用户设置权限

CentOS7 默认创建的xfsext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加 

 

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

 

 ACL生效顺序:

所有者,自定义用户,所属组|自定义组,其他人 

2. ACL 命令

setfacl 可以设置ACL权限

getfacl 可查看设置的ACL权限

 

mask 权限

  •  mask只影响除所有者和other的之外的人和组的最大权限
  • mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限
  • 用户或组的设置必须存在于mask权限设定范围内才会生效

 --set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样
只是添加ACL就可以 

3.备份和还原

主要的文件操作命令cpmv都支持ACL,只是cp命令需要加上-p 参数。但是tar会保留目录和文件的ACL设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件

posted @ 2020-03-29 17:14  郑瑞  阅读(188)  评论(0)    收藏  举报