Linux系统目录结构与核心文件

1.系统目录结构

Linux目录结构特点

  • Linux系统下一切从根开始,是一个倒挂树状的结构的目录
  • Linux系统一切皆以文件的形式存在
  • Linux系统中所有设备必须经过挂载才能使用
  • Linux系统中不同的目录可以挂载到不同设备(磁盘)上

Linux系统根下目录结构

Cent OS 6

[root@aspen-han ~]# tree -L 1 /
/
├── bin
├── boot
├── dev
├── etc
├── home
├── lib
├── lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── sbin
├── selinux
├── srv
├── sys
├── tmp
├── usr
└── var

20 directories, 0 files

Cent OS 7

[root@aspen ~]# tree -L 1 /
/
├── bin -> usr/bin      //软链接 
├── boot 
├── dev
├── etc
├── home
├── lib -> usr/lib      //软链接
├── lib64 -> usr/lib64  //软链接
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin    //软链接
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files

Linux系统根下主要目录说明

  • /boot 负责引导系统启动,存放引导程序和系统内核;
系统分区时,一般为/boot目录单独建立分区,分区大小256M即可
系统计划更新,可以为/boot目录分配1G存储空间

该分区数据增长速度较快

  • /bin 存放二进制命令目录
在Cent OS 7中 /bin->/usr/bin
  • /sbin 存放管理系统相关命令(root用户使用)
在Cent OS 7中 /sbin->/usr/sbin
  • /dev 存放系统设备文件;如光盘、U盘、硬盘分区等;
  • /etc 存放系统配置文件
  • /home 普通用户家目录(用户默认数据存放模式)
例如aspen这个用户的家目录就是/home/aspen
  • /root Linux系统超级管理员(root)用户的家目录
  • /proc 存放反映当前系统正在运行进程的实时状态(存放进程信息和内核信息比如CPU、内存信息等)
/proc 目录是一个虚拟目录,它不是真正的文件系统
  • /usr 存放用户数据、系统软件及系统命令(系统文件目录)
  • /lib 存放系统和运行命令所需的共享库文件(Glibc)和内存模块
在Cent OS 7中 /lib -> /usr/lib
  • /lib64 存放64位系统和运行命令所需的共享库文件(Glibc)和内存模块
在Cent OS 7中 /lib64 -> /usr/lib64
  • /media 存放媒体文件
/media 以前专门用于挂载光盘,现在是一个空文件夹
  • /mnt 临时挂载存储设备的挂载点
挂载相当于给一个孤立存在的设备设置一个接口,所有用户都需要通过该接口访问设备,这个接口称为挂载点
  • /opt 存放第三方软件(是第三方软件的默认安装目录)
  • /tmp 存放系统临时文件,可以被当作回收站使用
/tmp 目录默认权限:1777(rwxrwxrwt)
  • /var 存放一些经常发生变化的文件(存放系统日志文件)
  • /run 存放进程运行的pid文件和服务的锁文件

2.常用配置文件

随机字符设备文件

  • 文件位置:/dev/random
  • 关键参数(无)
  • 文件说明 随机字符生成数字(常用于生成随机ID)
  • 文件内容
[root@Tech ~]#ll /dev/random 
crw-rw-rw-. 1 root root 1, 8 Dec 22 09:35 /dev/random
[root@Tech ~]#echo $RANDOM
8305
[root@Tech ~]#echo $RANDOM
31518
[root@Tech ~]#echo $RANDOM
9893
  • 文件位置:/dev/urandom
  • 关键参数(无)
  • 文件说明 随机字符生成文件(常用于生成随机密码)
  • 文件内容
[root@aspen ~]# cat /dev/urandom 
+,𮗆¢¡
     ^ÿ
ŧ!Z򱠂hkǧ½"řeɗ$ 
X²_ IPv얯e°Gf򀶦¡ ӻ򽕴K㱛󥙹°ӽ򊰴´o 
                           󤇗f
#쒁إz   ХB򠍥?I;¸X^تh~񆓻©P£񐬾«
I1]ŋqF󕐖␮iª❝.4/󿣫HN §1ߚR¾{кWqh񧮵[²׽򦎆#bGPIbTÿ
           󬯔T7󶑰-ȑ˵͆p[񮂘o¦    'ea}_𰆿_߄ɰ£9 =3 µH«vՉl8v%§F۶

白洞字符设备文件

  • 文件位置:/dev/zero
  • 关键参数(无)
  • 文件说明 不断发出信息,但无法查看
  • 文件内容(所有文件内容是一行)
[root@aspen ~]# dd if=/dev/zero of=/tmp/zero-50M bs=1M count=50
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 0.0281017 s, 1.9 GB/s
[root@aspen ~]# ll -ih /tmp/zero-50M 
16809471 -rw-r--r-- 1 root root 50M May 14 14:49 /tmp/zero-50M
[root@aspen ~]# cat -A /tmp/zero-50M 
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@

黑洞字符设备文件

  • 文件位置:/dev/null
  • 关键参数(无)
  • 文件说明 不断接受信息并丢弃
  • 文件内容
[root@aspen ~]# cat -A  /dev/null
[root@aspen ~]# 

网卡配置文件

  • 文件位置:/etc/sysconfig/network-scripts/ifcfg-网卡名
  • 关键参数:
BOOTPROTO-获取IP地址方式(获取方式分为手动获取none和static,自 动获取dhcp,实际工作中建议设置为static)
ONBOOT-开机自启动(实际工作中,建议设为yes)
NAME-网卡名称
DEVICE-设备名称
IPADDR-网卡IP地址
PREFIX-网络前缀
GATEWAY-网卡网关
DNS1-DNS主服务器(DNS作用:把域名解析为IP地址)
  • 文件说明 重启网络服务后,修改过的配置文件生效
Cent OS 6: ifdown eth0 && ifup eth0 重启网卡
Cent OS 6: service network restart 重启系统网络服务
Cent OS 7: systemctl restart network 重启系统网络服务
  • 文件内容
[root@aspen-han ~]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0 
     1  DEVICE=eth0 //设备名称:eth0(系统第一块网卡)
     2  TYPE=Ethernet //网卡类型:以太网
     3  UUID=efcc34a4-29c3-4f2a-a789-66872008e0be //系统设备标识符
     4  ONBOOT=yes //开机自启动:是
     5  NM_CONTROLLED=no //接受网络管理器控制:否
     6  BOOTPROTO=static //获取IP地址方式:手动获取 
     7  HWADDR=00:0C:29:30:76:DD //网卡MAC地址(全球唯一地址)-Cent OS 6 独有参数
     8  IPADDR=10.0.0.202 //IP地址
     9  PREFIX=24 //网络前缀(与NETMASK=255.255.255.0含义相同)
    10  GATEWAY=10.0.0.254 //网关
    11  DNS1=223.5.5.5 //主DNS服务器
    12  DNS2=223.6.6.6 //备DNS服务器
    13  DEFROUTE=yes
    14  IPV4_FAILURE_FATAL=yes
    15  IPV6INIT=no //是否支持IPv6:否
    16  NAME="eth0" //网卡名称(一般与设备名称一致)

系统DNS客户端配置文件

  • 文件位置 /etc/resolv.conf
  • 关键参数(无)
  • 文件说明 配置实时生效,系统网络服务重启后,文件内容将被网卡配置文件DNS覆盖
  • 文件内容
[root@aspen ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 223.5.5.5 //该文件中DNS成为nameserver,注意与网卡配置文件DNS区分

系统主机名配置文件

  • 文件位置(Cent OS 6) /etc/sysconfig/networks
  • 文件位置(Cent OS 7) /etc/hostname
  • 关键参数(无)
  • 文件说明
系统主机名配置文件修改,系统重启后生效,修改内容长期有效
hostname命令修改主机名,重新登录系统后生效,重启系统后失效
Cent OS 7 hostnamectl set-hostname 主机名 重新登录系统后生效,并且长期有效
使用hostname命令可以查询当前系统主机名
  • 文件内容
[root@aspen-han sysconfig]# cat /etc/sysconfig/network //Cent OS 6
NETWORKING=yes
HOSTNAME=aspen-han
[root@aspen ~]# cat /etc/hostname //Cent OS 7
aspen

系统本地DNS解析配置文件

  • 文件位置:/etc/hosts
  • 关键参数(无)
  • 文件说明 文件修改保存后立即生效
改文件在实际工作中,一般用于搭建测试环境
  • 文件内容
[root@aspen-han sysconfig]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

系统环境变量及别名配置文件

  • 文件位置 /etc/profile
  • 关键参数(常见环境变量)
UID-当前用户的UID信息
PATH-存放的是当前用户可执行命令的位置/路径
PS1-控制命令行格式
  • 文件说明
/etc/profile 用于存放系统环境变量
~/.profile 用于存放用户环境变量 (Linux系统中以 . 开头的文件为隐藏文件)

环境变量:在Linux系统中环境变量名一般由大写字母组成可以通过envset命令显示系统环境变量;(env仅显示系统环境变量;set显示系统环境变量及函数)

修改环境变量:变量名="Value"(为变量赋值);此种修改方式,仅本次登录有效
查看环境变量:echo $环境变量名

/etc/profile文件修改后,需使用source /etc/profile指令,使新的文件内容生效
  • 文件内容
[root@aspen ~]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
......

系统命令别名配置文件

  • 文件位置 /etc/bashrc
  • 关键参数(无)
  • 文件说明
/etc/bashrc 用于存放系统命令别名
~/.bashrc 用于存放用户命令别名
  • 文件内容
[root@aspen ~]# cat /etc/bashrc 
# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

# are we an interactive shell?
......

系统字符集变量配置文件

  • 文件位置:(Cent OS 6) /etc/sysconfig/i18n
  • 文件位置:(Cent OS 7) /etc/locale.conf
  • 关键参数:
LANG 系统使用的语言和字符集变量

en_US.UTF-8(英文)
zh_CN.UTF-8(中文)
  • 文件说明
Cent OS 7中可以使用localectl命令直接修改系统语言及字符集
通过文件(locale.conf)或命令修改系统字符集,重新登录生效
  • 文件内容
[root@aspen ~]# cat /etc/sysconfig/i18n   #Cent OS 6
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
[root@aspen ~]# cat /etc/locale.conf  #Cent OS 7 
LANG="en_US.UTF-8"

用户登录后执行的脚本和命令的存放目录

  • 文件位置 /etc/profile.d
  • 关键参数(无)
  • 文件说明(无)
  • 文件内容
[root@aspen ~]# ls /etc/profile.d/ 
256term.csh  bash_completion.sh  colorgrep.sh  colorls.sh  lang.csh  less.csh  sh.local  vim.sh      which2.sh
256term.sh   colorgrep.csh       colorls.csh   csh.local   lang.sh   less.sh   vim.csh   which2.csh

系统发行版本配置文件

  • 文件位置 /etc/redhat-release
  • 关键参数(无)
  • 文件说明(无)
  • 文件内容
[root@aspen-han sysconfig]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
[root@aspen ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@aspen ~]# ll /etc/*-release
-rw-r--r--. 1 root root  38 Nov 23 21:16 /etc/centos-release
-rw-r--r--. 1 root root 393 Nov 23 21:16 /etc/os-release
lrwxrwxrwx. 1 root root  14 Mar 20 09:32 /etc/redhat-release -> centos-release
lrwxrwxrwx. 1 root root  14 Mar 20 09:32 /etc/system-release -> centos-release

系统运行级别配置文件

  • 文件位置(Cent OS 6) /etc/inittab
  • 文件位置(Cent OS 7) /usr/lib/systemd/system/runlevel*.target
  • 关键参数
Cent OS 6运行级别(runlevel)

0:关机模式
1:单用户模式(不提供网络功能),一般用于重置root密码
2:多用户模式(无法访问NFS系统)
3:完全多用户模式(文本模式)
4:保留
5:图形化界面模式(X11)
6:重启模式
修改系统默认运行级别:直接修改配置文件最后一行的运行级别 ID 参数id:系统运行级别ID:default

Cent OS 7运行级别(runlevel)

0:poweroff.target 关机模式
1:rescue.target 救援模式
2:multi-user.target 多用户模式
3:multi-user.target 多用户模式
4:multi-user.target 多用户模式
5:graphical.target 图形化界面模式
6:reboot.target 重启模式
修改/查看系统默认运行级别
systemctl set-default 运行级别 #设置系统默认运行级别
systemctl get-default #查看系统默认运行级别
  • 文件说明
  • 文件内容(/etc/inittab)
[root@aspen-han sysconfig]# cat -n  /etc/inittab //Cent OS 6
     1  # inittab is only used by upstart for the default runlevel.
     2  #
     3  # ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
     4  #
     5  # System initialization is started by /etc/init/rcS.conf
     6  #
     7  # Individual runlevels are started by /etc/init/rc.conf
     8  #
     9  # Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
    10  #
    11  # Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
    12  # with configuration in /etc/sysconfig/init.
    13  #
    14  # For information on how to write upstart event handlers, or how
    15  # upstart works, see init(5), init(8), and initctl(8).
    16  #
    17  # Default runlevel. The runlevels used are:
    18  #   0 - halt (Do NOT set initdefault to this)
    19  #   1 - Single user mode
    20  #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    21  #   3 - Full multiuser mode
    22  #   4 - unused
    23  #   5 - X11
    24  #   6 - reboot (Do NOT set initdefault to this)
    25  # 
    26  id:3:initdefault: //文件唯一生效参数 id:系统运行级别ID:default

[root@aspen ~]# cat -n /etc/inittab  //Cent OS 7
     1  # inittab is no longer used when using systemd.
     2  #
     3  # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
     4  #
     5  # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
     6  #
     7  # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
     8  #
     9  # multi-user.target: analogous to runlevel 3
    10  # graphical.target: analogous to runlevel 5
    11  #
    12  # To view current default target, run:
    13  # systemctl get-default
    14  #
    15  # To set a default target, run:
    16  # systemctl set-default TARGET.target
    17  #
  • 文件内容(/usr/lib/systemd/system/runlevel*.target)
[root@aspen ~]# ls -l /usr/lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 Mar 20 09:32 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Mar 20 09:32 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Mar 20 09:32 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Mar 20 09:32 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Mar 20 09:32 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Mar 20 09:32 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Mar 20 09:32 /usr/lib/systemd/system/runlevel6.target -> reboot.target

系统开机自动挂载配置文件

  • 文件位置 /etc/fstab
  • 关键参数(无)
  • 文件说明(无)
  • 文件内容
[root@aspen ~]# blkid
/dev/sda1: UUID="ed50c0d5-412a-4c9d-9718-fc0c26e29cb1" TYPE="xfs" 
/dev/sda2: UUID="7cf733af-f4be-4eca-be4f-83cde65d7dfa" TYPE="swap" 
/dev/sda3: UUID="b1295302-6765-4999-8f5a-458e2928baeb" TYPE="xfs" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
[root@aspen ~]# cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Mar 20 09:32:15 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b1295302-6765-4999-8f5a-458e2928baeb /                       xfs     defaults        0 0
UUID=ed50c0d5-412a-4c9d-9718-fc0c26e29cb1 /boot                   xfs     defaults        0 0
UUID=7cf733af-f4be-4eca-be4f-83cde65d7dfa swap                    swap    defaults        0 0

开机自启动命令或脚本

  • 文件位置 /etc/rc.local(完整路径/etc/rc.d/rc.local)
  • 关键参数(无)
  • 文件说明
Cent OS 7中首次使用rc.local文件,需要为文件添加执行权限
chmod +x /etc/rc.d/rc.local
  • 文件内容
[root@aspen ~]# ll /etc/rc.local 
lrwxrwxrwx. 1 root root 13 Mar 20 09:32 /etc/rc.local -> rc.d/rc.local
[root@aspen ~]# cat /etc/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

存放系统服务管理脚本/命令目录

  • 文件位置(Cent OS 6) /etc/init.d/
  • 文件位置(Cent OS 7)/usr/lib/systemd/system/
  • 关键参数(无)
  • 文件说明
Cent OS 7
在Cent OS 7中/etc/init.d/目录下仅存放了系统网络服务
在Cent OS 7中使用systemctl命令来管理系统服务
  • 文件内容(/etc/init.d/)
[root@aspen-han ~]# ls /etc/init.d/ //Cent OS 6
abrt-ccpp  auditd            haldaemon   kdump         messagebus  ntpd       rdisc        sandbox    svnserve
abrtd      blk-availability  halt        killall       netconsole  ntpdate    rdma         saslauthd  sysstat
abrt-oops  cpuspeed          ip6tables   lvm2-lvmetad  netfs       postfix    restorecond  single     udev-post
acpid      crond             iptables    lvm2-monitor  network     psacct     rngd         smartd
atd        functions         irqbalance  mdmonitor     nfs-rdma    quota_nld  rsyslog      sshd
[root@aspen ~]# ls /etc/init.d/ //Cent OS 7
functions  netconsole  network  README
  • 文件内容(/usr/lib/systemd/system)
abrt-ccpp.service                       rhel-configure.service
abrtd.service                           rhel-dmesg.service
abrt-oops.service                       rhel-domainname.service
abrt-pstoreoops.service                 rhel-import-state.service
abrt-vmcore.service                     rhel-loadmodules.service
abrt-xorg.service                       rhel-readonly.service
......
rhel-autorelabel-mark.service           wpa_supplicant.service
rhel-autorelabel.service

用户登录系统后显示信息配置文件

  • 文件位置 /etc/motd
  • 关键参数 (无)
  • 文件说明 系统默认文件内容为空
  • 文件内容
[root@aspen-han ~]# cat /etc/motd 

用户登录系统前显示信息配置文件

  • 文件位置 /etc/issue和/etc/issue.net
  • 关键参数 (无)
  • 文件说明 在实际工作中清空文件内容
  • 文件内容
[root@aspen-han ~]# cat /etc/issue  //Cent OS 6
CentOS release 6.9 (Final)
Kernel \r on an \m
[root@aspen-han ~]# cat /etc/issue.net 
CentOS release 6.9 (Final)
Kernel \r on an \m
[root@aspen ~]# cat /etc/issue /etc/issue.net  //Cent OS 7  
\S
Kernel \r on an \m

\S
Kernel \r on an \m

系统用户信息配置文件

  • 文件位置:/etc/passwd
  • 关键参数(无)
  • 文件说明
第1列:用户名
第2列:密码(占位符)
第3列:UID
第4列:GID
第5列:用户说明信息(默认为空)
第6列:用户家目录
第7列:用户所使用的命令解释器
/bin/sh
/bin/bash 可登录系统用户使用(系统默认)
/sbin/nologin 虚拟用户/傀儡用户使用(负责运行Linux下面的进程或者服务,而不需要登录系统的用户)

用户UID 系统中约定的含义 说明 备注
0 root-超级管理员 最高权限,对系统有着极强的坏力 强制规定
1-200 系统用户 用来运行系统自带的进程,默认已创建,
所以该类用户无需登录系统
201-999 虚拟用户(傀儡用户) 系统用户,用来运行用户安装的程序,
所以该类用户无需登录系统
CentOS 7
1000+ 普通用户 可以正常登录系统的用户,权限有限,能执行的任务也有限 CentOS 7
201-499 虚拟用户(傀儡用户) 系统用户,用来运行用户安装的程序,
所以该类用户无需登录系统
CentOS 6
500+ 普通用户 可以正常登录系统的用户,权限有限,能执行的任务也有限 CentOS 6
傀儡用户的存在,是为了满足每个进程在运行的时候需要一个用户和用户组的系统需求;
  • 文件内容
[root@aspen ~]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

系统用户登录密码(密文)配置文件

  • 文件位置:/etc/shadow
  • 关键参数(无)
  • 文件说明
存放用户加密密码的文件
第1列:用户名
第2列:密文密码,表示形式为字符串;
附:!!表示该用户没有密码。
第3列:最近一次密码变更的相对时间
附:相对于1970年1月1日,经过多少
第4列:密码最少使用时长;(单位:天)
0表示无限制;
第5列:密码最长使用时长;(单位:天)
附:默认值为99999表示不过期;在实际生产环境中,公司服务的root密码必须保证每3个月更换一次。
第6列:密码到期前提醒;系统会在密码到期前n天,提醒变更密码;
第7列:密码到期后提醒;系统会在密码到期后n天,强制提示变更密码;
第8列:账户失效时间;账户失效时间之前,账户可正常使用;
附:相对于1970年1月1日,经过多少后,账户失效;

  • 文件内容
[root@aspen ~]# head -5 /etc/shadow
root:$6$nw1Vz5LS$G2cB6ZJkpx5Rz6UE849VdjaNvjRB9PXttepjC6mZegNoNuBq1mCF22GP9bhuucXBwucNMabiiMYV0e0fg9.gO.:18029:0:99999:7:::
bin:*:17834:0:99999:7:::
daemon:*:17834:0:99999:7:::
adm:*:17834:0:99999:7:::
lp:*:17834:0:99999:7:::

创建用户基本配置文件

  • 文件位置:/etc/login.defs 和 /etc/defaults/useradd
  • 关键参数(无)
  • 文件说明(无)
使用useradd指令创建用户时,系统参考/etc/login.defs/etc/defaults/useradd两个文件;如果在创建用户时指定了选项参数,则选项参数会覆盖/etc/login.defs/etc/defaults/useradd文件中的默认配置;若未指定相关参数,则使用文件默认设置;
  • 文件内容

/etc/login.defs文件

[root@Tech ~]# grep -Ev '^$|^#' /etc/login.defs 
MAIL_DIR    /var/spool/mail     #创建的邮箱所在位置
PASS_MAX_DAYS   99999           #密码最大使用时长
PASS_MIN_DAYS   0               #密码最小使用时长
PASS_MIN_LEN    5               #密码最小长度
PASS_WARN_AGE   7               #密码过期前提醒时间
UID_MIN                  1000   #创建普通用户起始UID
UID_MAX                 60000   #创建普通用户结束UID
SYS_UID_MIN               201   #创建系统用户起始UID
SYS_UID_MAX               999   #创建系统用户结束UID
GID_MIN                  1000   #创建普通用户组起始GID   
GID_MAX                 60000   #创建普通用户组结束GID
SYS_GID_MIN               201   #创建系统用户组起始GID
SYS_GID_MAX               999   #创建系统用户组结束GID
CREATE_HOME yes                 #默认创建家目录
UMASK           077             #用户家目录默认权限掩码
USERGROUPS_ENAB yes             #创建用户同名组(userdel指令删除组内最后一个用户后,默认删除该用户组)
ENCRYPT_METHOD SHA512           #密码加密方式

/etc/default/useradd文件

[root@Tech ~]# grep -Ev '^$|^#' /etc/default/useradd 
GROUP=100               #创建用户时;使用此GID当/etc/login.defs中的USERGROUPS_ENAB=no时,#或者useradd使用了-N选项时,该参数生效;
HOME=/home              #普通用户家目录创建路径
INACTIVE=-1             #帐号失效时间
EXPIRE=                 #帐号过期时间
SHELL=/bin/bash         #默认的SHELL解释器类型
SKEL=/etc/skel          #用户家目录的模版目录
CREATE_MAIL_SPOOL=yes   #默认创建用户邮箱

系统用户组信息配置文件

  • 文件位置:/etc/group
  • 关键参数(无)
  • 文件说明(无)
  • 文件内容
第1列:用户组名
第2列:密码(占位符);
第3列:用户组GID
第4列:附加组成员(不显示基本组成员)

[root@aspen ~]# head -5 /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:

系统用户组登录密码(密文)配置文件

  • 文件位置:/etc/gshadow
  • 关键参数(无)
  • 文件说明(无)
  • 文件内容
第1列:用户组名
第2列:密码;
第3列:用户组管理员
第4列:附加组成员(不显示基本组成员)

[root@aspen ~]# head -5 /etc/gshadow
root:::
bin:::
daemon:::
sys:::
adm:::

sudo命令配置文件

  • 文件位置:/etc/sudoers
  • 关键参数
aspen ALL=(ALL) /sbin/*
用户名 可以在哪台机器上使用=(可以切换为哪个用户) 命令;

可以在哪台机器上使用,一般用的标识位该主机的主机名;
  • 文件说明
一般用visudo命令编辑该文件;
不要在该文件中针对同一个用户进行多次授权
  • 文件内容
[root@aspen ~]# cat -n /etc/sudoers |awk 'NR==98,NR==104'
    98  ##
    99  ## Allow root to run any commands anywhere 
   100  root    ALL=(ALL)   ALL
   101  aspen   ALL=(ALL)       NOPASSWD:ALL    ##授权aspen用户执行系统所有命令时可以使用root身份,并且在使用sudo命令时不需要输入密码;
   102  stu01   ALL=(ALL)       /sbin/* !/sbin/rm !/sbin/vim !/sbin/su  ##授权stu01用户执行/sbin/以下,rm/vim/su以外的所有命令可以使用root身份
   103  
   104  ## Allows members of the 'sys' group to run networking, software, 

创建普通用户的家目录模板目录

  • 文件位置:/etc/skel/
  • 关键参数(无)
  • 文件说明
创建普通用户时,当用户创建成功时,系统会为用户创建家目录;然后将/etc/skel/目录下的所有内容复制到该用户家目录中;
当普通用户家目录某一文件被删除导致用户或系统提示符不正常时,可以到该目录下复制指定文件到家目录下,以便修复故障
  • 文件内容
[root@aspen ~]# ll -a /etc/skel/
total 24
drwxr-xr-x.  2 root root   62 Apr 11  2018 .
drwxr-xr-x. 80 root root 8192 May 14 10:45 ..
-rw-r--r--.  1 root root   18 Oct 31  2018 .bash_logout
-rw-r--r--.  1 root root  193 Oct 31  2018 .bash_profile
-rw-r--r--.  1 root root  231 Oct 31  2018 .bashrc

编译软件默认安装目录

  • 文件位置 /usr/local
  • 关键参数 (无)
  • 文件说明 (无)
  • 文件内容
[root@aspen ~]# ls  -l /usr/local/
total 0
drwxr-xr-x. 2 root root  6 Apr 11  2018 bin
drwxr-xr-x. 2 root root  6 Apr 11  2018 etc
drwxr-xr-x. 2 root root  6 Apr 11  2018 games
drwxr-xr-x. 2 root root  6 Apr 11  2018 include
drwxr-xr-x. 2 root root  6 Apr 11  2018 lib
drwxr-xr-x. 2 root root  6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root  6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root  6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root 49 Mar 20 09:32 share
drwxr-xr-x. 2 root root  6 Apr 11  2018 src

存放源码文件的安装目录

  • 文件位置 /usr/src
  • 关键参数 (无)
  • 文件说明 (无)
  • 文件内容
[root@aspen ~]# ls -l /usr/src/
total 0
drwxr-xr-x. 2 root root  6 Apr 11  2018 debug
drwxr-xr-x. 3 root root 35 Mar 20 09:32 kernels

系统CPU信息文件

  • 文件位置 /proc/cpuinfo
  • 关键参数
processor-CPU核心ID(从0开始,0带代表第1个CPU核心)
physical id-物理CPU ID(从0开始,0代表第一颗CPU)
  • 文件说明
查看系统主机CPU的概要信息,可以使用lscpu指令
  • 文件内容
[root@aspen ~]# cat /proc/cpuinfo 
processor   : 0 //系统CPU第一个核心
vendor_id   : GenuineIntel
cpu family  : 6
model       : 158
model name  : Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz //CPU型号
stepping    : 10
microcode   : 0x84
cpu MHz     : 2208.000 //CPU核心主频
cache size  : 9216 KB 
physical id : 0
siblings    : 1
core id     : 0 //系统主机CPU ID
cpu cores   : 1
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 22
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp arch_capabilities
bogomips    : 4416.00
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management:

系统内存信息文件

  • 文件位置 /proc/meminfo
  • 关键参数
MemTotal-系统内存总空间
MemFree-系统空闲内存空间
MemAvailable-系统内存可用空间
  • 文件说明
查看系统内存的概要信息,可以使用free -h指令
  • 文件内容
[root@aspen ~]# cat /proc/meminfo 
MemTotal:         995896 kB //系统内存总空间
MemFree:          701492 kB //系统空闲内存空间
MemAvailable:     685964 kB //系统内存可用空间
Buffers:            4136 kB //系统缓冲池空间
Cached:            94040 kB //系统缓冲区空间
SwapCached:            0 kB
Active:           100820 kB
Inactive:          71036 kB
Active(anon):      74088 kB
......

系统负载信息文件

  • 文件位置 /proc/loadavg
  • 关键参数 (无)
  • 文件说明
查看系统负载信息可使用wuptime指令
系统三个数值分别表示近1分钟、5分钟、15分钟的系统繁忙程度;数值与CPU总核心数量值越接近表示系统越繁忙
系统负载繁忙程度主要参考CPU和磁盘的指标
  • 文件内容
[root@aspen ~]# cat /proc/loadavg
0.00 0.01 0.05 2/112 9115

系统挂载信息文件

  • 文件位置 /proc/mounts
  • 关键参数 (无)
  • 文件说明 (无)
  • 文件内容
[root@aspen ~]# head -6 /proc/mounts 
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=487048k,nr_inodes=121762,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev 0 0

系统服务和系统信息日志文件

  • 文件位置 /var/log/message
  • 关键参数 (无)
  • 文件说明
日志内容由rsyslog服务(系统日志服务)提供
  • 文件内容
[root@aspen ~]# tail -7 /var/log/messages
Apr 12 09:31:56 aspen nm-dispatcher: req:1 'up' [eth0]: start running ordered scripts...
Apr 12 09:31:56 aspen nm-dispatcher: req:2 'connectivity-change': new request (2 scripts)
Apr 12 09:31:56 aspen nm-dispatcher: req:2 'connectivity-change': start running ordered scripts...
Apr 12 09:31:56 aspen systemd: Started LSB: Bring up/down networking.
Apr 12 09:32:39 aspen systemd: Started Session 10 of user root.
Apr 12 09:32:39 aspen systemd-logind: New session 10 of user root.
Apr 12 10:01:01 aspen systemd: Started Session 11 of user root.

系统用户登录日志文件

  • 文件位置 /var/log/secure
  • 关键参数 (无)
  • 文件说明
日志内容由rsyslog服务(系统日志服务)提供
平时工作中主要关注失败信息,尤其是Fail Password
  • 文件内容
[root@aspen ~]# tail -f /var/log/secure
Apr 11 20:06:27 aspen sshd[7739]: Accepted password for root from 10.0.0.1 port 60132 ssh2
Apr 11 20:06:27 aspen sshd[7739]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 11 20:21:23 aspen sshd[7739]: pam_unix(sshd:session): session closed for user root
Apr 11 21:51:55 aspen sshd[8208]: Accepted password for root from 10.0.0.1 port 50385 ssh2
Apr 11 21:51:55 aspen sshd[8208]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 11 22:57:34 aspen sshd[8208]: pam_unix(sshd:session): session closed for user root
Apr 11 22:57:36 aspen sshd[8333]: Accepted password for root from 10.0.0.1 port 50727 ssh2
Apr 11 22:57:36 aspen sshd[8333]: pam_unix(sshd:session): session opened for user root by (uid=0)
Apr 12 09:32:39 aspen sshd[9053]: Accepted password for root from 10.0.0.1 port 50866 ssh2
Apr 12 09:32:39 aspen sshd[9053]: pam_unix(sshd:session): session opened for user root by (uid=0)
[root@aspen ~]# tail -f /var/log/secure | grep -i failed
Apr 12 10:08:28 aspen unix_chkpwd[9215]: password check failed for user (root)
Apr 12 10:08:30 aspen login: FAILED LOGIN 1 FROM tty1 FOR root, Authentication failure
Apr 12 10:08:36 aspen login: FAILED LOGIN 2 FROM tty1 FOR (unknown), User not known to the underlying authentication module

硬件信息加载情况日志文件

  • 文件位置 /var/log/dmesg
  • 关键参数 (无)
  • 文件说明 (无)
  • 文件内容
[root@aspen ~]# tail -5 /var/log/dmesg
[   11.034243] XFS (sda1): Ending clean mount
[   11.439735] floppy0: no floppy controllers found
[   11.439763] work still pending
[   11.511992] type=1305 audit(1554983382.001:4): audit_pid=6309 old=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:auditd_t:s0 res=1
[   12.147024] NET: Registered protocol family 40

记录定时任务的执行日志

  • 文件位置:var/log/cron
  • 关键参数(无)
  • 文件说明
只记录定时任务是否执行,不会记录错误
查看日志文件可帮助我们排查定时任务是否执行成功
  • 文件内容
[root@aspen ~]# tail -4 /var/log/cron
May 14 11:17:02 aspen run-parts(/etc/cron.daily)[32612]: finished man-db.cron
May 14 11:17:02 aspen anacron[31432]: Job `cron.daily' terminated
May 14 11:17:02 aspen anacron[31432]: Normal exit (1 job run)
May 14 11:22:24 aspen crontab[32887]: (root) LIST (root)

系统定时任务存放目录

  • 文件位置:/var/spool/cron/
  • 关键参数

  • 文件说明
定时任务:定时的运行命令或者脚本,一般用于数据备份;每个用户创建的定时定时任务,将会在该目录下创建一个以该用户用户名命名的文件;
定时任务名称:crontab(命令)、cronie(软件包名称)

crontab -l == cat /var/spool/cron/
crontab -e == vim /var/spool/cron/
定时任务书写流程
1、书写定时任务要写注释
2、测试命令是否可执行
3、书写脚本,测试脚本
4、书写定时任务(脚本注意使用绝对路径)
5、增加定时任务执行频率(每分钟执行一次)
6、测试正常后,再将时间设为指定时间

定时任务书写注意事项

如果定时任务没有定向到/dev/null,系统会发送大量的邮件;
如果该服务器邮件服务关闭,它将会把未发送成功的邮件存放在临时目录(/var/spool/postfix/maildrop),导致系统积累大量邮件文件,占用系统inode号;
定时任务最短执行间隔时间为1分钟;

  • 文件内容
[root@aspen ~]# ll -A /var/spool/cron/
total 4
-rw-------. 1 root root 99 May 10 21:48 root
[root@aspen ~]# cat /var/spool/cron/root 
#backup-etc-cron@2019-05-10 00:00 by aspen
00 00 * * * sh /scripts/bak-etc-cron.sh >/dev/null 2>&1
[root@aspen ~]# crontab -l
#backup-etc-cron@2019-05-10 00:00 by aspen
00 00 * * * sh /scripts/bak-etc-cron.sh >/dev/null 2>&1

系统用户登录日志文件

  • 文件位置 /var/tmp
  • 关键参数 (无)
  • 文件说明
保存进程产生的临时文件
  • 文件内容
[root@Tech ~]#ls -dlh /var/tmp/
drwxrwxrwt. 2 root root 6 Dec 22 15:18 /var/tmp/
[root@Tech ~]#ls -al /var/tmp/
total 0
drwxrwxrwt.  2 root root   6 Dec 22 15:18 .
drwxr-xr-x. 20 root root 278 Oct 12  2019 ..

附:思维导图

未完待续...