当前位置:   article > 正文

linux基础内容_id_like="rhel fedora

id_like="rhel fedora

计算机系统

查看服务器型号

dmidecode | grep "System Information" -A9 | egrep "Manufacturer|Product|Serial"
  • 1

计算机硬件

  • 主机
    • CPU
    • 内存
    • 主板
  • 外部设备
    • 存储 (硬盘 光盘 闪存)
    • 输入设备 (键盘 鼠标等)
    • 输出设备 (显示器 音箱等)

计算机软件

  • 系统软件
    • 操作系统
    • 编译和解释系统
    • 系统服务程序
    • 网络软件
  • 应用软件
    • 文字处理软件
    • 各种应用软件包

冯诺依曼体系结构

  • 输入
  • 输出
  • 运算器
  • 控制器
  • 寄存器

计算机系统计量单位

转换关系字节数
1B=8bit2^0B
1KB=1024B2^10B
1MB=1024KB2^20B
1GB=1024MB2^30B
1TB=1024GB2^40B
1PB=1024TB2^50B
1EB=1024PB2^60B

服务器

服务器组成

  • CPU
  • 内存
  • 磁盘
    • 机械硬盘(IDE/SATA/SCSI/SAS)
    • 固态硬盘
  • 网卡
  • 电源
  • 主板
  • RAID卡
    • RAID0
    • RAID1
    • RAID5
    • RAID6
    • RAID10
    • RAID50
    • RAID60
  • 远程管理卡
  • 光驱

服务器种类

  • 机架式服务器

规格 :

厚度 用U表示 1U=1.75英寸=4.445CM=4.45CM

宽度 19英寸

  • 刀片服务器

  • 塔式服务器

服务器品牌

  • dell
    • r610 r710
    • r620/r630 r720/r730
  • IBM
    • 3650
    • 3850
    • 3950
  • HP
  • 联想
  • 浪潮

操作系统

什么是操作系统

  • 用户与计算机硬件之间用于传递信息的系统程序软件
  • 管理和控制计算机硬件与软件资源的计算机程序,直接运行在"裸机"上

操作系统种类

  • Windows
  • Linux
  • Unix
  • macOS

Linux系统

Linux特点

  • 开放源代码,可以自由修改
  • unix系统兼容,具备几乎所有unix的优秀特性
  • 可自由传播,无任何商业化版权制约
  • 适合Intel x86 CPU系列架构的计算机

Linux发展史

  • 1969年unix在贝尔实验室诞生
  • 1978年诞生BSD(Berkeley Software Distribution)系统。
  • 此后,各大厂商及商业公司根据自身公司的硬件架构,并以BSD系统为基础,开发出了各种版本的unix系统
  • 1984年,Andrew S. Tanenbaum 开发了用于教学的unix系统,命名为MINIX,并将MINIX系统运行在X86的PC计算机平台
  • 1984年,Richard Matthew Stallman发起GNU项目计划,获得自由软件基金(FSF)会支持,并遵循GPL协议,目标是建立一个开源的类Unix系统
  • 1990年,芬兰赫尔辛基大学学生Linus Torvalds 首次接触MINIX系统
  • 1991年,Linus Torvalds开始在MINIX上编写各种驱动程序等操作系统内核组件
  • 1991年底,Linus Torvalds 公开了Linux内核源码0.02版(http://www.kernel.org)
  • 1993年,linux1.0版发行,linux转向GPL协议
  • 1994年,linux的第一个商业发行版Slackware问世

Linux系统组成

  • Linux内核
  • GNU项目组件(gcc bash 等)
  • 其它必要的应用程序

Linux发行版

  • Redhat系列
    • redhat
    • fedora
    • centos
  • Debian系列
    • Debian
    • Ubuntu
  • Slackware系列
  • arch系列

Linux目录文件操作

命令格式

命令 [选项] [参数]

ls -l /etc/hosts

目录操作

创建目录

mkdir /data
  • 1

查看目录下内容

ls /data
  • 1

查看目录本身

ls -d /data
  • 1

切换目录

cd
cd /data
cd ~
cd -
cd ..
  • 1
  • 2
  • 3
  • 4
  • 5

查看当前所在目录

pwd
  • 1

目录改名(或移动目录)

mv /data /wuxing
  • 1

复制目录

cp -r /wuxing /root/
  • 1

删除目录

rm -r /wuxing
  • 1

绝对路径和相对路径

  • 绝对路径: 从 / 开始
  • 相对路径: 从当前目录开始
  • 所有目录和文件相关的操作都可以使用绝对路径和相对路径

文件操作

创建文件

创建空文件
touch oldboy.txt
  • 1
创建有内容的文件
echo oldboy > oldboy.txt  #覆盖
echo 123456 >> oldboy.txt #追加
  • 1
  • 2

查看文件内容

查看文件内容命令很多

cat oldboy.txt
head oldboy.txt
tail oldboy.txt
more oldboy.txt
less oldboy.txt
grep  sed  awk
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

查看文件本身

ls -l oldboy.txt
  • 1

修改文件名(或移动文件)

mv oldboy.txt oldgirl.txt
  • 1

复制文件

cp oldgirl.txt /tmp/
  • 1

修改文件内容

vi/vim  oldgirl.txt
  • 1

vi编辑器简单操作步骤

  • vi oldgirl.txt #打开文件
  • 输入字母i,进入插入模式,编辑文件
  • 编辑完成后,按Esc,再输入 :wq 保存退出

删除文件

rm oldgirl.txt
  • 1

命令分类

  • 内置命令
  • 外部命令
  • 别名
  • 函数
type cd
  • 1

命令帮助

本地帮助

  • 命令 --help

  • man 命令/配置文件

  • help 命令 (用于linux内置命令)

  • info 命令

在线帮助

搜索 linux ls 命令
http://man.linuxde.net/
http://linux.51yip.com/
https://www.gnu.org/software/coreutils/manual/coreutils.html

常用快捷键

tab键   命令或路径补全功能
ctrl+c  终止当前命令或程序
ctrl+d  退出当前shell
ctrl+l  清屏
ctrl+a  命令行光标移到行首
ctrl+e  命令行光标移到行尾
ctrl+u  命令行删除光标到行首的内容
ctrl+k  命令行删除光标到行尾的内容
ctrl+r  命令行搜索
ctrl+s  锁屏
ctrl+q  解锁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

目录结构

http://www.pathname.com/fhs/pub/fhs-2.3.html

Linux目录机制

  • Linux系统只有一个根 /
  • 一切从根开始
  • 整个根目录就是一颗倒挂的树
  • 目录结构和设备是分离的,任何一个目录都可能对应一个不同的磁盘或分区
  • 磁盘设备必须挂载才能使用

查看目录树

tree

目录结构详细

/usr 文件系统的主要部分

目录含义
/usr/bin基本用户命令二进制文件
/usr/sbin系统命令二进制文件
/usr/lib基本共享库和内核模块
/usr/lib6464位共享库
/usr/local本地安装软件存放目录(源码安装软件默认目录)
/usr/includeC程序包含的头文件
/usr/src程序源码目录
/usr/share与体系结构无关的数据
/usr/share/man帮助目录
/usr/share/doc文档目录

centos7系统运行级别

/usr/lib/systemd/system/runlevel0.target -> poweroff.target
/usr/lib/systemd/system/runlevel1.target -> rescue.target
/usr/lib/systemd/system/runlevel2.target -> multi-user.target
/usr/lib/systemd/system/runlevel3.target -> multi-user.target
/usr/lib/systemd/system/runlevel4.target -> multi-user.target
/usr/lib/systemd/system/runlevel5.target -> graphical.target
/usr/lib/systemd/system/runlevel6.target -> reboot.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

/boot 引导加载程序的静态文件

/dev 设备文件

  • /dev/null
  • /dev/zero
  • /dev/sda
  • /dev/sr0

/etc 系统配置文件

网卡配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
  • 1
DNS配置文件
/etc/resolv.conf
  • 1
主机名配置文件
/etc/hostname
  • 1
设置主机名
hostnamectl set-hostname wuxingge
  • 1
hosts文件
/etc/hosts
  • 1
文件系统自动挂载列表
/etc/fstab
  • 1
[root@oldboyedu ~]# blkid 
/dev/sda1: UUID="1515d309-b3aa-4df7-8a0a-a6bf5d0587c9" TYPE="xfs" 
/dev/sda2: UUID="e5256992-206d-4ade-bb70-7ca46ec94998" TYPE="swap" 
/dev/sda3: UUID="7189cadf-e438-4507-a4ef-4e304c4c3d40" TYPE="xfs" 
/dev/sr0: UUID="2018-11-25-23-54-16-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
  • 1
  • 2
  • 3
  • 4
  • 5
开机自动启动程序
/etc/rc.local  -> /etc/rc.d/rc.local
  • 1
系统默认运行级别
/etc/inittab 
  • 1
各系统运行级别执行的任务
/etc/rc.d/rc0.d/
/etc/rc.d/rc1.d/
/etc/rc.d/rc2.d/
/etc/rc.d/rc3.d/
/etc/rc.d/rc4.d/
/etc/rc.d/rc5.d/
/etc/rc.d/rc6.d/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
环境变量配置文件
  • /etc/profile 系统环境变量
  • /etc/profile.d/*.sh 软件特有的环境变量
  • ~/.bash_profile 用户特定的环境变量
别名与函数配置文件
  • ~/.bashrc 用户特定的别名和函数
  • /etc/bashrc 系统别名和函数
系统登录提示信息

/etc/issue 认证前的输出信息,默认输出版本内核信息
/etc/issue.net
/etc/motd 设置认证后的输出信息

系统信息相关
[root@repo ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
  • 1
  • 2
[root@repo ~]# cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
[root@repo ~]# uname -a
Linux repo.novalocal 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
  • 1
  • 2
selinux配置文件
/etc/selinux/config
  • 1

本次关闭selinux

setenforce 0
  • 1

查看selinux状态

getenforce
  • 1
语言字符集配置文件
/etc/locale.conf
  • 1

设置语言字符集

localectl set-locale LANG=zh_CN.utf8
  • 1

/home 用户家目录

/opt 附加应用程序软件包

/root root用户家目录

/run 运行时变量数据(pid文件)

/run/lock/ 锁文件

/proc 内核和进程信息虚拟文件系统

文件含义
/proc/cpuinfo处理器的信息
/proc/meminfo内存信息
/proc/devices当前运行内核所配置的所有设备清单
/proc/filesystems文件系统
/proc/dma当前正在使用的DMA通道
/proc/interrupts正在使用的中断和曾经有多少个中断
/proc/ioports当前正在使用的I/O端口

/sys 虚拟的目录(内存中的信息)

/tmp 临时文件

/var 变化的文件

目录含义
/var/cache应用程序缓存数据
/var/lib变化的数据
/var/log日志文件和目录
/var/opt/opt的变量数据
/var/spool应用程序假脱机数据
/var/tmp系统重新引导之间保留的临时文件

系统相关日志文件

/var/log/messages
/var/log/secure
/var/log/dmesg
  • 1
  • 2
  • 3

/mnt 临时文件系统的挂载点

/media 可移动设备的挂载点

/srv 系统提供的服务数据

文件属性(元数据)

文件属性信息

[root@repo ~]# ll -i /etc/hosts
101031 -rw-r--r--. 1 root root 159 6月   4 17:17 /etc/hosts
  • 1
  • 2
含义
第一列inode号
第二列文件类型及权限(第二列共11个字符:其中第一个字符是文件类型,随后的9个字符为文件的对应权限,最后一个字符点号 . 是和selinux有关的一个标识)
第三列硬链接个数
第四列文件所有者(属主)
第五列文件所属的组(属组)
第六列文件大小
第七、八、九列修改时间
第十列文件名

inode和block

  • 硬盘格式化的时候,操作系统将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

  • inode号是文件在磁盘上的唯一标识

  • inode 用来存放文件的属性和指向其block的指针

  • 一个文件占一个inode,至少占用一个block

  • 磁盘读取或写入数据是按block为单位进行的

  • 读或者写一个block称为一次IO

文件三要素

  • 目录项(文件名)
  • inode
  • block
文件类型目录项inodeblock
文件文件名inode号文件内容
目录目录名inode号目录中的文件名

找文件过程

  • 首先,系统找到这个文件名对应的inode号码

  • 其次,通过inode号码,获取inode信息

  • 最后,根据inode信息,找到文件数据所在的block,读出数据

查看文件inode

ls -li
  • 1

查看文件属性详细信息

stat /etc/hosts
  • 1

查看磁盘inode

df -i
  • 1

查看磁盘block

df -h
  • 1

磁盘空间满

inode使用完或block使用完都表示磁盘空间使用完

文件类型

文件类型标识符文件类型
-普通文件(文本文件、二进制文件、数据文件、压缩文件)
d目录(directory)
l软链接(link)
b块设备(block)
c字符设备(character)
ssocket文件
p管道文件(pipe)

查看文件类型

file /etc/hosts
  • 1

权限

权限含义数字表示
r4
w2
x执行1
-没有任何权限0
属主属组其他用户
rw-r–r–
644

链接数

硬链接

  • 具有相同inode号的文件(互为硬链接),本质是一个文件
  • 目录自带硬链接但不能做硬链接
  • 硬链接不能跨文件系统
目录硬链接说明
[root@oldboy test]# ls -ldi oldboy oldboy/. oldboy/oldboydir/..
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy/.
398269 drwxr-xr-x 3 root root 4096 Aug 26 20:20 oldboy/oldboydir/..
  • 1
  • 2
  • 3
  • 4
创建硬链接
ln oldboy.txt OLDBOY.TXT
  • 1
删除文件本质
  • 删除文件的所有硬链接
文件删除条件
  • 文件硬链接数为0
  • 文件没有进程占用

软链接(符号链接)

  • 软链接文件指向源文件
  • 软链接与源文件是不同的文件
  • 可以跨文件系统
创建软链接
ln -s oldboy.txt old.txt
  • 1

用户和组

用户类型

UID用户类型用户特性
0超级用户rootlinux系统超级管理员
1-999虚拟用户不能登录系统
1000-65535普通用户可以登录系统

文件时间

  • modify mtime 文件内容(block)修改时间

  • change ctime 文件属性(元数据)改变时间

  • access atime 文件内容访问时间

ls -lhi

7 8 9 三列是时间(修改时间)

文件归档

tar [选项] 归档文件 【文件或目录】

参数参数说明其他说明
-zgzip压缩格式
-c创建归档
-f指定归档文件
-r给归档文件中添加文件
-t列出归档文件的内容
-x从归档中提取文件
-v显示执行过程
-C<目录> 指定解压到的目录
–exclude=文件目录排除文件–exclude=/etc/services --exclude=c --exclude=b
-h需要打包的文件是软链接用此参数
-P从/开始打包

软件包管理

rpm

  • rpm 红帽软件包管理工具
  • rpm管理的软件包是rpm包

rpm命令格式

rpm  [选项...]  参数
  • 1

查询选项

选项含义
-q查询
-a所有
-p软件包
-f文件属于哪个软件包
-l软件包中的文件列表
-c软件包中的配置文件
-R软件包依赖

安装/升级/卸载选项

选项含义
-i安装
-v显示附加信息
-h安装时输出hash记号
-e卸载
-U升级
–nodeps不检查依赖

yum

rpm包管理工具,自动解决依赖关系

yum命令格式

yum  [选项]  command  [参数]
  • 1

常用command

  • clean
clean all 清除全部
clean packages 清除临时包文件(/var/cache/yum 下文件)
clean headers 清除rpm头文件
clean oldheaders 清除旧的rpm头文件
  • 1
  • 2
  • 3
  • 4
  • list
list   可安装和可更新的RPM包
repolist 显示资源库的配置
list installed 已安装的包
list extras 已安装且不在资源库的包
deplist     列出包的依赖
  • 1
  • 2
  • 3
  • 4
  • 5
  • 安装/重装/卸载/升级
install      安装包
localinstall     安装本地的RPM包
groupinstall   组安装
reinstall       重新安装包
remove         卸载包
update         更新包
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 搜索
search        搜索包
provides      搜索文件属于哪个包
  • 1
  • 2
  • 其它
history     查看yum历史操作
info installed 已安装包的信息
  • 1
  • 2

yum源配置

  • yum源配置文件 /etc/yum.repos.d/*.repo
[BaseOS]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二进制包

  • 下载
  • 解压

源码包

  • 下载
  • 解压
  • 进入目录
  • 配置
./configure
  • 1
  • 编译
make
  • 1
  • 安装
make install
  • 1
wget https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/manpages-zh-1.5.1.tar.gz/13275fd039de8788b15151c896150bc4/manpages-zh-1.5.1.tar.gz


./configure --disable-zhtw  --prefix=/usr/local/zhman
make
make install


alias cman='man -M /usr/local/zhman/share/man/zh_CN'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

用户管理

Linux是一个多用户多任务的操作系统

用户作用

  • 登录认证

  • 管理计算机资源

用户组

  • 组是一个逻辑概念,将用户分成不同的组,方便管理
  • Linux中用户与组的关系是多对多

用户分类

UID用户类型
0超级用户root
1-499/1-999系统用户(或傀儡用户)
>500/> 1000普通用户

组分类

gid组类型
0root组
1-499/1-999系统用户组
>500/> 1000普通用户组

用户相关文件

  • /etc/passwd

用户相关信息

rootx00root/root/bin/bash
账号密码占位符UIDGID用户说明家目录登录shell
  • /etc/shadow

密码相关信息

账号用户账号名称
密码加密后的口令
最近更改密码的时间从1970年1月1日起,到用户最后一次更改密码的天数
禁止修改密码的天数从1970年1月1日起,到用户可以更改密码的天数
用户必须更改口令的天数从1970年1月1日起,到用户必须更改密码的天数
警告更改密码的期限用户密码过期前多少天提示用户更改密码
不活动时间在用户密码过期之后到禁用账户的天数
失效时间从1970年1月1日起,到用户被禁用的天数
标志保留
  • /etc/default/useradd

添加用户时的默认配置

GROUP=100  依赖于/etc/login.defs 的USERGROUPS_ENAB参数,如果为no,则此处控制
HOME=/home       把用户家目录建在/home 下
INACTIVE=-1   是否启用账号过期停权,-1表示不启用
EXPIRE=   账号终止日期,不设置表示不启用
SHELL=/bin/bash     新用户默认所用的shell类型
SKEL=/etc/skel        配置新用户家目录的环境配置文件路径
CREATE_MAIL_SPOOL=yes  创建mail文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • /etc/login.defs

用户认证的默认属性

PASS_MAX_DAYS   99999    一个密码最长可以使用的天数
PASS_MIN_DAYS   0     更换密码的最小天数
PASS_MIN_LEN    5   密码的最小长度
PASS_WARN_AGE   7       密码失效前提前多少天开始警告
  • 1
  • 2
  • 3
  • 4
  • /etc/skel/

用来存放新用户的环境配置文件,为新创建的用户添加初始化配置

[root@localhost ~]# ll /etc/skel/ -a
总用量 28
drwxr-xr-x.   2 root root   76 925 15:45 .
drwxr-xr-x. 101 root root 8192 1028 12:01 ..
-rw-r--r--.   1 root root   18 511 08:16 .bash_logout
-rw-r--r--.   1 root root  141 511 08:16 .bash_profile
-rw-r--r--.   1 root root  312 511 08:16 .bashrc
-rw-r--r--.   1 root root  658 512 00:06 .zshrc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

组相关文件

  • /etc/group 组信息文件
  • /etc/gshadow 组密码信息文件

创建用户

useradd

选项说明
-u uid指定用户id
-g initial_group用户登录起始用户组(主要组)
-G group,[…]附加组(次要组)
-M不创建家目录。一般创建虚拟用户是不创建家目录,部署服务时要创建虚拟用户
-s shell指定用户登录系统后使用的shell
-d home_dir指定家目录
-r创建虚拟用户
-c comment注释说明信息
-m用户目录如不存在则自动创建
-e expire_date账号终止日期(账号过期时间) 日期 -e “+30 day” -e “2016/12/20”
-f账号过期几日后永久停权

查看用户信息

id root
  • 1

查看用户登录系统的信息

w
who
users
last
lastlog
  • 1
  • 2
  • 3
  • 4
  • 5

切换用户

su  [选项]  用户
  • 1
选项说明
-使切换后的用户登录自己对应的shell
-c以另外一个用户身份执行一个命令
-m切换用户时,不登录自己的shell
-s切换用户时,登录指定的shell

修改用户

usermod

选项注释说明
-u uid指定用户id
-g initial_group用户登录起始用户组(主要组)
-G group,[…]附加组(次要组)
-s shell指定用户登录系统后使用的shell
-d home_dir指定家目录
-m newhome_dir将家目录内容移至新位置 (仅于 -d 一起使用)
-L冻结用户的密码,使之无法登录,实际就是修改/etc/shadow 的密码栏,在前面加上 ! useradd -e chage -E 或 passwd -l 都有类似效果
-U取消冻结用户密码,使之恢复登录
-c comment注释说明信息
-e expire_date账号终止日期(账号过期时间) 日期 -e “+30 day” -e “2016/12/20”
-f账号过期几日后永久停权

删除用户

userdel  用户名
  • 1

选项

-r 删除用户家目录

密码管理

passwd

passwd [选项…] <用户名>

选项说明
-k保留即将过期的用户在期满后仍然能使用
-d删除用户密码,仅能以root权限操作
-l锁定用户,仅能通过root操作
-u解除锁定
-f强制操作,只有root才能操作
-x两次密码修改的最大天数,后面接数字,只有root才能操作
-n两次密码修改的最小天数,后面接数字,只有root才能操作
-w在距多少天提醒用户修改密码,只有root才能操作
-i在密码过期后多少天,用户被禁用,只有root才能操作
-S查询用户的密码状态,只有root才能操作
–stdin从stdin读入密码

组管理

gpasswd

gpasswd [-a user] [-d user] [-A user,…] [-M user,…] [-r] [-R] groupname

选项含义
-a添加用户到组
-d从组删除用户
-A指定管理员
-M指定组成员和-A的用途差不多
-r删除密码
-R限制用户登入组,只有组中的成员才可以用newgrp加入该组

sudo

作用

以其他用户身份执行一条命令

某个用户可以使用不同角色,执行不同的命令

sudo命令格式及选项

sudo [选项] [command]

选项含义
-l列出用户在主机上可以使用的命令
-u用户名 指定以某个用户身份执行特定的命令(默认是root)
-k删除时间戳(时间戳默认5分钟失效)
-v跟踪最新的时间戳

sudo配置文件

visudo <====> vim /etc/sudoers

sudo授权语法规则

用户或组主机可以切换的用户角色命令
rootALL=(ALL)ALL
User_Alias ADMINS = jsmith,mikem, %groupnameHost_Alias FILESERVERS = fs1,fs2Runas_Alias OP = rootCmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig

用户别名

User_Alias KAIFA_ADMINS = kaifa01, kaifa02
User_Alias OLD_ADMINS = oldboy, oldgirl, %sa
User_Alias OLD_NETADMINS = leo,maya
  • 1
  • 2
  • 3

主机别名

Host_Alias     FILESERVERS = fs1, fs2
  • 1

角色别名

Runas_Alias  OP1 = root, oldboy
Runas_Alias  OP2 = root, oldgirl
  • 1
  • 2

命令别名

Cmnd_Alias    USERCMD = /usr/bin/passwd [a-zA-Z0-9]*, /bin/chown, /bin/chmod, !/usr/bin/passwd root
Cmnd_Alias   DISKCMD = /sbin/fdisk, /sbin/parted
Cmnd_Alias   NETMAGCMD = /sbin/ifconfig, /etc/init.d/network
Cmnd_Alias   CTRLCMD = /usr/sbin/reboot, /usr/sbin/halt
Cmnd_Alias   KAFACMD = /bin/grep,/usr/bin/tail,/bin/cat
  • 1
  • 2
  • 3
  • 4
  • 5

sudo日志审计

visudo 最后添加

Defaults        logfile=/var/log/sudo.log
  • 1

各种开源跳板机或堡垒机

  • jumpserver
  • gateone
  • teleport

文件权限

[root@localhost ~]# ll /etc/passwd
-rw-r--r-- 1 root root 1514 1018 21:28 /etc/passwd
  • 1
  • 2

linux系统的三种权限

  • 所有者(属主):当用户创建文件时,创建者就是这个文件的属主
  • 用户的属组: 同组人
  • 其他人

三种基本权限

权限含义八进制数字表示
r4
w2
x执行1
-没有任何权限0
属主属组其他用户
rw-r–r–
644

三种基本权限对文件目录含义

权限文件目录
r:读查看阅读列出目录中文件列表
w:写对文件内容增 删 改操作在目录中创建文件 删除文件 修改文件名
x:执行运行可以使用cd命令进入目录

访问文件时,linux权限的执行顺序

  • 访问者是属主吗?如果是,启用用户权限,不是,执行下一步
  • 是属组成员吗? 如果是, 启用组权限
  • 以上都不是,启用其他人权限
  • 以上都没通过,被拒绝访问

权限设置

chmod命令格式

chmod [选项]… 模式[,模式]… 文件…
chmod [选项]… 八进制模式 文件…

模式

用户类型操作字符权限字符
ugoa±=rwx-

八进制模式

三个八进制数: 属主 属组 其他人

chown 修改文件属主和属组

chown  [选项]...  [所有者][:[]] 文件
  • 1

常用选线 -R

chown  用户   文件或目录
chown  :组    文件或目录
chown  用户:组  文件或目录
chown  用户.组  文件或目录
  • 1
  • 2
  • 3
  • 4

各种权限组合对文件目录的作用

权限针对文件针对目录
什么都做不了什么都做不了
r–可以查看文件内容只能看到文件名
-w-对文件写操作会覆盖文件内容什么都做不了
–x什么都做不了可以cd
rw-正常读写只能查看文件名
r-x可读可执行可以cd 可以查看
-wx对文件写操作会覆盖文件内容可以cd 可以写 不能查看
rwx什么都可以做什么都可以做

umask

  • 控制默认权限
  • 系统内核文件默认权限是666
  • 系统内核目录默认权限是777

umask默认值

  • root用户:umask(022)
  • 其它用户:umask(002)

修改umask值

umask 数字
  • 1

文件默认权限控制

  • 文件默认权限=系统内核文件默认权限-umask
  • 目录默认权限=系统内核目录默认权限-umask

对于文件 umask值任意一位是奇数时, 减umask值 后, 对应位为奇数的 加1

默认权限与权限安全临界点

  • inux的默认权限就是安全的临界点,也是最佳的权限
  • 目录 755 文件 644 是相对安全的临界点

特殊权限位

  • suid
  • sgid
  • sticky(粘滞位)

suid

4(SUID) 设置SUID的文件,无论谁执行此文件,他都有文件所有者的权限

  • SUID 权限仅对二进制程序(binary program)有效
  • 执行者对于该程序需要具有x的可执行权限;
  • 本权限仅在执行该程序的过程中有效 (run-time);
  • 执行者将具有该程序拥有者 (owner) 的权限。

sgid

2(SGID) 设置SGID的目录,无论谁来此目录,他都有目录所属组的权限

  • SGID 可以针对目录来设置,目录设置sgid后,普通用户放到这个目录下的文件的用户组跟这个目录走
  • SGID 对二进制程序的作用跟suid类似
  • 程序执行者对于该程序来说,需具备 x的权限
  • 执行者在执行的过程中将会获得该程序群组的支持

sticky(粘滞位)

1(sticky) 存放在该目录的文件只允许属主操作

特殊权限位设置

chmod  4755  filename  
chmod  u+s filename
chmod  g+s filename
chmod  +t  /tmp
  • 1
  • 2
  • 3
  • 4
suidsgidsticky
421

chmod没有执行权限修复

install

install [选项]… 源文件 目标文件

install -m 755 chmod /bin/chmod
  • 1

隐藏权限

设置隐藏权限

chattr

chattr [选项] 参数(文件)

 +  -  =
  • 1

i 不可改变

a 只能添加数据,不能删除 一般用于日志文件

A atime不可修改 S 磁盘I/O同步

c 数据存取时经过压缩
d 不备份

j 日志功能 从ext3开始有此功能
s 保密性的删除文件,硬盘空间全部回收
u 最大限度保存数据

查看隐藏权限

lsattr  文件名
  • 1

进程管理

程序

静态的指令集合

不占用系统的运行资源

不能申请系统资源、不能被系统调度、也不能作为独立运行的单位

进程概念

进程(Process)是一个程序在其自身的虚拟地址空间中的一次执行活动。
一个程序的动态执行过程,它具有生命期,是动态的产生和消亡的

资源申请、调度和独立运行的单位,因此,它使用系统中的运行资源

进程的类型

  • 交互进程
  • 批处理进程
  • 守护进程

进程的属性

  • 每个进程都存在于机器的物理内存中
  • 每个进程都有一个PID作为进程识别号
  • 每个进程除了PID之外还有另外4个识别号
    • 实际用户识别号
    • 实际组识别号
    • 有效用户识别号
    • 有效组识别号

进程的输入输出环境

打开文件的描述符

  • 几乎每个进程都从外部源读取信息或将信息写入外部源,通常是两者兼有
  • 在Linux系统中,打开文件的描述符充当信息源或接收器
  • 进程从文件描述符中读取信息或者将信息写入文件描(数字)述符中
  • 文件描述符可以与常规文件、设备节点、网络套接字连接,甚至和其他描述符连接,构成管道(允许进程间通信)

内存映射文件

最常被用来存放进程的可执行代码,也用于其他类型的非串行数据访问

文件系统环境

和进程相关的文件系统概念,例如进程的当前工作目录、和进程的umask(用来为新生成文件设置权限)

环境变量

所有环境变量的集合,称为进程的环境

遗留信息

  • 每个进程都以PID或进程id来识别,PID在进程创建时指定
  • 每个进程都有一个明确定义的父进程和可能被充分定义的子进程
  • 一个进程本身的身份、其子进程的身份,以及在某种程度上其同胞进程的身份都是由该进程来维护的

凭证

  • 每个进程在一个一个给定用户id和组id集合环境下运行。这些凭证限制进程所能访问的资源
    • 文件操作
    • 和其他哪些进程通信

资源统计和限制

  • 内存大小
  • 打开的文件数目
  • CPU时间总量及其他

进程的启动方式

  • 前台启动
  • 后台启动
  • 调度启动

进程管理工具

ps

进程选择
-A,-e,ax   所有进程
-C,commmand    所有command的实例
-U,--user    username     属于user的所有进程
-t,--tty  terminal    从terminal启动的所有进程
-p,p,--pid  N     Pid为N的进程
  • 1
  • 2
  • 3
  • 4
  • 5

-eo

选项含义
user用户名
uidUID
pid进程号
ppid父进程号
size内存大小
vsize总虚拟内存大小
share共享页面文件数量
nice进程优先级
pmem物理内存占用率
trs程序执行代码驻留大小
rss进程使用的总物理内存数 kbytes
timecpu使用时间
stat进程状态
cmd(args)命令内容
输出选择
选项含义
-f详尽列表
-l,l长格式
-j,j作业格式

top

按键
按键含义
q退出
h或?帮助
S设置两次更新之间的时间(以秒为单位)
Space更新显示
M根据内存大小对进程排序
P根据CPU(处理器)占用对进程排序
U显示特定用户的进程
K杀死进程(给进程发送信号)
R更改进程优先级
z高亮显示
x选中列
shift + < 或 >移动选中列
c命令详细
选项
选项含义
-d secs在两次刷新之间延迟secs秒(默认为5秒)
-n N刷新N次后退出
-p只监控指定的进程PID
-i只显示正在使用CPU的进程
-H显示线程
-u只查看指定用户名的进程
-b将输出编排成易处理格式,适合输出到文件处理
显示结果说明
列名含义
PID进程ID
USER进程所有者
PR进程优先级
NI负值表示高优先级,正值表示低优先级
VIRT进程启动后使用虚拟内存总量(KB), VIRT=SWAP+RES
RES实际物理内存使用大小(KB),RES=CODE+DATA
SHR共享内存大小(KB),可能与其它进程共享的内存;计算进程使用物理内存大小: RES-SHR
S进程状态; R 运行, S 休眠, D 不可中断, T 停止, Z 僵尸
%CPU上次更新到现在的CPU时间占用百分比
%MEM使用物理内存百分比
TIME+使用CPU总时间
COMMAND命令名称和参数

进程的状态

  • 在Linux系统中,第一个进程由内核在启动时运行
  • 其他所有进程都是父进程自我复制或派生(forking)的结果
  • 一个进程由另一个进程执行的过程叫做exec
  • 新命令由进程(通常是Shell)运行,首先派生(fork),继而执行(exec)。这种机制被称为派生和执行(forkandexec)机制
  • 进程总是处于五种状态之一
  • 当进程终止时,父进程负责收集进程的返回值和资源使用信息
  • 如果父进程在子进程之前终止,失去父进程的子进程托孤给第一个进程

五种状态

  • 可运行(R)
    • 处于可运行状态的进程,一旦有机会,就会访问CPU
    • 在任何给定时间内只有一个进程可以在CPU上运行
  • 自愿(可中断的)睡眠(S)(可中断睡眠(等待事件完成))
  • 非自愿(不可中断或强制)睡眠(D)
    • 内核迫使进程进入非自愿睡眠状态
    • 当资源被释放时,内核会唤醒进程并将设置为可运行状态
  • 停止的(挂起的)进程(T)( 被挂起的进程在被用户重新启动前不会执行任何操作 )
  • 僵尸进程(Z)
    • 每个快要终止的进程会经历一个短暂的僵尸状态
    • 有时有些进程会一直停留在僵尸状态

状态其它说明

符号含义
<高优先级
N低优先级
L将页面锁定到内存中
s是session领导者
l是多线程的
+位于前台进程组中

进程如何启动

  • 引导系统时,Linux内核启动第一个进程。一个已存在的进程继续派生,所有其他进程得以启动
  • 在通常情况下,创建一个新进程是为了运行一个指定的命令(例如,bash Shell创建运行chmod命令的进程)
  • Linux(和UNIX)系统不同于其他操作系统,进程创建和命令执行是两个不同的概念
    • 不运行新命令也可以创建新进程
    • 不创建新进程也可以运行新命令

创建新进程

  • 新进程通过一种名叫派生的方式创建
  • 当进程派生时,它创建自己的一个副本
  • 新派生的进程(子进程)几乎精确复制了原进程(父进程)
  • 子进程继承了与父进程内存完全一样的副本,继承了父进程任何打开的文件,并且继承完全一样的父进程拥有的任何参数。例如当前工作目录或umask
  • 执行新命令(exec)
    • 执行新命令时,当前进程清除并释放出它的大多数资源,从文件系统中指定的命令那里装入一套新指令。新程序从程序的入口点开始执行

父进程与子进程直接的区别

  • 子进程的遗留信息(子进程有不同的进程ID和父进程ID)
  • fork()系统调用的返回值

进程如何终止

  • 通过选择退出(exit)正常终止
  • 接收到信号而非正常终止

孤儿进程

如果父进程在子进程之前终止,这个子进程就变成了孤儿进程

僵尸进程

  • 当进程退出,释放大多数资源和它的父进程收集它的返回值、释放剩余资源这两段时间之间,子进程处于一个特殊状态,被称为僵尸进程(zombie)
  • 每个进程都会经过一个短暂的僵尸状态

进程优先级

数字越小,优先级越高

范围

-20(最大优先级)~19(最小优先级)

进程优先级修改

renice -15 -p 3371    #进程号为3371的进程优先级设置为-15
  • 1

进程间通信(IPC)方式

  • 管道
  • 信号
  • 消息队列
  • 共享内存
  • 套接字(socket)
    • 本地(unix /tmp/mysql.sock )
    • 网络 ( tcp 10.0.0.51:3306 10.0.0.51:36572 1224/mysqld )

信号

为什么要发送信号

  • 硬件异常
  • 软件状态
  • 终端中断
  • 其他进程

kill发送信号

信号名信号数字含义
HUP1终端断线
INT2中断(同 Ctrl + C)
QUIT3退出(同 Ctrl + \)
KILL9强制终止
TERM15终止
CONT18继续(与STOP相反, fg/bg命令)
STOP19暂停(同 Ctrl + Z)

trap

trap "reboot" 2   #获取2信号,执行reboot命令
trap ""  2   #屏蔽一个信号
trap 2    #恢复信号
  • 1
  • 2
  • 3

作业

Bash允许前台运行一个作业,后台运行多个作业

从shell提示符运行命令时,除非特别指定,命令会在前台运行

通过给命令行附加一个“&”字符,任何指定的命令也可以在后台运行

作业管理

jobs    #查看后台作业
ctrl+z  #挂起当前的前台作业,并将其置于后台
bg  %num    # 将后台作业由stoped变成running
fg  %num    #把后台的作业搬到前台
kill  %N    #终止后台作业N
&    #后台运行程序
nohup   #将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

screen

screen -S test    #创建一个名称为test会话,并进入此会话
Ctrl+a+d     #按Ctrl+a,然后再按d  暂时离开当前会话
screen -ls   #查看所有screen会话
screen -r test   #进入test会话
  • 1
  • 2
  • 3
  • 4

进程相关内存文件

  • /proc

    • 进程号目录

      • cmdline
      • comm
      • exe -> /usr/sbin/sshd
      • fd
      • smaps
      • status
    • cpuinfo

    • diskstats

    • filesystems

    • fs

    • loadavg

    • meminfo

    • swaps

    • uptime

    • vmstat

  • /sys

    • dev
    • devices
    • fs
    • kernel
    • module

服务管理

服务:启动后在后台执行,等待用户或其他软件调用

分类

  • 系统服务–服务对象是linux系统本身
  • 网络服务–服务对象是网络中的其他客户端

启动方法

  • 独立系统服务
    • 一经启动,后台驻留,不管是否被用到
    • 响应速度快
    • 占用资源
  • 临时服务
    • 用时启动,使用完毕结束
    • 节省资源
    • 响应慢

独立系统服务管理

C6

/etc/init.d/* ----> /etc/rc.d/init.d/*

service   servername  start/stop/restart/reload/status 
  • 1

C7

/usr/lib/systemd/system/*.service

systemctl  start/status/stop/restart/reload  servername
  • 1

开机启动设置

C6

chkconfig   servername   on/off
  • 1

开机启动的本质

ln -s /etc/rc.d/init.d/oracle /etc/rc.d/rc3.d/S99oracle
  • 1

备注

S表示服务开启
K表示服务关闭

C7

systemctl   enable/disable  servername
  • 1

开机启动本质

Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.

设置开机启动项目

/etc/rc.local -----> /etc/rc.d/rc.local

临时服务管理

xinetd

计划任务

计划任务种类

  • 突发性(只执行一次) – at batch
  • 周期性 – cron

at

只执行一次的任务

服务

atd

相关文件

/etc/at.allow   #允许使用at的用户
/etc/at.deny    #禁止使用at的用户
/var/spool/at/   #计划任务存放位置
  • 1
  • 2
  • 3

at命令选项

选项含义
-m完成工作后,使用邮件通知用户
-l查看计划任务
-d删除
-v详细信息
-c查看工作的详细内容

时间格式

HH:MM [YY-MM-DD]

操作步骤

at 04:00
at> command
ctrl+d 退出
  • 1
  • 2
  • 3

cron

周期性执行任务

服务

crond

相关文件

/etc/cron.allow
/etc/cron.deny
/etc/cron.d
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/var/spool/cron/
/etc/crontab 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

crontab命令选项

-u 用户名   指定用户名称
-e 定制计划任务
-l 查看计划任务
  • 1
  • 2
  • 3

计划任务中的内容

任务
0-590-231-311-120-7命令或脚本

计划任务中的特殊符号

符号含义
*任何时间
,分隔时间
-时间范围
/n每隔n个单位

计划任务需要注意的问题

执行的任务的输出一定要重定向

vi编辑器

linux下的文本编辑器

插入(编辑)模式

命令含义
i在当前光标插入
a在当前光标后面插入
o在当前行下一行插入一个新的空行并进入编辑模式
O在当前行上一行插入一个新的空行并进入编辑模式
C把光标所在位置到行尾的内容删除并进入编辑模式

命令模式

  • 移动光标
含义命令
移动到文件的最后一行G
移动到文件的第一行gg
把光标移动到行尾$
把光标移动到行首^
移动到第100行100gg 100G
移动光标到括号的另一半%
  • 复制剪切粘贴删除等操作
含义命令
复制当前行yy
粘贴p
剪切当前的内容dd
剪切光标到行首内容d^
剪切光标到行尾内容d$
剪切一个单词dw
剪切当前行到最后一行内容dG
剪切当前行到第一行内容dgg
撤销u
恢复ctrl + r
剪切光标位置一个字符x
替换光标位置一个字符r

末行模式(
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/196537

推荐阅读
相关标签