网络安全-系统文件及用户
系统文件属性及用户相关
系统文件属性
文件属性组成介绍
文件类型分类
01 - ※ 英文名称为regular file,表示普通文件,包含纯文本 二进制文件 数据文件等
02 d ※ 英文全程为directory,代表目录
03 l ※ 英文全程link,代表符号链接或软链接文件,类似于windows系统快捷方式。
04 c 英文全程character,代表字符设备文件,例如:串口设备,早期上网拨号用的猫
05 b ※ 英文全程block,代表块设备文件,例如:硬盘 光驱
06 s 英文全程socket,代表套接字文件,进程之间进行通信是会用到
07 p 英文全程named pipe,表示管道文件,主要作用是控制服务进程读取或加载文件
# 查看文件类型
ls -l或ls -al
# 显示文件具体类型信息
file [option] [file]
文件类型详细说明
# 纯文本文件(ASCII):
此类文件的文件内容可以直接读取到数据,例如:字母、数字、特殊符号等。
可以用cat命令读文件,比如Linux系统里的配置文件几乎都是这种类型。
[root@hkw ~]# file /etc/hosts
# 二进制文件(binary):可执行文件
Linux中的常见命令就属于这种文件类型。
例如:cat命令就是一个二进制文件,部分脚本代码文件也属于可执行文件。
[root@hkw ~]# file /bin/cat
# 数据格式文件(data)
有些程序在运行的过程中会读取某些特定格式的文件,那些特定格式的文件即称为数据文件。
例如:Linux在用户登录时都会将登录的数据记录在/var/log/wtmp文件内,该文件时一个数据文件;某些系统中被压缩处理的文件,也可以称为数据文件。数据性文件一般为压缩包文件
[root@hkw ~]# file /var/log/wtmp
# 目录文件(directory):
[root@hkw ~]# file /var/log/
# 利用ls -F命令的执行结果,可以在不同文件的结尾加上特殊标识,用以区分文件。
[root@hkw ~]# ls / -F
bin@ boot/ dev/ etc/ home/ lib@ lib64@ media/ mnt/ opt/ proc/ root/ run/ sbin@ srv/ sys/ tmp/ usr/ var/
# 说明:/标识为目录 @标识为链接文件
# 符号链接(symbolic link)文件:
符号链接文件也称为软链接文件,它类似于windows下的快捷方式。
# 软链接
ln -s 源文件名 链接文件名
# 如果不使用-s参数,则表示创建硬链接文件
# 字符(character)/块(block)设备文件:
在查看/dev目录特定文件的属性信息时,会看到如下内容:
[root@hkw ~]# file /dev/tty /dev/sda1
/dev/tty: character special
/dev/sda1: block special
/dev/tty文件的属性信息中,第一个字符是c,表示为字符设备文件:
对于字符设备,一般典型的文件就是串行端口的接口设备,如猫等串口设备。
/dev/sda文件的属性信息中,第一个字符是b,表示为块设备文件:
块设备就是存储数据供系统及程序访问的接口设备,如硬盘、光驱等都均属于块设备
# 套接字(socket)文件
当启动数据库软件MySQL服务时,会产生一个mysql.sock文件,这个文件的属性里,第一个字符是s,
表示此文件为套接字文件:
[root@hkw ~]# file /var/lib/mysql/mysql.sock
.sock文件是一类特殊的文件,这类文件通常在网络之间进行数据连接。
在启动一个网络服务程序后,会监听客户端的请求,客户端可以通过套接字文件来进行数据通信。
mysql -uroot -ppass -S /data/3306/mysql.sock
以上便是mysql数据库客户端程序连接服务器端的命令,并通过套接字文件与数据库服务器进行通信。
# 管道(pipe)文件:
管道文件(FIFO first-in first-out)也是一种特殊的文件类型,主要用于解决多个程序同时访问一个文件所造的冲突问题;文件属性标识符为p。
文件权限
说明:文件属性中的权限位,可以理解为系统基础的9位权限位
- 读权限:`字符标识 r 数值标识 4`
针对文件来说,主要利用此权限可以实现对文件数据信息的读取。
针对目录来说:可以看到目录下数据名称信息
- 写权限:`字符标识 w 数值标识 2`
针对文件来说,主要利用此权限可以实现对文件数据信息的编辑修改。> >>
针对目录来说:是否可以删除 添加 修改目录下数据名称信息
- 执行权限:`字符标识 x 数值标识 1`
针对文件来说,主要利用此权限可以实现对脚本或代码文件,以及命令文件的执行功能。
针对目录来说: 拥有执行权限表示可以切换进入到目录中
- \- 代表0
权限标识 数值表示 含义说明
rwxrw-rw- 766 属主具有可读可写可执行权限 属组和其他用户只具有可读可写权限
rw-r--r-- 644 属主具有可读可写权限 属组和其他用户具有可读权限
r---w---x 421 属主具有可读权限 属组具有可写权限 其他用户具有可执行
设置修改权限命令
# chmod [数字组合] 文件名
chmod命令是用来改变文件或目录权限的命令,但只有文件的属主和超级用户root才能执行这个命令。
chmod的数字语法简单直观,可以利用下表进行数字权限设置:
权限 二进制 八进制 权限 二进制 八进制
--- 000 0 r-- 100 4
--x 001 1 r-x 101 5
-w- 010 2 rw- 110 6
-wx 011 3 rwx 111 7
# 字符式权限
chmod [用户类型] [+|-|=] [权限字符] 文件名
权限命令 用户类型 操作字符 权限字符 数据信息
chmod u + r 文件或目录
g - w
o = x
a -
# 用户和用户组的定义:
u:代表属主用户(user)
g:代表属组信息(group)
o:代表其他用户(other)
a:或者不写,同时代表ugo(三个用户的所有all权限统一设置)
# 权限定义字母信息
r:代表读权限-数字4表示
w:代表写权限-数字2表示
x:代表执行权限-数字1表示
-:代表没有权限,数字0表示
#权限增减字符详细定义
+:添加权限字符
-:取消权限字符
=:取消其他所有权限,然后赋予给定的权限
# 字符权限基础设置
chmod u-x test.sh
-- 取消用户权限位的x权限
chmod g+w test.sh
-- 用户组权限位增加w权限
chmod u-x,g+w,o-rwx test.sh
-- 用户位取消x权限,用户组增加w权限,其他用户全校rwx权限
chmod ugo=rw test.sh
-- 所有权限组赋予rw权限
chmod a=rw test.sh
-- 所有权限组赋予rw权限
chmod +x test.sh
-- 所有权限组增加x权限
数据属主属组修改命令
chown命令用于改变文件或目录的用户和用户组信息。
chown 选项 用户 用户组 文件或目录
# 常用授权命令方式
chown 用户 文件或目录
-- 仅修改文件或目录的属主用户信息
chown :用户组 文件或目录
-- 仅修改文件或目录的属组用户信息(等同于chgrp命令作用)
chown 用户:用户组 文件或目录
-- 同时修改文件或目录的属主和属组用户信息
说明:命令中使用的:也可以用 . 替代;命令中授权的用户和用户组信息在系统中必须存在
参数-R表示递归更改目录的用户和用户组
文件权限管理扩展命令
chattr命令用于改变文件的扩展属性。与chmod命令相比,chmod只是改变了文件读写执行权限;
更底层的属性控制是有chattr来改变的。
说明:简单来说就是chmod对权限的修改并不能限制root用户,但是chattr命令可以有效限制root用户。
# chattr [option] [mode] [file]
01 -R 递归更改目录属性
02 -V 显示命令的执行过程
mode
01 + 增加参数
02 - 移除参数
03 = 更新为指定参数
04 A 告诉系统不要修改这个文件的最后访问时间
05 a 只能向文件中添加数据,而不能删除,多用于服务器日志文件安全
06 i 设置文件不能删除,改名、写入或新增内容
# 设置只能向文件里追加内容,但不能删除文件
chattr +a 1.txt
# 对文件加锁,使其只能被读取
chattr +i 1.txt
# 说明:系统中很多重要文件数据,都可以采用上锁方式进行安全保护,从而防止恶意篡改。
lsattr命令可用于查看文件扩展属性
# lsattr [option] [files]
01 -R 递归查看目录的扩展属性
02 -a 显示所有文件包括隐藏文件的扩展属性 类似 ls -a
03 -d 显示目录的扩展属性 类似ls -d dir
系统用户分类
管理用户:(皇帝)root --- uid=0
虚拟用户:(傀儡)nobody --- uid = 1-999
Linux下面每个程序/进程需要有一个用户和用户组管理;并且虚拟用户无法登录Linux系统。
普通用户:(百姓)xiaoQ --- uid=1000+
用户信息可以成为管理系统数据、程序或进程的人员,并且也是权限的赋予者。
用户相关配置文件
系统用户相关的配置文件
/etc/passwd
-- 存储用户信息的文件
/etc/shadow
-- 存储用户密码信息的文件
存储用户信息的文件:/etc/passwd
主要作用是存储系统用户的信息,文件中的每一行表示一个用户信息,有多少行就表示存在多少个用户信息;
每行用户信息会用:分割,总共分割为7个部分,分别定义了用户的不同属性:
# passwd文件中用户每列信息说明:(简述)\
root :x :0 :0 :root :/root :/bin/bash
用户名称 用户密码 用户UID 用户组GID 用户说明 用户家目录 shell解释器
# passwd文件中用户每列信息说明:(详述)
# 用户名称:
与用户uid对应,这是用户登录时使用的用户名称,在系统中是唯一的,不能重名。
# 用户密码:
早期unix系统中,此字段用于存放用户密码,基于安全原因,后来将密码字段移动/etc/shadow文件中了
这个位置可以看到一个字母x,表示该用户的密码是保护在/etc/shadow文件中。
# 用户UID:
用户UID一般是由一个整数来表示的,默认范围是0~60000,最大实际可以到65535。
主要系统利用UID编号进行用户信息的识别。
# 用户组GID:
用户GID一般也是由一个整数来表示的,范围和最大值与用户UID相同。
添加用户时,默认情况下会同时建立一个与用户名相同且ID相同的组。
# 用户说明:
对系统用户的作用描述信息,起到注释说明作用
# 用户家目录:
用户登录后默认进入的目录,一般为“/home/用户名”这样的目录
# shell解释器:
当前用户登录后所使用的解释器;centos等主流linux系统中,默认的解释器为bash;
当虚拟用户无法登录系统时,会将解释器信息设置为/sbin/nologin。
用户管理相关命令
# 有关用户管理常见命令汇总介绍:
用户直接相关的命令
01 useradd 添加用户信息命令
02 usermod 修改用户信息命令
03 userdel 删除用户及与用户有关联的配置或文件
用户密码直接相关的命令
01 passwd 为用户设置或修改密码
# 用户相关命令详解-useradd
# 在添加用户的同时,会添加与用户名相同的用户组。
useradd === adduser
01 -c comment 设置新用户在passwd文件中的说明字段的信息
02 -d home_dir 新用户每次登陆时使用的家目录
03 -e expire_date 用户终止日期。日期指定格式为YYYY/MM/DD
04 -f inactive_days 用户过期几日后永久停权。当值为0时用户立刻被停权。
而当值为-1时表示关闭此功能,预设值为-1
05 -g initial_group 指定新用户所属的用户组。用户组名需为系统现存的名称
06 -G group,[...] 将新用户指定为多个不同用户组的成员。每个用户组均使用,号进行分割
07 -m 如果家目录不存在,则创建并指定用户家目录
08 -M 不建立用户家目录,其优先于/etc/login.defs文件中的设定
一般创建虚拟用户时不建立家目录,部署网络相关服务时需要创建虚拟用户
09 -n 默认情况下,用户的用户组与用户的名称是相同的。
如果添加了-n参数,就不会生成与用户同名的用户组了。
10 -s shell 用户登入系统后使用的解释器名称,默认为bash
11 -u uid 指定用户ID值,即所谓的uid信息
# useradd命令中-g -u参数的使用
# 创建用户xiaoA,属于指定组root,UID为888
useradd xiaoA -u 888 -g root
-- 使用-g参数创建用户时,不会再单独创建对应的用户组信息
# useradd命令中-M -s参数的使用(用于创建虚拟用户)
# 创建一个虚拟用户mysql,禁止其登录,且不创建家目录
useradd mysql -s /sbin/nologin -M
[root@xiaoq ~]# grep -w mysql /etc/passwd
mysql:x:1000:1000::/home/mysql:/sbin/nologin
[root@xiaoq ~]# grep -w mysql /etc/shadow
mysql:!!:18990:0:99999:7:::
[root@xiaoq ~]# grep -w mysql /etc/group
mysql:x:1000:
[root@xiaoq ~]# grep -w mysql /etc/gshadow
mysql:!::
# 用户相关命令详解-usermod
usermod命令不仅可以更改用户的解释器类型、UID、家目录等,还能更改用户的有效期、登录名等信息。
总之可以实现对用户相关信息的调整修改。
01 -c comment 设置新用户在passwd文件中的说明字段的信息
02 -d home_dir 新用户每次登陆时使用的家目录
03 -e expire_date 用户终止日期。日期指定格式为YYYY/MM/DD
04 -f inactive_days 用户过期几日后永久停权。当值为0时用户立刻被停权。
而当值为-1时表示关闭此功能,预设值为-1
05 -g initial_group 指定新用户所属的用户组。用户组名需为系统现存的名称
06 -G group,[...] 将新用户指定为多个不同用户组的成员。每个用户组均使用,号进行分割
07 -m 如果家目录不存在,则创建并指定用户家目录
08 -M 不建立用户家目录,其优先于/etc/login.defs文件中的设定
一般创建虚拟用户时不建立家目录,部署网络相关服务时需要创建虚拟用户
09 -n 默认情况下,用户的用户组与用户的名称是相同的。
如果添加了-n参数,就不会生成与用户同名的用户组了。
10 -s shell 用户登入系统后使用的解释器名称,默认为bash
11 -u uid 指定用户ID值,即所谓的uid信息
12 -a 追加用户到用户组,仅与-G参数连用
13 -l 修改用户账户名称
14 -L 锁定用户密码
15 -U 解除密码锁定
# usermod命令-e参数修改过期时间
chage -l root
usermod -e "2099/01/01"
# 用户相关命令详解-userdel
# userdel命令主要用于删除用户及用户相关的信息。
01 -f 强制删除用户,即使用户当前已登录
02 -r 删除用户的同时,删除与用户相关的所有文件(慎用)
# 此方法删除用户时,只会删除用户本身,其家目录及用户的相关文件并不会被删除。
# 删除指定用户xiaoA及所有与用户相关的文件目录
userdel -r xiaoQ
# 密码相关命令详解-passwd
passwd命令可以修改用户密码及密码过期时间等信息,是工作中很常用的命令;
普通用户和超级用户都可以使用passwd命令,普通用只能更改自己的用户密码,管理员用户可以设置或修改所有用户的密码。
01 -k 为密码已经过期的用户更新有效期
02 -l 锁定用户,被锁定用户将不能登录。仅root用户有权限使用该选项
03 --stdin 从标准输入读取密码字符串(免交互设置密码)
04 -u 解除对用户的锁定。仅root用户有权使用该选项
05 -d 删除用户的密码,使用密码为空。仅root用户有权限使用该选项
06 -e 使用户密码立即过期,将在用户下次登录时强制用户修改密码。仅root用户有权使用该选项
07 -n 设置修改密码的最短天数。仅root用户有权使用该选项
08 -x 设置修改密码的最长天数。仅root用户有权使用该选项
09 -w 设置用户在密码过期前多少天收到警告的消息。仅root用户有权使用该选项
10 -i 设置密码过期多少天之后禁用账户。仅root用户有权使用该选项
11 -S 显示与用户密码相关的简单描述。仅root用户有权使用该选项
# 说明:修改密码时有复杂度要求,但root用户设置时会忽略密码设置规范,普通用户必须遵循。
# 显示账号密码信息
passwd -S xiaoQ
# 采用非交互方式设置密码
echo "123456" | passwd --stdin xiaoQ
用户查询相关命令
id
# id命令通常用来查询用户与用户组信息以及对应的UID、GID等信息:
[root@hkw ~]# id root
uid=0(root) gid=0(root) 组=0(root)
[root@hkw ~]# id hkw
uid=1000(hkw) gid=1000(hkw) 组=1000(hkw)
-- 用户和组信息以及对应UID和GID
[root@hkw ~]# id -u hkw
1000
-- 只查看用户UID
[root@hkw ~]# id -g hkw
1000
-- 只查看用户GID
[root@hkw ~]# id -un hkw
hkw
-- 只查看用户名
[root@hkw ~]# id -gn hkw
hkw
-- 只查看用户组名
whoami
# whoami可以用于查看当前登录的用户:
[root@hkw /]# whoami
root
[root@hkw /]# su - hkw
上一次登录:日 9月 3 09:56:36 CST 2023pts/0 上
[hkw@hkw ~]$ whoami
hkw
w
# w命令的作用是显示已经登录的用户,并且展示用户在做什么操作:
[root@hkw /]# w
10:09:42 up 1 day, 8:24, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 09:45 6.00s 0.11s 0.00s w
root pts/1 10.0.0.1 六08 11:41m 0.17s 0.17s -bash
# 以下是上述w命令输出结果的格式说明:
# 第一行的输出依次显示了当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载。load average平均负载是指在1分钟、5分钟、15分钟之内系统的负载状况。
USER:表示登录系统的用户
TTY:表示用户使用的TTY(连接方式)(pts远程 tty本地)
FROM:表示用户从哪里登录进来,一般是显示远程登录主机的IP地址或或者主机名
LOGIN@:用户登录的日期和时间
IDLE:显示终端空闲时间
JCPU:表示该终端上所有进程及子进程使用系统的总时间
PCPU:当前活动进程使用的系统时间
WHAT:当前用户执行的进程名称和选项
who
# who命令主要用于显示哪些用户正在登录、登录的终端及登录时间,来源主机,显示的信息比w少,不常用
[xiaoQ@xiaoq ~]$ who
root pts/0 2021-12-30 13:08 (10.0.0.1)
root pts/1 2021-12-30 19:17 (10.0.0.1)
root pts/2 2021-12-30 19:17 (10.0.0.1)
名称 线路 时间
-- 名称:用户的登录名
-- 线路:类似于pts/1、pts/2等,此线路标识在/dev目录中可以找到
-- 时间:用户登录系统的时间
last/lastlog
# last/lastlog命令可以查看用户更详细的登录信息:
[xiaoQ@xiaoq ~]$ last
-- 显示已经登录的用户列表及登录时间等,查看的信息与/var/log/wtmp及/var/log/btmp两个文件有关
[xiaoQ@xiaoq ~]$ lastlog
-- 报告最近的所有系统用户的登录信息,查看的信息与/var/log/lastlog日志有关
用户之间切换命令
su [option] [user]
# 说明:su命令信息如果省略,表示默认切换为root用户。
01 -,-l,--login 使一个shell成为登录的shell
如果执行su - xiaoQ时,表示该用户希望改变的身份为xiaoQ;
并且使用xiaoQ用户对应的环境变量配置
02 -c,--command=COMMAND 切换到一个shell下,执行一个命令,然后退出所切换的用户环境
03 -m,--preserve-environment 切换用户时,不需要重置用户环境变量,-p的功能同-m,
这个参数为su的默认值,一般较少使用
04 -s,--shell=SHELL 如果/etc/shells允许,则运行指定shell
# 在生产场景中,su命令比较常用的参数为“-”和“-c”
-- 使用 - 参数切换后,系统默认的环境变量配置信息也随用户切换发生变化
# 知识点总结:
su 用户名:虽然能切换到对应用户,但是登录后的环境变量信息有些还是切换前的用户的环境变量信息。
(推荐) su - 用户名:不但能切换到相应的用户,还能将登录后的环境变量一并切换,这是更为标准规范操作。
用户特权
用户特权设置方法
visudo命令是专门用来编辑/etc/sudoers这个文件的,同时它还提供了语法检查等功能。
visudo命令等价于vim /etc/sudoers文件。
说明:visudo命令本身可以实现自动语法检查功能;vim直接编辑文件不具有语法检查功能。
01 -c 手动执行语法检查
# 执行visudo对普通用户xiaoQ和xiaoB授权
[xiaoQ@xiaoq ~]$ visudo
100 root ALL=(ALL) ALL
101 xiaoQ ALL=(ALL) ALL
-- 将xiaoQ授予root用户所有操作的能力
102 xiaoB ALL=(ALL) /sbin/useradd, /sbin/userdel
-- 授权xiaoB可以以root身份添加和删除用户权限
# 上述授权内容对应的配置信息说明:
待授权的用户或用户组 机器=(授权角色) 可以执行的命令
xiaoQ ALL=(ALL) ALL
xiaoB ALL=(ALL) /sbin/useradd
# 对文件配置信息进行语法检查
[root@hkw opt]# visudo -c
/etc/sudoers:解析正确
用户特权使用方法
# root给普通用户特权设置后,普通用户并不能直接的使用特权,而是要加上sudo命令,相当于拿着令牌去使用特权才可以。
sudo命令可以让普通用户在执行指定的命令或操作指定的程序时,拥有超级用户的权限。
并且可以做权限的精细控制管理,同时普通用户不需要知道root密码就可以得到授权,这个授权可以使用visudo
sudo [option] command
01 -l 列出当前用户可以执行的特权命令。只有sudoers文件里的用户才能使用该选项
02 -h 列出使用方法,并退出
03 -H 将环境变量中的HOME指定为要变更身份的使用者家目录
如果不加-u参数就是系统管理者root
04 -V 显示版本信息,并退出
05 -v sudo如果是第一次执行,或者是在N分钟内没有执行(N预设为5),则会询问密码
这个参数用于重新做一次确认
06 -u 以指定用户的身份执行命令。后面是除root之外的用户,可以是用户名,也可以是uid
07 -k 清除时间戳上的时间,下次再使用sudo时还需要再次输入密码
08 -K 与-k类似,同时还要删除时间戳文件
09 -b 在后台执行指定的命令
10 -p 可以更改询问密码时的提示语
11 -e 不执行命令,而是修改文件,相当于命令sudo edit
# 查看用户被visudo授权后拥有的权限
sudo -l
# 实现免密码执行特权操作
[root@xiaoq ~]# visudo
xiaoQ ALL=(ALL) NOPASSWD: ALL
xiaoB ALL=(ALL) NOPASSWD: /sbin/useradd, /sbin/userdel
-- 可以实现免密码操作特权命令
[xiaoQ@xiaoq ~]$ sudo -k
[xiaoQ@xiaoq ~]$ sudo -l
-- 再次执行特权操作,无需输入任何密码信息
时间相关
文件时间信息
# 文件时间信息分类:
文件修改时间:mtime(modified time)(更加关注)
当文件信息内容发生变动时,会修改调整此时间信息。
文件访问时间:atime(access time)
当文件信息内容访问读取时,会修改调整此时间信息。
文件改变时间:ctime(change time)
当文件属性状态发生变动时,会修改调整此时间信息。
[root@hkw ~]# stat /etc/hosts
系统时间信息操作命令
# date [option] [+FORMAT]
OPTION参数选项
01 -d 时间字符串 显示指定字符串所描述的时间,而非当前时间
02 -f 时间文件 从日期文件中按行读入时间描述
03 -r 文件 显示指定文件的最后修改时间
04 -s 日期时间 设置系统时间
05 -u 显示或设置UTC时间
FORMAT日期格式
01 %a 星期名缩写(如Tue代表星期二)
02 %A 星期名全称(如Tuesday,星期二)
03 %b 月名缩写(Aug 代表八月)
04 %B 月名全称(August 代表八月)
05 %F 完整的日期格式,等价于%Y-%m-%d(如2019-08-18)
06 %y 年份的最后两位简写(20年)
07 %Y 年份的完整书写方式(2020年)
08 %m 月份信息(01-12)
09 %M 分钟信息(00-59)
10 %d 每月的第几天
11 %D 等于%m%d%y(如 08/18/15)
12 %T 时间信息,等价于%H:%M:%S(14:30:50)
13 %H 24小时制(00-23)
14 %I 12小时制(00-12)
15 %S 秒信息(00-60)
# 常用时间格式输出信息
[root@xiaoq ~]# date +%y
21
-- 显示年份信息(短格式)
[root@xiaoq ~]# date +%Y
2021
-- 显示年份信息(长格式)
[root@xiaoq ~]# date +%m
12
-- 显示月份信息
[root@xiaoq ~]# date +%d
23
-- 显示日期信息
[root@xiaoq ~]# date +%H
14
-- 显示小时信息
[root@xiaoq ~]# date +%M
10
-- 显示分钟信息
[root@xiaoq ~]# date +%S
10
-- 显示秒信息
[root@xiaoq ~]# date +%F
2021-12-23
-- 显示特殊格式日期信息
[root@xiaoq ~]# date +%T
14:10:19
-- 显示特殊格式时间信息
# 通过参数-d显示未来或过去的时间情况
# 显示过去的时间
[root@xiaoq ~]# date +%F -d "-1day"
2021-12-22
[root@xiaoq ~]# date +%F -d "yesterday"
2021-12-22
# 显示未来的时间
[root@xiaoq ~]# date +%F -d "+1day"
2021-12-24
[root@xiaoq ~]# date +%F -d "tomorrow"
2021-12-24
[root@xiaoq ~]# date +%F -d "1month"
2022-01-23
[root@xiaoq ~]# date +%F -d "1year"
2022-12-23
[root@xiaoq ~]# date +%F -d "24hour"
2021-12-24
[root@xiaoq ~]# date +%T -d "24min"
14:41:15
# 过参数-s设定时间(主要用于某些测试-- 定时服务进行测试)
[root@xiaoq ~]# date -s 20170706
Thu Jul 6 00:00:00 CST 2017
[root@xiaoq ~]# date -s 00:10:05
Thu Jul 6 00:10:05 CST 2017
[root@xiaoq ~]# date -s "00:00:03 20170506"
Sat May 6 00:00:03 CST 2017
[root@xiaoq ~]# date -s "00:00:03 2017-05-07"
Sun May 7 00:00:03 CST 2017
[root@xiaoq ~]# date -s "00:00:03 2017/05/08"
Mon May 8 00:00:03 CST 2017
文件链接
在Linux系统中,链接可分为两种:
硬链接(hard link):ln 原始文件 目标文件(硬链接文件)
软链接(soft link):ln -s 原始文件 目标文件(软链接文件)
硬链接(hard link):
是指通过索引节点进行的链接,当多个文件名指向同一个索引节点,这种情况下的两个文件就称为互为硬链接文件。
硬链接的作用是允许一个文件拥有多个有效的文件名,可以建立硬链接到重要的文件上,避免误删造成的影响。
说明:对于硬链接创建操作,只能对普通文件进行操作,不能对目录文件创建硬链接。
软链接(soft link)
也称为符号链接(symblic link,symlink),实质就是类似于windows系统中的快捷方式。
# 硬链接(hard link)特点总结:
具有相同inode节点号的多个文件互为硬链接文件,本质上是相同文件数据的不同访问入口文件。
删除硬链接文件或者删除源文件任意之一,文件实体并未删除。
只有删除了源文件及源文件对应的所有硬链接文件,文件实体才会被删除。
只有所有的硬链接文件及源文件均被删除之后,再存放新的数据时,新数据才会占用这个文件存储空间。
可以通过对文件设置硬链接文件,来防止重要文件被删除 (不经常改动的并尺寸容量比较大的文件)
硬链接文件类型属于普通文件
硬链接只能针对文件,不能针对目录
# 软链接(soft link)特点总结:
软链接类似于windows的快捷方式,链接文件中会存放指向源文件的路径信息。
删除源文件,软链接文件依然存在,但是无法访问并指向源文件路径的实体内容。
软链接失效的时候一般是白色红底闪烁提示
软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同
软链接文件不仅可以针对文件,还可以针对目录。