linux笔记

备份与恢复

  • 备份策略

完全备份:完全备份就是指把所有需要备份的数据全部备份,当然完全备份可以备整块 硬盘,整个分区或某个具体的目录。

优点是恢复最快;缺点是需要更大的硬盘空间。

增量备份: 第一次完全备份,往后仅仅只备份新增的数据。优点是备份数据量最少,占 用存储空间最少;

缺点是恢复麻烦,先恢复第一次完全备份,再恢复第一次增量备份,再恢复第二次增量备份……。

差异备份:折中备份,一般不考虑。

  • 备份命令(dump和restore)

dump命令【需要安装:yum -y install dump】

[root@localhost ~]# dump [选项] 备份之后的文件名 原文件或目录

选项:

level:就是我们说的0-9个备份级别【0:完全备份;1:第一次增量备份;……】
eg:dump -0 备份之后的文件名 原文件后目录

-f :文件名:指定备份之后的文件名

-u:备份成功之后,把备份时间记录在/etc/dumpdates文件【一般都要调用】

-v: 显示备份过程中更多的输出信息

-j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式

-W:显示允许被dump的分区的备份等级及备份时间

  • 备份分区
dump -0uj -f /root/boot.bak.bz2 /boot:完全备份
dump -1uj -f /root/boot.bak1.bz2 /boot:增量备份
  • 备份文件或目录
dump -0j -f /root/etc.dump.bz2 /etc
#完全备份/etc/目录,只能使用0级别进行完全备份,而不再支持增量备份。
  • restore命令
[root@localhost ~]# restore [模式选项] [选项]

模式选项:restore命令常用的模式有以下四种,这四个模式不能混用

-C:比较备份数据和实际数据的变化

-i:进入交互模式,手工选择需要恢复的文件

-t:查看模式,用于查看备份文件中拥有那些数据

-r:还原模式,用于数据还原

选项:

-f:指定备份文件的文件名

eg:restor rf /root/etc.dump.bz2 /etc

Linux命令集

ls

命令格式:命令 [选项] [参数]

说明:1)个别命令使用不遵循此格式

​ 2)当有多个选项时,可以写在一起

​ 3)简化选项与完整选项

​ -a等于-all

ls -l【l:long】 ls -a【a:all】 ls -lh【统计目录下所有的子文件夹占多大空间】 ls -ld:显示目录信息

ls -i:i节点(唯一)【一个文件对应一个i节点,一个i节点不一定对应一个文件】

-rw-. 1rootroot16307月4 10:28 a.txt
文件类型所有者所属组其他人引用计数所有者所属组文件大小最后一次修改文件的时间和文件名

​ u所有者 g所属组 o其他人

​ r读 w写 x执行

​ 4 2 1

目录及文件处理命令

mkdir:创建目录
mkdir -p:递归创建

pwd:显示当前目录所在路径
cd.. 	cd ../..

cp(copy):-r【复制目录】  -p【保留文件属性】
touch:创建文件

查看文件:
cat:-n【显示行号(number)】

tac:反向列示

more:分页显示文件内容  q:退出  [空格或者f]:向后翻  回车:按行翻

less:分页显示文件内容  
	q:退出  空格或者
	f:向后翻   
	回车:按行翻 
	上键:向上翻一行  
	PgDn:向上翻一页	 	 		
	搜索:/关键词>回车 按n向下查看

head:显示前面几行   -n【head -n 2 /etc/services】

tail:显示末尾的几行  
	-n:指定行数【tail -2 /etc/services】
	-f:动态显示文件末尾内容【tail -f /var/log/messages】

链接命令:

ln:软链接、硬链接(link)

ln -s [原文件] [目标文件]

-s:生成软链接【.soft:表示软链接】,跟windows快捷方式差不多

查看是否是硬链接:ls -i【查看i节点,一致的为软链接】

​ 【一个文件对应一个i节点,一个i节点不一定对应一个文件】

硬链接:可以是一个实时备份,不能跨分区存储,不能对目录使用

权限管理命令:

chomd:修改文件或目录权限

chown:修改所有者【chown root:tgroup project (将project目录的所属组改为tgroup)】

chgrp:修改所属组

文件目录
r(4)读权限可以查看文件内容可以列出目录中的内容
w(2)写权限可以修改文件内容可以在目录中创建、删除文件
x(1)执行权限可以执行文件可以进入目录

备注:目录有r权限必有x权限,否则目录就没有存在的意义

umask [-S]:显示、设置文件的省缺权限:不建议使用

文件搜索命令:

应该减少此命令的使用,会占用大量的资源,文件或者目录应该按照规定创建与使用。搜索范围越小越好,搜索条件越精准越好。找到速度越快,消耗资源越少。

find:

语法:find [搜索范围] [匹配条件]

-name:按文件名查找
find /etc -name init:在/etc目录中查找文件init
find /etc -name init:在/etc目录中查找所有包含init的文件
find /etc -name init???:在/etc目录下查找以init开头后面有三个字母的文件(?代表匹配单个字符)

-iname:不区分大小写
-size:按文件大小来查找
+n:大于	-n:小于		n:等于
find / -size +24800:【204800表示数据块】(1数据块=512字节=0.5k)

-user:根据所有者来查找
find /home -user root:在根目录下查找所有者为root的文件
-group:根据所属组查找


find /etc -cmin [+-]5:在/etc目录下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 access
-cmin 文件属性 change
-mmin 文件内容 modify

-type:根据文件类型查找(f文件  d目录  l软链接文件)
find /home -user stu20 -type f

-inum:根据i节点查找
-exec/ok 命令 {} .:对搜索结果进行操作
find /etc/ -name inittab -exec ls -l {} . :查找/etc目录下inittab的文件并显示文件属性 

locate :

locate 文件名:在文件资料库中查找文件
locate -i 文件名:不区分大小写查找文件
注:临时目录/tmp不能搜索
eg:locate inittab

问题一:centos系统找不到locate命令(locate: command not found)
解决方法:
安装mlocate包
yum -y install mlocate
更新数据库
updatedb 

问题二:仍然有一些文件无法通过locate命令找到
原因:
查看配置文件
cat /etc/updatedb.conf
输入命令后可看到:

PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp"

PRUNE_BIND_MOUNTS = “yes” 开启搜索限制,如果为’no’则表示不开启搜索限制;
PRUNEFS = 搜索时,不搜索的文件系统;
PRUNENAMES = 搜索时,不搜索的文件类型;
PRUNEPATHS = 搜索时,不搜索的路径; 
不只locate命令遵循搜索限制,whereis与which也遵循

which:

搜索命令所在的目录及别名信息
eg:which is

whereis:

搜索命令所在目录及帮助文档路径
eg:whereis nginx

grep:

grep -iv [指定字符串] [文件]
在文件中搜寻字符串匹配的行并输出
-i:不区分大小写
-v:排除指定字符串
eg: grep matahari /etc/services

帮助命令

man:

man 命令或配置文件:获得帮助信息
eg:man /etc/services【这是个错误的用法,显示的是文件内容而不是帮助信息】
man services【这才是正确的用法】
eg:man ls  
   man mkdir

eg:man 5 passwd 【查看配置文件的帮助信息】
    man 1 passwd 【查看命令的帮助信息】

whatis:

whatis 命令:查看命令的简短信息
apropos 配置文件(不要加路径):查看配置文件的简短信息

查看命令的选项:

命令 –help:显示命令的选项

help:

help 命令:寻找shell内置命令【找不到命令所在位置的命令都是shell内置命令】

用户管理命令:

useradd:添加用户

passwd:【passwd 用户】更改用户密码

who:

查看用户登录信息

[root@localhost ~]# who
rootpts/02019-07-08 10:28(192.168.100.1)
登录用户名登录终端登录时间登录主机的ip地址

tty:本地终端

pts:远程终端

w:

查看用户详细登录信息

uptime:

查看服务器连续登录的时间,可以用来衡量服务器的稳定性。

文件压缩命令:

Linux上的压缩文件windows都可以使用,但是windows上的压缩文件Linux不一定能使用。

gzip:

语法:gzip 文件 【只能压缩文件,压缩后不保留原文件】

压缩后文件格式:.gz

gunzip:/gzip -d

语法:gunzip 压缩后的文件 (或) gzip -d 压缩后的文件

解压.gz的压缩文件

tar:

打包压缩:

语法:tar 选项[-zcf] [压缩后文件名] [目录]

​ -c 打包

​ -v 显示详细信息

​ -f 指定文件名

​ -z 打包同时压缩

功能:打包目录

压缩后的文件格式:.tar.gz

解压:

语法:tar -选项 包名

​ -x 解包

​ -v 显示详细信息

​ -f 指定解压文件

​ -z 解压缩

eg: [root@localhost]# tar -xzvf yasuod.tar.gz

zip:

yum install -y upzip zip:安装zip

yum -y install unizp:安装unzip

语法:zip 选项[-r:压缩目录] [压缩后的文件名] [文件或目录]

功能:压缩文件或目录

压缩后的格式:.zip

解压:unzip 压缩文件名

bzip2:

语法:bzip2 选项[-k:产生压缩文件后保留原文件] [文件]

功能:压缩文件

压缩后文件格式:.bz2

eg: bzip2 -k yasuo

​ tar -cjf yasuo.tar.bz2 yasuo

网络命令:

write:

语法:write 用户名 【给用户发信息,以Ctrl+D保存结束】

wall:

语法:wall [message] 【wall:write all】

功能:发广播信息,给当前在线的所有用户发信息

mail:

yum -y install sendmail

yum -y install mailx :安装mail服务

mail 用户名 【查看发送电子邮件】

eg:mail root【Ctrl+D,保存并发送;使用mail命令查看邮件】

1:查看 h:再次查看 d:删除 q:退出

last:

列出目前与过去登入系统的用户信息

判断系统是否重启

lastlog:最后一次登录时间

lastlog -u 用户的UID :使用UID查看用户最后一次登录时间

traceroute:

yum provides /netstat

yum -y install net-tools :安装netstat服务

显示数据包到主机的路径

eg:traceroute www.baidu.com

netstat:

netstat [选项] 【显示网络相关信息】

​ -t TCP传输控制协议【三次握手,更加安全】eg:打电话

​ -u UDP用户数据报协议【快速】eg:发短信

​ -l 监听

​ -r 路由

​ -n 显示IP地址和端口号

mount:

mount [-t 文件系统] 设备文件名 挂载点

eg:mount -t iso9660 /dev/sr0 /mnt/cdrom

关机重启命令:

shutdown –h now

halt

poweroff(相当于直接断电)

init 0

shutdown -r now:服务器不允许关机,只能重启

reboot init 6

修改系统默认运行级别:

vim /etc/inittab

id:3:initdefault:

查询系统运行级别

runlevel

vim

【命令模式、编辑模式(ESC>>:>>命令)、插入模式(i,a,o)】

输入 rpm -qa|grep vim 命令, 如果 vim 已经正确安装,会返回下面的三行代码:

[root@centos]# rpm -qa |grep vim      
vim-minimal-7.0.109-6.el5
vim-common-7.0.109-7.2.el5
vim-enhanced-7.0.109-7.2.el5

如果少了其中的某一条,比如 vim-enhanced 的,就用命令 yum -y install vim-enhanced

如果上面的三条都沒有返回, 可以直接用 yum -y install vim 命令

yum -y install vim

命令作用
a在光标所在字符后插入
A在光标所在行尾插入
i在光标所在字符前插入
I在光标所在行行首插入
o在光标下插入新行
O在光标上插入新行

定位命令

命令作用
:set nu设置行号
:set nonu取消行号
ggG第一行到最后一行
nG到第n行
:n到第n行
$移至行尾
0移至行首

删除命令

命令作用
x删除光标所在处字符
nx删除光标所在处后n个字符
dd删除光标所在行,ndd删除n行
dG删除光标所在行到文件末尾内容
D删除光标所在处到行尾的内容
:n1,n2d删除指定范围的行

复制和剪切

命令作用
yy复制当前行
nyy复制当前行以下n行
dd剪切当前行
ndd剪切当前以下n行
p粘贴在当前光标所在行下
P粘贴在当前光标所在行上

替换和取消

命令作用
u取消操作
/string搜索指定字符串搜索是忽略大小写:set ic
n搜索指定字符串的下一个出现位置
:%s/old/new/g全文替换指定字符串
:n1,n2s/old/new/g在一定范围内替换指定字符串

快捷键

:r !命令 【导入命令执行结果】

eg: :r !date【将当前时间导入文件中,便于记忆文件修改时间】

:map 快捷键 触发命令

​ eg: :map ^P I#【跳到行首,在光标所在行行首插入#,再按esc】

注释:^p=ctrl+v+p

:map ^B 0x【跳到行首,把行首光标所在位置第一个字符删除】

:n1,n2s/^/#/g 【连续注释,g:不需要确认】

:n1,n2s/^#//g 【取消连续】

:ab mymail 15120275526@163.com 【替换:输入mymail会替换为邮箱】

/root/.vimrc :使快捷键永久生效 【原理:映射到“~/.bash_profile”中】

普通用户:/home/.vimrc

软件包管理

软件包分类

源码包

  • 脚本安装包

源码包的优点:

A. 开源,开源修改源代码

B. 开源自由选择所需的功能

C. 软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高

D. 卸载方便【直接删除安装目录】

源码包的缺点:

A. 安装过程步骤较多

B. 编译时间较长,比二进制安装时间长

C. 因为是编译安装,安装过程中一旦报错新手很难解决

二进制包(RPM包、系统默认包)

二进制包的优点:

A. 包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载

B. 安装速度比源码包快得多

二进制包的缺点:

A. 经过编译,不再可以看到源代码

B. 功能选择不如源代码包灵活

C. 依赖性强

RPM包管理-rpm命令管理

RPM包命名规则

httpd-2.2.15-15-15.el6.centos1.i686.rpm
软件包名字软件版本软件发布的次数适合Linux的平台适合的硬件平台rpm扩展名

RPM包依赖性

s 树形依赖 a>b>c

s 环形依赖 a>b>c>a

s 模块依赖 模块依赖查询网站:www.rpmfind.net

  1. 查询是否安装

rpm -q 包名 【q:query 查询】

rpm -qa 包名 【查询所有已安装的RPM包】

​ rpm -qi 包名 【查询软件信息】

​ 【i:information】

​ rpm -ql 包名 【l:list】

​ rpm -qp 包名【查询未安装包信息】

​ 【p:package】

​ rpm -qf 系统文件名 【查询系统文件属于哪个软件包】

​ 【f:file】

​ rpm -qR 【查询软件包的依赖性】

  1. RPM包校验

rpm -V 已安装的包名 【-V:校验指定RPM包中的文件】

作用:查看文件是否被修改

  1. RPM包中文件的提取

作用:主要用于修复缺失或损坏的文件

rpm2cpio 包全名 | cpio -idv .文件绝对路径 【2:to 从…到…】

rpm2cpio

#将rpm包转换为cpio格式的命令

cpio:是一个标准工具,它用于创建软件档案文件和档案文件中提取文件

[root@localhost ~]#cpio 选项 <[文件|设备]

​ 选项:-i :copy-in模式,还原

​ -d :还原时自动新建目录

​ -v :显示还原过程

RPM包管理-yum在线管理

IP地址配置和网络yum源

setup

vi /etc/sysconfig/network-scripts/ifcfg-ens33

网络yum源:

vi /etc/yum.repos.d/CentOS-Base.repo

yum命令

[root@localhost ~]#yum list 【查询所有可用的软件包列表】

[root@localhost ~]#yum search 关键字(包名) 【搜索服务器上所有和关键字相关的包】

[root@localhost ~]#yum -y install 包名 【-y:自动回答yes】

[root@localhost ~]#yum -y install gcc 【没有gcc,所有的源码包都不能安装】

​								 gcc:C语言编译器

[root@localhost ~]#yum -y update 包名 【升级软件包】

注:如果不跟包名,服务器会全部更新,包括Linux内核。会造成服务器宕机。

[root@localhost ~]#yum -y remove 包名 【尽量不要使用卸载命令】

[root@localhost ~]#yum grouplist 【列出所有可用的软件组列表】

[root@localhost ~]#yum groupinstall “软件组名” 【安装指定软件组】

[root@localhost ~]#yum groupremove “软件组名” 【卸载软件组】

光盘yum源搭建

  1. 挂载光盘

mount /dev/cdrom /mnt/cdrom

  1. 让网络yum源文件失效【改名:使原文件失效,便于后期查找】

[root@localhost ~]#cd /etc/yum.repos.d/

[root@localhost yum.repos.d]#mv CentOS-Base.repo CentOS-Base.repo.bak

[root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo CentOS-

Debuginfo.repo.bak

[root@localhost yum.repos.d]#mv CentOS-Vault.repo CentOS-Vault.repo.bak

  1. 修改光盘yum源文件

[root@localhost yum.repos.d]#vim CentOS-Media.repo
#CentOS-Media.repo
#This repo can be used with mounted DVD media, verify the mount point for
#CentOS-7. You can use this repo and yum to install items directly off the
#DVD ISO that we release.
#To use this repo, put in your DVD and use it with the other repos too:
#yum --enablerepo=c7-media [command]
#or for ONLY the media repo, do this:
#yum --disablerepo= --enablerepo=c7-media [command]

[c7-media]#容器的名称

name=CentOS-$releasever - Media

#baseurl=file:///media/CentOS/

#地址为光盘挂载的地址

baseurl=file:///mnt/cdrom/

#file:///media/cdrom/
#[file:///media/cdrecorder/](file:///media/cdrecorder/)

#注释这两个不存在的地址

gpgcheck=1

enabled=1

#把enabled=0该为enabled=1,让这个yum原配置文件生效

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

源码包管理

源码包和RPM包的区别

u 区别

s 安装之前的区别:概念上的区别

s 安装之后的区别:安装位置不同

RPM包安装位置

  1. 是安装在默认位置中
RPM包默认安装路径
/etc配置文件安装目录
/usr/bin/可执行的命令安装目录
/usr/lib/程序所使用的函数库保存位置
/usr/share/doc基本的软件使用手册保存位置
/usr/share/man帮助文件保存位置

​ 源码包安装位置

  1. 安装在指定位置中,一般是/usr/local/软件名/

源码包安装过程

A. 安装准备

安装C语言编译器:yum -y gcc

下载源码包:http://mirror.bit.edu.cn/apache/httpd

B. 安装注意事项

源代码保存位置:/usr/local/src/

软件安装位置:/usr/local/

如何确定安装过程报错

s 安装过程停止

s 并出现error、warning或no的提示

C. 源码包安装过程

a) 下载源码包

b) 上传到Linux

c) 解压下载的源码包

d) 进入解压目录

D. vi INSTALL:查看安装说明

./configure 软件配置与检查

​ 定义需要的功能选项

​ 检测系统环境是否符合安装需求

​ 把定义好的功能选项和检测系统环境的信息都写入Maskefile文件,用于后续的编辑

E. [root@localhost local]make 【编译】

make install 【编译安装】

脚本安装方法

  1. 脚本安装包并不是独立的软件包类型,常见安装的是源码包。

  2. 是人为把安装过程写成了自动安装的脚本,只要执行脚本,定义简单的参数,就可以完成安装。

  3. 非常类似于windows下的软件的安装方式

l Webmin的作用

Webmin是一个基于Web的Linux系统管理界面。您就可以通过图形化的方式设置用户账号、Apache、DNS、文件共享等服务。

l Webmin安装过程

下载软件:http://sourceforge.net/projects/webadmin/files/webmin/

解压

执行安装脚本:./setup.sh

用户和用户组管理

用户配置文件

用户信息文件/etc/passwd

每一行代表一个用户,有多少行就有多少个用户。

root: x: 0: 0: root: /root: /bin/bash用户名:密码标致:UID(用户ID):GID(初始组):用户说明:宿主目录:登录之后的shell

Ø 0: 超级用户

Ø 1-499: 系统用户(伪用户)

Ø 500-65535: 普通用户(CentOS7之后从1000开始)

初始组和附加组:

初始组:用户一登录就立刻拥有这个用户组的相关权限,每个用户组的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。不建议修改初始组。

附加组:

用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

宿主目录:

普通用户:/home/用户名/

超级用户:/root/

用户管理简介

u 越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。

u 在Linux中主要是通过用户配置文件来查看和修改用户信息

影子文件/etc/shadow(文件权限为000)

-rw-r–r–. 1 root root 1804 7月 8 14:27 /etc/passwd

----------. 1 root root 3229 7月 9 11:25 /etc/shadow

root: 6 6 6wn/gU4jDziyJIPN.: : 0: 99999: 7: : :用户名:经过加密的密码:密码最后一次修改日期:两次修改密码的时间间隔:密码有效期:密码到期警告时间:密码到期之后的宽限时间:账号失效时间:保留

经过加密的密码是“!!或” 代表没有密码,不能登录

v 密码最后一次修改日期:使用1970年1月1日作为标准时间,每过去一天时间戳加1

时间戳换算:

u 把时间戳换算为日期

date -d “2019.07.13 16066 days”

u 把日期换算为时间戳

echo ( ( (( (((date --date=“2019/07/13” +%s)/86400+1))

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

/etc/group

root: x: 0:

组名:组密码标致:GID:组中附加用户

/etc/gshadow

root: : :

组名:组密码:组管理员用户名:组中附加用户

用户管理相关文件

  1. 用户的家目录

v 普通用户:/home/用户名/,所有者和所属组都是此用户,权限都是700

v 超级用户:/root/,所有者和所属组都是root用户,权限是550

  1. 用户的邮箱

/var/sqool/mail/用户名/ 【CentOS6.X】

/var/mail/用户名 【CentOS7.X】

  1. 用户模板目录

/etc/skel/

【root用户创建的普通用户会复制/etc/skel/目录下的文件到/etc/home/用户,中】

用户管理命令

useradd [选项] 用户名 【创建用户】

选项:

​ -u UID:手工指定用户的UID号

​ -d 家目录:手工指定用户的家目录

​ -c 用户说明:手工指定用户的说明

​ -g 组名:手工指定用户的初始组

​ -G 组名:手工指定用户的附加组

​ -s shell:手工指定用户的登录shell。默认是/bin/bash

eg: useradd -u 550 -G root,bin -d /home/lamp -c “test user” -s /bin/bash stu24

v 用户默认值文件

[root@localhost ~]cat /etc/default/useradd
# useradd defaults fileGROUP=100 #用户默认组HOME=/home #用户家目录INACTIVE=-1 #密码过期宽限天数(shadow文件第7字段)EXPIRE= #密码失效时间(8)SHELL=/bin/bash #默认shellSKEL=/etc/skel #模板目录CREATE_MAIL_SPOOL=yes #是否建立邮箱

/etc/lobin.defs【对应/etc/shadow文件】

passwd [选项] 用户名

选项:

-S:查询用户密码的密码状态。仅root用户可用

-l:暂时锁定用户,使用户不能登录。仅root用户可用

【原理:在/etc/shadow文件中在密码前面添加了“!”,使密码失效】

-u:解锁用户。仅root用户可用

–stdin:可用通过管道符输出的数据作为用户的密码

eg:echo “123456” | passwd --stdin lamp

【“|”:第一个的输出作为第二个的输入或操作对象】

usermod [选项] 用户名

修改用户信息usermod

选项:

​ -u UID :修改用户的UID

​ -c 用户说明 :修改用户的说明信息

​ -G 组名 :修改用户的附加组

​ -L :临时锁定用户(lock)

​ -U :解锁用户锁定(unlock)

chage [选项] 用户名

修改用户密码状态chage

选项:

​ -l :列出用户的详细密码状态

​ -d 日期 :修改密码最后一次更改时间(shadow3字段)

​ -m 天数 :两次密码修改间隔(4字段)

​ -M 天数 : 密码有效期(5字段)

​ -W 天数 : 密码过期警告天数(6字段)

​ -I 天数 : 密码过期宽限天数(7字段)

​ -E 日期 : 账号失效时间(8字段)

[root@localhost ~]#chage -d 0 stu24

#这个命令其实就是把密码修改日期归0了(shadow第3字段)

#这样用户一登录就要修改密码

userdel [-r] 用户名

-r:删除用户的同时删除用户的家目录

id 用户名【查看用户ID】

[root@localhost ~]# id rootuid=0(root) gid=0(root) 组=0(root)

切换用户身份su

su [选项] 用户名

选项:

​ -:选项只使用“-”代表连用户的环境变量一起切换

​ -c 命令:仅执行一次命令,而不切换用户身份

[stu20@localhost ~]$ su - root -c “useradd stu25”

whoami【操作系统中查看当前有效用户名 】

env 【查看用户的环境变量】

用户组管理命令

groupadd [选项] 组名

选项:

​ -g GID:指定组ID

groupmod [选项] 组名

选项:

​ -g GID :修改组ID

​ -n 新组名 :修改组名

注:不建议修改组名

groupdel 组名【删除组名】

注:组中有初始用户,则不允许删除组;组中有附加用户,则可以删除组

[gpasswd] 选项 组名

选项:

​ -a 用户名:把用户加入组

​ -d 用户名:把用户从组中删除

权限管理

ACL权限

1) ACL权限简介与开启

权限rwx 属主(root)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VrLbfQuG-1666842764412)(file:///C:UsersAdministratorAppDataLocalTempksohtml10740wps1.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t7Vq3lnF-1666842764419)(file:///C:UsersAdministratorAppDataLocalTempksohtml10740wps2.png)]权限rwx 属组(group) project(目录) 用户(stu5) 权限rw

无权限 其他人

权限:770

v ACL为解决所有者,所属组,其他人三个身份不足的情况下使用;

查看分区ACL权限是否开启

dumpe2fs -h /dev/sda3

#dump2fs命令是查询指定分区详细文件系统信息的命令;

-h:仅显示超级快中的信息,而不显示磁盘块组的详细信息

临时开启分区ACL权限:

mount -o remount, acl / 【重新挂载根分区,并挂载加入acl权限】

永久开启分区ACL权限:

vim /etc/fstab 【系统开机自动挂载文件】

UUID=35b7854f-1da9-4347-baf4-91543063db8a /boot xfs defaults,acl 0 0

注:重启生效,若不重启生效则需要使用如下命令

[root@localhost ~]#mount -o remount / 【重新挂载文件系统或重启系统,使修改生效】

2) 查看与设定ACL权限

getfacl 文件名 【查看cal权限】

设定ACL权限的命令:

setfacl 选项 文件名

选项:

​ -m:设定ACL权限

​ -x:删除指定的ACL权限

​ -b:删除所有的ACL权限

​ -d:设定默认的ACL权限

​ -k:删除默认的ACL权限

​ -R:递归设定ACL权限

eg:[root@localhost local]#useradd stu3[root@localhost local]#useradd stu4[root@localhost local]#useradd stu5[root@localhost local]#groupadd tgroup[root@localhost local]#mkdir /usr/local/project[root@localhost local]#chown root:tgroup /usr/local/project[root@localhost local]#chmod 770 /usr/local/project[root@localhost local]#setfacl -m -u:stu5:rx /usr/local/project#给用户stu5赋予r-x权限,使用“u:用户名:权限”格式 给组设定ACL权限:[root@localhost local]#groupadd tgroup2[root@localhost local]#setfacl -m g:tgroup2:rwx /user/local/project

3) 最大有限权限与删除ACL权限

最大有效权限mask

v mask是用来指定最大有效权限的。给用户赋予了ACL权限,是需要和mask的权限“相与”才能得到用户的真正权限。【mask:rwx】

v 修改最大有效权限

setfacl -m m:rx 文件名

删除ACL权限

v setfacl -x u:用户名 文件名 【删除指定用户的ACL权限】

v setfacl -x g:组名 文件名【删除指定用户组的ACL权限】

v setfacl -b 文件名 【删除文件的所有的ACL权限】

4) 默认ACL权限和递归ACL权限

v 递归ACL权限

递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限。

setfacl -m -u:用户名:权限 -R 目录

默认ACL权限

默认ACL权限的作用是如果给父目录设定了默认的ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限

setfacl -m d:u:用户名:权限 目录

文件特殊权限

1) SetUID

就是在文件 所有者上面拥有s权限

v 只有可以执行的二进制程序才能设定SetUID权限。

v 命令执行者要对改程序拥有x权限。

v 命令执行者在执行该程序时获得该程序文件所属主的身份。

v SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

eg:[root@localhost /]# whereis passwdpasswd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz[root@localhost /]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd 【红色代表危险】

passwd命令拥有SetUID权限,所以普通用户可以修改自己的密码【/etc/shadow权限为000】

cat命令没有SetUID权限,所以普通用户不可以查看/etc/shadow

[root@localhost /]# whereis catcat: /usr/bin/cat /usr/share/man/man1/cat.1.gz[root@localhost /]# ll /usr/bin/cat-rwxr-xr-x. 1 root root 54160 10月 31 2018 /usr/bin/cat

v 设定SetUID的方法

Ø 4代表SUID

chmod 4755 文件名

chmod u+s 文件名

v 危险的SetUID

s 关键目录应严格控制写权限。比如“/”、“usr”等。

s 用户的密码设置要严格遵守密码三原则。

s 对系统中默认应该具有SetUID权限的文件作一列表,定时检查有没有这之外的文 件被设置了SetUID权限。

2) SetGID

v SetGID针对文件的作用

u 只有可执行的二进制程序才能设置SGID权限;

u 命令执行者要对该程序拥有x权限;

u 命令执行在执行程序的时候,组身份升级为该程序文件的所属组

u SetGID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

[root@localhost ~]# which locate/usr/bin/locate[root@localhost ~]# ll /usr/bin/locate -rwx–s–x. 1 root slocate 40520 4月 11 2018 /usr/bin/locate [root@localhost ~]# locate mlocate.db/usr/share/man/man5/mlocate.db.5.gz/var/lib/mlocate/mlocate.db/var/lib/mlocate/mlocate.db.Iw8aJJ[root@localhost ~]# ll /var/lib/mlocate/mlocate.db 【locate之所以搜索快是因为查找的是这个数据库】-rw-r-----. 1 root slocate 1355701 7月 17 19:18 /var/lib/mlocate/mlocate.db

v SetGID针对目录的作用

u 普通用户必须对此目录拥有r和x权限,才能进入此目录

u 普通用户在此目录中的有效组会变成此目录的属组

u 若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组

v 设定SetGID的方法:

2代表SGID

chmod 2755 文件名

chmod g+s 文件名

3) Sticky BIT

sticky【粘着】 BIT【比特,位】

v 粘着位的作用

u 粘着位目前只对目录有效;

u 普通用户对该目录拥有w和x权限,即普通用户可以在此目录下拥有写入权限;

u 如果没有粘着位,因为普通用户拥有w权限,所以科研删除此目录下的所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但不能删除其他用户建立的文件;

[stu20@localhost tmp]$ ll -d /tmp/drwxrwxrwt. 37 root root 4096 7月 19 11:27 /tmp/

v 设置和取消粘着位:

设置粘着位:chmod 1755 目录名 / chmod o+t 目录名

取消粘着位:chmod 777 目录名 / chmod o-t 目录名

文件系统属性chattr权限

v chattr命令格式

v [root@localhost ~]#chattr [±=] [选项] 文件或目录名

选项:

F i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但是不允许建立和删除文件。

F a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除和修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件内容,但是不允许删除。

该命令限制root[root@localhost tmp]# lsattr yum.txt ----i----------- yum.txt[root@localhost tmp]# echo 123 >> yum.txt -bash: yum.txt: 权限不够

v 查看文件系统隐藏属性

[root@localhost ~]#lsattr 选项 文件名

选项:

​ -a:显示所有的文件和目录

​ -d:若目标是目录,仅列出目录本身的属性,而不是子文件

系统命令sudo权限

v sudo权限

s root把本来只能超级用户执行命令赋予普通用户执行

s sudo的操作对象是系统命令

v sudo使用

[stu20@localhost ~]$sudo -l【查看root用户授权了那些命令给用户】

[root@localhost ~]#visudo 【实际修改的是/etc/sudoers文件】

root ALL=(ALL) ALL#用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)【注:允许哪一个用户,执行那一条命令,在那一台计算机上】#%wheel ALL=(ALL) ALL#%组名 被管理的主机地址=(可使用的身份) 授权命令(绝对路径) eg:[root@localhost ~]#visudo 【授权stu20用户可以重启服务器】stu20 ALL=/sbin/shutdown -r now [root@localhost ~]#vi /etc/sudoers【授权stu20用户可以使用/cat /etc/shadow命令】Stu20 ALL=/usr/bin/cat /ete/shadow

文件系统管理

回顾分区和文件系统

v 分区类型

Ø 主分区:总共最多只能四个分区;

Ø 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用;

Ø 逻辑分区:逻辑分区是在扩展分区中划分的如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘,Linux最多支持11个逻辑分区;

分区的设备文件名
主分区1dev/sda1
主分区2dev/sda2
主分区3dev/sda31234分区好号只能给主分区逻辑分区只能从5开始
扩展分区dev/sda4
逻辑分区1dev/sda5
逻辑翻去2dev/sda6

v 文件系统

F ext2:是ext系统的升级版本,RedHat Linux7.2版本以前的系统默认都是ext2 文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件;

F ext3:ext3文件系统是ext2文件系统的升级版,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。最大支持16TB的分区和最大2TB的文件;

F ext4:它是ext3的升级版。ext4在性能、伸缩性和可靠性方面进行了大量改进。ext4的变化可以说是翻天覆地的,比如向下兼容ext3、最大1EB文件系统和16TB文件、无限数量的子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是centos6.3的默认文件系统(1EB=1024PB=10241024TB)

文件系统常用的命令

1)df、du、fsck、dumpefs命令

Ø 文件系统查看命令df

[root@localhost ~]#df [选项] [挂载点]

选项:

​ -a:显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs

​ -h:使用习惯单位显示容量,如KB、MB、GB等

​ -T:显示文件系统类型

​ -m:以MB为单位显示容量

​ -k:以KB为单位显示容量。默认就是一KB为单位

Ø 统计目录或文件大小du

[root@localhost ~]#du [选项] [文件名或目录]

选项:

​ -a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量

​ -h:使用习惯单位显示容量,如KB、MB、GB等

​ -s:统计总占用量,而不列出子目录和子文件的占用量

v du和df命令的区别

ü df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程

序占用的空间(最常见的就是文件以及删除,但是程序并没有释放空间)

ü du命令是面向文件的,只会计算文件或目录占用的空间

Ø 文件系统修复命令fack

[root@localhost ~]#fack [选项] 分区设备文件名

选项:

​ -a:不用显示用户提示,自动修复文件系统

​ -y :自动修复。作用和-a一致,不过有些文件系统只支持-y

Ø 显示磁盘状态命令dumpe2fs

[root@localhost ~]#dumpe2fs 分区设备文件名

2)挂载命令

v 查询与自动挂载

mount (-l)【查询系统中已经挂载的设备,-l会显示卷标名称

v mount -a 【依据配置文件/etc/fstab的内容,自动挂载】

v 挂载命令格式

mount [-t 文件系统] [-L 卷标名] [-o特殊选项] 设备文件名 挂载点

选项:

​ -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、

iso9660[光驱默认文件系统]

​ -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载

​ -o 特殊选项:可以指定挂载的额外选项

3)挂载光盘与U盘

v 挂载光盘

mkdir /mnt/cdrom #建立挂载点【挂载点可以当做盘符来理解】

mount -t iso9660 /dev/cdrom /mnt/cdrom #挂载光盘

mount /dev/sr0 /mnt/cdrom

v 卸载光盘

umount 设备文件名或挂载点

v 挂载U盘

fdisk -l #查看U盘设备文件名

mount -t vfat /dev/sdb1 /mnt/usb

备注:Linux默认是不支持NTFS文件系统的

4) 支持NTFS文件系统

v 下载NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g-download

  1. tar -xzvf ntfs-3g_ntfsprogs-2017.3.23.tgz

  2. cd ntfs-3g_ntfsprogs-2017.3.23

  3. ./configure #编译器准备,没有指定安装目录,安装到默认位置中

  4. make #编译

  5. make install #编译安装

Ø 挂载:mount -t ntfs-3g 分区设备文件名 挂载点

fstab文件修复

mount -o remount,rw /

vi /etc/fstab

Shell编程

1)Shell概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCwtqLZX-1666842764422)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221027114112744.png)]

查看Linux支持的shell格式的文件:/etc/shells

2) Shell脚本的执行方式

[root@localhost ~]# echo -e "e[1;31m abcd e[0m"
abcd(显示红色字体	)
30m=黑色	31m=红色	32m=绿色	33m=黄色34m=蓝色 	35m=洋红	36m=青色	37m=白色

执行脚本:

​ 赋予权限,直接运行:chmod 755 文件名

​ ./文件名

直接运行:bash 文件名

dos2unix 文件名:

​ 由于在DOS(windows系统)下,文本文件的换行符为CRLF,而在Linux下换行符为LF,使用git进行代码管理时,git会自动进行CRLF和LF之间的转换,这个我们不用操心。而有时候,我们需要将windows下的文件上传到linux上,例如shell脚本,执行的时候有时会出现奇怪的问题,这时候,就需要安装dos2unix软件。

3) Bash的基本功能

命令别名

alias 别名=’原命令’

查询别名命令:alias

​ 使别名永久生效:vi /root/.bashrc

输入输出重定向

1.标准输入与标准输出:

设备设备文件名文件描述符类型
键盘/dev/stdin0标准输入
显示器/dev/sdtout1标准输出
显示器/dev/sdterr2标准错误输出
eg:lrwxrwxrwx. 1 root root 15 7月 23 10:15 stdin -> /proc/self/fd/0
  1. 输出重定向:
类型符号作用
标准输出重定向命令 > 文件以覆盖的方式,把命令的正确输出输出到指定的文件或设备中
命令 >> 文件以追加的方式,把命令的正确输出输出到指定的文件或设备中
标准错误输出重定向错误命令 2> 文件以覆盖的方式,把命令的错误输出输出到指定的文件或设备中
错误命令 2>> 文件以追加的方式,把命令的错误输出输出到指定的文件或设备中
正确输出和错误输出同时保存命令 > 文件 2>&1以覆盖的方式,把正确的输出和错误的输出都保存到同一个文件当中
命令 >> 文件 2>&1以追加的方式,把正确的输出和错误的输出都保存到同一个文件当中
命令 &> 文件以覆盖的方式,把正确的输出和错误的输出都保存到同一个文件当中
命令 &>> 文件以追加的方式,把正确的输出和错误的输出都保存到同一个文件当中
命令 >> 文件1 2>> 文件2把正确输出的追加到文件1,把错误的输出追加到文件2
  1. 输入重定向

wc [选项] [文件名]

选项:

​ -c:统计字节数

​ -w:统计单词数

​ -l:统计行数

多命令顺序执行与管道符

多命令执行符格式作用
;命令1;命令2多个命令顺序执行,命令之间没有任何逻辑顺序联系
&&命令1 && 命令2逻辑与 当命令1正确执行,则命令2才会执行 当命令1执行不正确,则命令2执行在系统中判断命令是否正确: 命令 && echo yes || echo no
||命令1 || 命令2逻辑或 当命令1执行不正确,则命令才会执行 当命令1正确执行,则命令2不会执行

dd:磁盘复制或数据复制命令;能复制特殊文件、分区、整个硬盘。

[root@localhost ~]#dd if=输入文件 of=输出文件 bs=字节数 count=个数
选项:
​	if=输入文件		指定源文件或源设备

​	of=输出文件		指定目标文件或目标设备

​	bs=字节数		指定一次输入/输出多少字节,即把这些字节看作一个数据块

​	count=个数		指定输入/输出多少个数据块

eg:
[root@localhost~]#date;dd if=/dev/zero of=/root/testfile bs=k count=100000;date
注:date的作用是查看系统创建一个100M的文件需要多长时间

Ø 管道符

命令格式:命令1 | 命令2

注:命令1的正确输出作为命令2的操作对象

grep [选择] “搜索内容” 文件名 【搜索出的关键字用颜色表示】

选项:

​ -i:忽略大小写

​ -n:输出行号

​ -v:反向查找

安装centos7.6自定义分区

l 第一步:创建/boot空间,大小设置为200,单位默认为MB,在实际的工作中可针对服务器的作用和性能调节此值的大小5

l 第二步:创建swap的使用量,大小设置为2048,单位默认为MB,在实际的工作中可针对服务器的作用和性能调节此值的大小6

l 第三步:创建biosboot空间,大小设置为1MB,此空间如果不创建在一些环境中系统将会出错7

l 最后一步:创建/空间,大小设置为空,将划分余下的所有空间给/分区,在实际的工作中可针对服务器的作用和性能调节此值的大小8

设置完成后可检查最后的设置情况,最后点击“Done”进入安装系统的下一步

CentOS下载:

https://mirrors.aliyun.com/centos/

CentOS 7安装ifconfig

yum install ifconfig: no package ifconfig available.
error: nothing to do

yum search ifconfig:

search:可以搜寻某个软件名称或者是描述(description)的重要关键字。此指令可以查找显示出相关的软件有哪些。

yum install net-tools.x86_64

网络配置:Linux虚拟机的克隆:

管理à克隆à虚拟机名字(170512-xxx)à存放路径(F:170512-xxx)

查看网卡信息:

​ 命令名称 : centos6:ifconfig

​ Centos7:ip addr

配置网卡信息文件:

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0 网卡的名字

TYPE=Ethernet 网络类型 以太网

ONBOOT=yes 在开机或重启的时候是否启动网卡

BOOTPROTO=static 网卡是如何获取到IP地址 网卡获取IP地址的方式

IPADDR=192.168.175.128 IP地址

NETMASK=255.255.255.0 子网掩码 决定这个局域网中最多有多少台机器

GATEWAY=192.168.175.2 网关 整个大楼的大门

DNS1=202.106.0.20

CentOS6:vi /etc/udev/rules.d/70-persistent-net.rules

查看主机名:

​ 命令名称:hostname

临时修改主机名:

​ 命令名称:hostname 主机名(hostname hadoop )

永久修改主机名:

​ vi /etc/sysconfig/network

​ HOSTNAME=?

配置网络映射:

​ vi /etc/hosts

​ 192.168.247.68 主机名

重启服务:

​ 命令名称:service

​ service network restart

免密登录:

在线安装ssh客户端:yum -y install openssh-clients

[如果发生如下错误]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V67hpHwu-1666842764424)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20221027110839903.png)]

解决办法:1、打开 vi /etc/resolv.conf,添加

nameserver 8.8.8.8

重启网络: service network restart

生成密钥:ssh-keygen -t rsa(一直回车)

指定主机免密:ssh-copy-id 主机名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波 多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值