一、初次见面
- 开源
- 安全性高
- 可定制
- 多用户、多任务
- 良好移植性
https://pan.baidu.com/s/1RNk1_2PlS2bqVO6IvBRcyQ 密码:bmr2
systemctl restart 服务名称 重启服务
systemctl start 服务名称 启动服务
systemctl stop 服务名称 停止服务
systemctl enable 服务名称 加入到启动项
systemctl status 服务名称 查看服务状态
RHEL5、RHEL6 init service
RHEL7 systemd systemctl
systemd 服务名称
systemcl 配置工具
连接方式
桥接
利用真实网卡,简单
NAT
利用8假网卡
host-only
利用8假网卡
1.23
/dev/hda1 (IDE硬盘接口)
/del/sda1 (SCSI硬盘接口、SATA硬盘接口)
清屏
ctrl + l
clear
终止操作
ctrl + c
写入
echo “www.mingyuefusu.cn" >> /etc/issue
分区
/boot 200MB
/home 2000MB
swap 1000MB
全部
关机(不要)
init 0
shutdown -h now
shutdown -h 10
poweroff
halt
重启
应该关闭服务
reboot
shutdown -r now
ifconfig eth0 196……
ls /bin/
文件类型
linux不考后缀名区分
- 压缩包:*.gz *.bz2 *.bz2 *.tgz
- 配置文件:*.conf
- 网页:*.html *.php
- 脚本文件:*.sh
所有存储设备都必须挂载(分配盘符)后才能使用,硬盘,U盘,光盘
系统目录
/bin/:命令
/sbin/:管理员root命令
/boot/:系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序文件等
/dev/:硬件设备文件
/etc/:配置文件保存文件,默认安装方式的服务的配置文件全部保存在这,如用户账户和密码,服务的启动脚本,常用服务的配置文件等
/home/:普通用户的家目录,每个用户的登陆位置user1用户 :/home/user1
/lib/:系统调用函数库保存位置
/lost+found/:系统崩溃和意外关机产生的文件碎片
挂载目录
- /media/:挂载媒体设备,软盘光盘
- /mnt/:挂载U盘,移动硬盘和其他操作系统的分区
- /misc/:挂载NFS服务的共享目录
/opt/:安装软件位置,习惯性安装到/usr/local/目录中
/proc/:虚拟文件目录,在内存中,保存CPU信息,设备驱动,文件系统列表,网络协议信息
/sys/:虚拟文件目录,在内存中,保存内核相关信息
/srv/:服务数据目录
/root/:超级用户家目录,普通用户目录在/home下,超级用户家目录直接在/下
/tmp/:临时目录,清空
/usr/:系统软件资源目录,unix software resourece
/var/:动态数据,缓存、日记、软件运行所产生的的文件
命令
- cd [目录名]
- .. 上一级目录,~ home目录, - 前一级命令
- pwd 当前目录
三类用户
- 所有者:一个人
- 所属组:一组相同的用户
- other
lrwxrwxrwx 链接
d 目录
-
注意
远程服务器不要关机,应该重启
重启应该关闭服务
不要在服务器访问高峰运行高负载命令
远程配置防火墙(渔网)时不要把自己提出服务器
密码规范,定期更新
合理分配权限
定期备份重要数据和日志
二、 常用命令
命令格式与目录处理命令ls
命令格式
格式:命令 [-选项] [参数]
ls -la /etc
个别命令不遵循,
多个选项可以连接在一起,
简化选项与完整选项
-a 等于 –all
目录处理命令:ls list
命令存在目录:/bin/ls
ls 选项[-ald] 文件或目录
- -a 显示所有文件,包括隐藏文件
- -l 详细信息显示
- -d 目录属性
- -i 文件id号
- -h 大小
ls -l :long长格式
ls -lh:文件大小k
-rw-r–r–
- ’-‘ 文件类型( - 二进制文件 d 目录 l 软连接文件)
- 文件类型、读写、组、其他人
目录处理命令
mkdir: make direcctories
路径: /bin/mkdir
语法:mkdir -p /tmp/japan/gg /tmp/japan/bb 多个递归创建
cd: change directory
路径:shell内置命令
执行权限:所有用户
cd .. 上级命令
pwd 当前目录
rmdir /tmp/japan删除空目录
cp :copy 复制
cp -rp [源文件或目录] [目标目录/后来的名称]
-r 复制目录
-p 保留文件属性(时间)
mv : move 剪切、改名
路径:/bin/mv
功能:剪切文件、改名
语法:mv [原文件或目录] [目标目录]
rm : remove 删除
语法: rm -rf /tmp/japan
-r 删除目录
-f 强制执行
文件处理命令
touch 创建文件
touch [文件名]
语法:创建空文件
cat 查看文件
-n 显示行号
tac 反向查看文件
more 分页显示文件内容
more [文件名]
后:
f或者空格一页、回车一行、q退出
less 分页显示文件内容,可向上翻页
less /etc/services
pgup 向上翻页
/ 搜索 n 下一个
head 显示文件前几行
-n 指定行数
head -n 20 /etc/services
tail 显示文件末尾几行
-n 指定行数
-f 动态显示文件末尾内容
默认10
连接命令
ln link
语法: ln -s [原文件] [目标文件]
-s 创建软连接
例子:ln -s /etc/issue /tmp/issue.soft *.hard
硬链接
- 硬链接同步更新,删除还在
- 不针对目录
- 不能跨分区
- 通过i 节点识别
权限管理命令
读4,写2,执行1
user group otheruser
lrwxrwxrwx. 1 root root 7 Apr 30 2020 bin -> usr/bin
dr-xr-xr-x. 4 root root 275 Apr 30 2020 boot
- 普通文件
l 链接文件
d 目录文件
权限管理命令 chmod
英文:change the permissions modes of a file
功能描述:修改文件或目录权限
路径:/bin/chmod
权限:所有用户
语法:chmod [{ user group otherUser a } {+-=} {rwx}] [文件或目录]
[mode=421] [文件或目录]
-R 递归修改
- r -- 4
- w -- 2
- x -- 1
rwx 7
创建用户、组
useradd mingming;
passwd [mingming]
groupadd brother;
权限介绍
命令 | 介绍 | 文件 | 目录 |
---|---|---|---|
r | 读权限 | 可以查看文件内容 | 可以列出目录中的内容 |
w | 写权限 | 可以==修改文件内容== | 可以在目录中创建、==删除文件== |
x | 执行权限 | 可以执行文件 | 可以进入目录 |
其他权限管理命令
所有者、管理员修改权限
chown 修改文件名所有者
语法:
chown [用户] [文件或目录]
功能:
改变文件或目录的所有者
例子:
chown mingming wenjian
chgrp
功能:
改变文件或目录的所属组
语法:
chgrp [用户组] [文件或目录]
umask
unmask -S 查看创建的文件的权限
0 022
777 rwx rwx rwx
022 — -w- -w-
rwx r-x r-x 目录,文件没有x
异或
文件搜索命令
文件搜索命令find
路径:/bin/find
权限:所有
语法:find [搜索范围] [匹配条件]
- find /etc -name init
-iname 不区分大小写
匹配符
- *所有
- ?单个字符
find / -size +204800
+大于 -小于
在根目录下查找大于100mb的文件
单位: 1数据块 512字节 0.5k
1字节=8bit 1字=2字节
find /home -user mingming
-group
在home目录下查找所有者为mingming的文件
find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
-amin 访问时间 Access
-cmin 文件属性 change
-mmin 文件内容 modify
-type f 文件 d 目录 l 软链接文件
*连接 -a -o and or *
find /etc -name initname -exec ls -l {} ;
-exec *
-ok 确认选项
其他搜索命令
==locate== fileName
yum install mlocate
updatedb
updatedb 更新文件数据
which 命令 获取命令绝对路径,别名
whereis 并且获得帮助文档
grep 文件中搜索字符串
-i 不区分大小写
-v 排除指定字符
grep -v ^# /etc/initab 中 ‘^’行首
帮助命令
1 命令帮助 5 配置文件的帮助
whatis ls(命令)
查看简短帮助文档
apropos 配置文件
只查看选项参数: ls –help
man : manual指南
不用路径
获取作用 选项
man date
date 日期格式
man services
/date 查找
help
查shell内置命令
help umask
命令 –help
用户管理命令
useradd
useradd mingming
passwd
passwd mingming
who
查看登录用户
显示目前登录系统的用户信息
tty 本地登录
pts远程终端
w 详细
压缩解压命令
格式 .gz .zip .rar
gzip : GUN zip
gzip [文件]
gzip -rv test6 # 递归压缩
压缩后 .gz
gzip -d 解压
只能压缩文件,不保留源文件
gunzip GUN unzip
gunzip txt.gz
tar 压缩解压
tar -cvf [压缩后文件名] [目录]
-c 打包
-v 显示详细信息
-f 指定文件名
-z 打包同时压缩
-x 解包
-z 解压缩
tar -zxvf Japan.tar.gz
zip test.zip test
zip -r Japan.zip Japan
解压命令:unzip
bzip2
bunzip2
网络命令
write
给用户发信息
write ming
ctrl + 退格键 或 del
Ctrl+D 保存结束
Ctrl + / 退出
wall
给所有用户发信
wall haha!
ping
ping 选项 IP地址
-c 指定发送次数
ping 192.155.555.555
ifconfig
英语 :interface configure
权限 :root
路径 :/sbin/ifconfig
语法 :inconfig 网卡名称 IP地址
mail [用户名]
last
列出用户登录信息
lastlog
列出所有用户
lastlog -u 502(名称)
traceroute
显示数据包到主机间的路径
traceroute www.mingyuefusu.cn
netstat
显示网络相关信息
netstat -
- t : TCP协议(电话)
- u: UDP协议(短信,快)
- l: 监听
- r: 路由
- n: 显示IP地址和端口号
netstat -tlun 监听本机监听的端口
netstat -an 查看本机所有的网络连接
netstat -rn 查看本机路由表
netstat -tunlp | grep 端口号
setup
配置网络
mount 挂载命令
mount [-t 文件系统] 设备文件名 挂载点
mount -t iso9660 /dev/sr0 /mnt/cdrom
ll /dev/cdrom
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
卸载
umount /dev/sr0
curl
curl排查DNS解析慢的原因:https://blog.csdn.net/weixin_30621919/article/details/95895508
curl -d 'userType=1' -d 'loginType=2' -d 'name=' -d 'passwd=' -X POST http://11.6/pages/gmxyLoginStudent.action |iconv -fgb2312 -t utf-8
关机重启
shutdown
shutdown -h now(时间20:33)
-c : 取消前一个关机命令
-h : 关机
-r : 重启
reboot
init 6
运行级别
0 关机
1 单用户,root权限,远程维护,禁止远程登录
2 不完全多用户,不包含network file server
3 完全多用户,有NFS网络文件系统
4 未分配
5 图形界面
6 重启
cat /ect/inittab
runlevel 运行级别
systemctl get-default
# 切换运行级别
systemctl isolate multi-user.target
# or
systemctl isolate runlevel3.target
# 查看对应运行级别
ls -l /lib/systemd/system/runlevel*
logout
空间不足
du -h --max-depth=1
三、vim
vim是一个功能强大的全屏幕文本编辑器,linux上最常用的文本编辑器,作用是建立、编辑、显示文本文件,vim没有菜单,只有命令
/host n 下一个
工作模式
基础
进入命令: vi filename
退出命令::wq
插入文本: iao
退出插入:ESC
编辑模式::
插入命令
iao 前后新
定位命令
删除命令
:1000,1005d 删除
复制和剪切命令
替换或取消
搜索和搜索替换命令
/g不询问
/c询问
保存和退出命令
zq 不保存退出
ll : ls -ld
选择范围
:set nu
:替换范围
%s 全文替换
起始行,终止行s /要替换的字符串/替换的新的字符串/g
c询问确认
:$s /ftp/yangmi/g
vim技巧
导入命令执行结果:r !命令
r !文件
定义快捷键:map 快捷键 触发命令
连续行注释
:n1,n2s/^/#/g
去掉行注释
:n1,n2s/^#//g
连续代码注释
:n1,n2s/^/\/\//g
替换
:ab mymail 234234@qq.com
永久设置
.vimrc
/home/username/.vimrc
/root/.vimrc
快捷键
ZZ保存退出
ZQ不保存退出
四、软件包管理
软件包管理简介
软件分类
- 源码包
- 脚本安装包
- 二进制包(RPM包、系统默认包)
源码包优点
- 开源,可以修改
- 可以自由选择功能
- 软件是编译安装,所以更适合自己的系统,更稳定,效率更高
- 卸载方便
源码包缺点
- 安装过程多,尤其安装较大的软件集合,容易出现拼写时间长
- 编译时间较长,比二进制安装时间长
- 因为是编译安装,安装过程中报错很难解决
RPM包优点
- 包管理系统简单
- 速度快
RPM包缺点
- 经过编译,看不到源代码
- 功能选择不够源码包灵活
- 依赖性 a->b->c
RPM包管理-rpm命令管理
RPM包命名原则
http-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布次数
el6.centos 适合的linux平台
i686 适合的硬件平台
rpm rpm包扩展名
RPM包依赖性
- 树形依赖:a->b->c
- 环形依赖:a->b->c->a
- 模块依赖:查询网站:www.rpmfind.net
安装升级与卸载
包全名与包名
包全名: 操作的包是没有安装的软件包,就是用包全名,而且要注意路径
包名:操作已经安装的软件包,使用包名,是搜索/var/lib/rpm中的数据库
RPM安装
rpm -ivh 包全名
-i(install) 安装
-v(verbose) 显示进度
–nodeps 不检测依赖性
RPM包升级
rpm -Uvh 包全名
-U 升级
卸载
rpm -e 包名
-e 卸载
-nodeps 不检查依赖性
查询是否安装
rpm -q 包名
-q 查询
-a 所有
-qa
查询软件包详细信息
rpm -qi 包名
-i 查询软件信息(information)
-p 查询未安装包信息
查询包中文件安装位置
rpm -ql 包名
-l list
-p 查询未安装包信息
查询系统文件属于哪个RPM包
查询系统属于哪个软件包
rpm -qf 系统文件名
-f 查询系统文件属于哪个软件包
查询软件包的依赖性
rpm -qR 包名
-R 查询安装包的依赖性
-q未安装的
RPM包检验
rpm -V 已安装的包名
-V 检验指定RPM包中的文件(verify)
RPM包中的文件提取(系统某个文件不见)
rpm2cpio | \ \表示换行,没输入完
cpio -idv .文件绝对路径
rpm2cpio
rpm转化为cpio
cpio
创建软件档案文件和从档案文件中提取文件
RPM包管理-yum在线管理
IP地址配置和网络yum源
ip配置
1.setup
2.vi /etc/sysconfig/network-scripts/ifcfg-eth0
重启服务
service network restart
网络yum源
yum命令
yum list
yum search 关键字
yum -y install 包名
- install 包装
- -y 自动
yum -y update 包名
yum -y remove 包名
yum grouplist
列出所有可用的软件组列表
yum groupinstall 软件组名
安装指定软件组
yum groupremove 软件组名
卸载
光盘yum源搭建
挂载光盘
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
让网络yum失效
cd /etc/yum.repos.d/
mv CentOS-Base.repo … repo.bak
修改光盘yum源文件
vim Centos-Media.repo
注释两个地址
gpgcheck= 1
enable = 1
14 [c6-media] 15 name=CentOS-$releasever - Media 16 baseurl=file:///mnt/cdrom 17 # file:///media/cdrom/ 18 # file:///media/cdrecorder/ 19 gpgcheck=1 20 enabled=1 21 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
源码包管理
源码包和RPM包的区别
安装前:概念
安装后:位置
RPM包默认位置
源码包默认位置
/usr/local/软件名
安装位置的影响
RPM apache的启动方法
/etc/rc.d/init.d/httpd start
service httpd start
源码包启动方法
/usr/local/apache2/bin/apachect1 start
源码包的安装过程
安装编译器
c语言编译器
yum -y install gcc
下载源码包
注意事项
源代码保存位置:/usr/local/src/
软件安装位置:/usr/local
安装过程
- 下载(使用winscp传入)
- 解压
- tar -zxvf httpd-2.4.38.tar.gz
- du -sh httpd-2.4.38 查看大小
- 进入该目录
- ./configure 软件配置与检查
- 定义需要的功能选项
- 检测系统环境是否符合安装要求
- 把定义好的功能选项和检测系统环境的信息都写入Makefile文件,用于后续的编辑
- ./configure –prefix=/usr/local/apache2
- make
- make install
访问
INSTALL
错误
yum install gcc gcc-c++ -y
/root/apr-1.4.5
104 configure:4672: error: in `/root/apr-1.4.5’:
105 configure:4676: error: C compiler cannot create executables
make clean
脚本安装包与软件包选择
不是独立的,常见安装还的是源码包
类似windows下的软件安装方式
webmin
Webmin 是一个基于Web 的Linux 系统管理界面。您就可以通过图形化的方式设置用户帐号、Apache、DNS、文件共享等服务。
下载:http://sourceforge.net/projects/webadmin/files/webmin/ 1.6.1
./setup.sh
crtl + 退格
五、我的问题
IP设置
apache无法使用**
service httpd start
第一种**
暂时关闭防火墙
service iptables stop
禁止启动防火墙
chkconfig iptables off
重启防火墙
service iptables restart
第二种
修改开启80端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
保持80端口开启
service iptables save
第三种
- vim /etc/sysconfig/iptables
- 命令修改 iptables 防火墙配置文件,添加一行内容如下:
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -j ACCEPT - service iptables restart
网站目录
/var/www/html/
lnmp无法使用
thinkphp5.1只能显示根网页,所有链接404
location中添加:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
session_start(): open) failed: Permission denied (13)
file_put_contents(/var/www/tpblog/runtime/temp/136471ff2580ecd9df29c5772f849835.php): failed to open stream: Permission denied
给报错的文件夹添加权限
chmod 777 文件夹
session_start(): open) failed: Permission denied (13)
/etc/php.ini中
php.ini session.auto_start = 0
session.save_path = “/root/tpblog”
default.conf
nginx -s reload
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /var/www/tpblog/public;
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root /var/www/tpblog/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
原始
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
解决 swap file “*.swp”already exists!
将隐藏的 *.swp 文件删除即可,原先的文件便可再次编辑。
mysql修改密码策略:
在/etc/my.cnf文件
添加validate_password_policy配置,指定密码策略:
选择0(LOW),1(MEDIUM),2(STRONG)其中一种,选择2需要提供密码字典文件。
validate_password_policy=0
如果不需要密码策略,添加my.cnf文件中添加如下配置禁用即可:
validate_password = off
systemctl restart mysqld
set password for ‘root’@’localhost’=password(‘TestBicon@123’);
用MySQL的source命令导入SQL文件实战记录。
输入source 脚本全路径 或者 . 脚本全路径
lamp的使用
启动nginx
sudo systemctl start nginx.service
开机自动启动
sudo systemctl enable nginx.service
mysql使用
一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ —> mysql的data目录
二、导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
mysql -uroot -p abc < abc.sql
三、远程无法连接
use mysql
update user set host =’%'where user =‘root’ and host =‘localhost’;
flush privileges;
# 或者
GRANT ALL PRIVILEGES ON *.* TO 'mingyuefusu'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
# 修改密码
SET PASSWORD FOR root@'%'=PASSWORD('123qwe'); #root
四、导入数据失败
show VARIABLES like '%max_allowed_packet%';
# 1.windows中修改my.ini文件,在linux中修改my.cnf文件.
# 2.命令行
SET GLOBAL max_allowed_packet = 500*1024*1024;
flush privileges;
# 乱码
mysql -uroot -P3306 -p123456 --default-character-set=utf8
六、用户与用户组管理
root
- UID为0
系统用户:
- 保障系统运行的用户
- UID 1-999
普通用户:
- UID 1000-65536之间
- 权限有限
用户配置文件
用户管理简介
- 建立合理的用户权限等级制度和服务器操作规范
- 在linux中主要是通过用户配置文件来查看和修改用户信息
/etc/passwd
定义系统的用户账号,不保存口令
man 5 passwd 5 配置文件
用户名规范
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
- 第1字段:用户名称
- 第2字段:密码标志 x,保存在/etc/shadow
- 第3字段:UID(用户ID)
- 0:超级用户
- 1-499:系统用户(伪用户)
- 500-65535: 普通用户
- 0:超级用户
- 第4字段:GID(用户初始组ID)
- 第5字段:用户说明
- 第6字段:家目录
- 普通用户:/home/用户名/
- 超级用户:/root/
- 第7字段:登录之后的Shell
- nologin不登录
初始组和附加组
初始组:就是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组。
附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个
shell
Shell就是Linux的命令解释器。
在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin,/usr/bin/passwd等
禁用 nologin
影子文件
影子文件 /etc/shadow
root:$1$tCt/44vg$mq0u7wyFlXY1tAPtBqk6Q.:19218:0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
第1字段:用户名
第2字段:加密密码
加密算法升级为SHA512散列加密算法
如果密码位是“!!”或“*”代表没有密码,不能登录
第3字段:密码最后一次修改日期
- 1970年1月1日 一天1 时间戳
第4字段:两次密码的修改间隔时间(和第3字段相比)
第5字段:密码有效期(和第3字段相比)
第6字段:密码修改到期前的警告天数(和第5字段相比)
第7字段:密码过期后的宽限天数(和第5字段相比)
第8字段:账号失效时间
- -1 不失效
- 0 到期立即失效
第9字段:保留
时间戳换算
把时间戳换算为日期
date -d “1970-01-01 16066 days”
把日期换算为时间戳
echo $(($(date – date=”2014/01/06” +%s)/86400+1))
组信息文件和组密码文件
组信息文件 /etc/group
- 第一字段:组名
- 第二字段:组密码标志
- 第三字段:GID
- 第四字段:组中附加用户
组密码文件/etc/gshadow
- 第一字段:组名
- 第二字段:组密码
- 第三字段:组管理员用户名
- 第四字段:组中附加用户
用户管理相关文件
用户的家目录
普通用户:/home/用户名/,所有者和所属组都是此用户,权限是700
超级用户:/root/,所有者和所属组都是root用户,权限是550
ll /home/
用户的邮箱
/var/spool/mail/用户名/
用户模板目录
/etc/skel/
用户管理命令
useradd
用户添加命令
useradd命令格式
-u UID: 手工指定用户UID号
-d 家目录:手工指定家目录
-c 用户说明:手工指定用户的说明
-g 组名:手工指定用户的初始组
-G 组名:指定用户的附加组
-s shell:手工指定用户的登录shell。默认是/bin/bash
添加默认用户
useradd lamp
grep lamp
/etc/passwd
useradd -g groupName userName
指定选项添加用户
groupadd lamp 1
useradd-u 550 -g lamp1 -G root,group2 -d /home/lamp1 -c “test user” -s /bin/bash lamp1
用户默认值
默认设置文件 /etc/default/useradd
GROUP=100 #用户默认组
HOME=/home #用户家目录
INACTIVE=-1 #密码过期宽限天数(7)
EXPIRE= #密码失效时间(8)
SHELL=/bin/bash #默认shell
SKEL=/etc/skel #模板目录
CREATE_MAIL_SPOOL=yes #是否建立邮箱
/etc/login.defs
PASS_MAX_DAY S99999 #密码有效期(5)
PASS_MIN_DAYS 0 #密码修改间隔(4)
PASS_MIN_LEN 5 #密码最小5位(PAM)
PASS_WARN_AGE 7 #密码到期警告(6)
UID_MIN 500 #最小和最大UID范围
GID_MAX 60000
ENCRYPT_METHOD SHA512 #加密模式
passwd
修改用户密码
passwd [选项] 用户名
-S 查询用户密码的密码状态。仅root用户可用
-l 暂时锁定用户。仅root用户可用
-u 解锁用户。仅root用户可用
–stdin 可以通过管道符输出的数据作为用户的密码
passwd -S
查看密码状态
passwd -S lamp1
#用户名密码设定时间(2013-01-06)密码修改间隔时间(0)
#密码有效期(99999 )警告时间(7)密码不失效(-1)
锁定用户和解锁用户
passwd -l lamp lock
passwd -u lamp use
使用字符串作为用户的密码
echo “123” | passwd –stdin lamp
usermod
修改用户信息
usermod [选项] 用户名
chage
修改用户密码状态
chage [选项] 用户名
选项:-l:列出用户的详细密码状态
-d 日期:修改密码最后一次更改日期(shadow3字段)
-m 天数:两次密码修改间隔(4字段)
-M 天数:密码有效期(5字段)
-W 天数:密码过期前警告天数(6字段)
-I 天数:密码过后宽限天数(7字段)
-E 日期:账号失效时间(8字段)
chage -d 0 lamp
-m 天数:两次密码修改间隔(4字段)-M 天数:密码有效期(5字段)-W 天数:密码过期前警告天数(6字段)-I 天数:密码过后宽限天数(7字段)-E 日期:账号失效时间(8字段)
userdel su
删除用户
用户切换命令
userdel [-r] 用户名
-r 删除用户的同时删除用户家目录
手工删除用户
查看用户ID
id 用户名
切换用户身份su
-: 选项只使用“-”代表连带用户的环境变量一起切换
-c 命令:仅执行一次命令,而不切换用户身份
su – root #切换成root,环境也改变到root
su-root -c "useradduser3" #不切换成root,但是执行useradd命令添加user1用户
用户管理组
方便用户之间文件共享,一个用户一个主要组群,多个附加组群
添加组
groupadd [选项] 组名
-g GID : 指定组id
修改组
groupmod [选项] 组名
-g GID:修改组ID
-n newName oldName:新组名
删除用户组
groupdel 组名
不允许有初始用户
把用户添加入组或从组删除
gpasswd 选项组名
-a 用户名 : 加入
-d 用户名:删除
gpasswd -a user1 rootGroup
添加sudo用户
# 查看组
cat /etc/group
groups # 查看本人的组 [mingyue] 查看明月的组
# 添加sudo用户组
sudo visudo
# tab
vim sudoers
myuser ALL=(ALL) ALL # 用户
%sudo ALL=(ALL) ALL # 用户组
groupadd sudo
# 添加用户
useradd -m mingyue
passwd mingyue
# 添加用户到用户组
sudo usermod -a -G sudo mingyue
# 添加用户并添加到 sudo用户组
sudo useradd -m -G sudo zhengmiao
# 修改密码
sudo passwd zhengmiao
七、权限管理
ACL权限
ACL权限简介与开启
身份不足,另设一个用户
df -h 查看各分区资源利用
dumpe2fs -h /dev/sda5
mount acl
-h 仅显示超级块中信息,而不显示磁盘块组的详细信息
临时开启分区ACL权限
mount -0 remount,acl /
永久开启分区ACL权限
vi /etc/fstab
UUID=c2ca6f57-b15c-43ea-bca0-f239083d8bd2 / ext4 defaults,acl 1 1#加入acl
mount -o remount /
#重新挂载文件系统或重启动系统,使修改生效
查看与设定ACL权限
最大有效权限与删除ACL权限
默认ACL权限和递归ACL权限
文件特殊权限
文件系统属性chattr权限
chattr命令格式
chattr [+-=] [选项] 文件或目录名
+:增加权限
-:删除权限
=:等于某权限
i:如果对文件设置i属性,那么不允许对文件进行删除、改名,也不能添加和修改数据;如果对目录设置i属性,那么只能修改目录下文件的数据,但不允许建立和删除文件。
a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能删除也不能修改数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件,但是不允许删除
查看文件系统属性
lsattr 选项文件名
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身的属性,而不是子文件的
系统命令sudo权限
sudo权限
root把本来只能超级用户执行的命令赋予普通用户执行
sudo的操作对象是系统命令
sudo使用
visudo
#实际修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用户名被管理主机的地址=(可使用的身份)授权命令(绝对路径)
# %wheel ALL=(ALL) ALL
#%组名被管理主机的地址=(可使用的身份)授权命令(绝对路径)
授权sc用户可以重启服务器
sc ALL= /sbin/shutdown –r now
普通用户执行sudo赋予的命令
su – sc
sudo -l
#查看可用的sudo命令
sudo /sbin/shutdown -r now
#普通用户执行sudo赋予的命令,绝对路径
八、文件系统管理
回顾分区和文件系统
分区类型
主分区:总共最多只能分四个
扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区,如果是SCSI硬盘Linux最多支持11个逻辑分区
分区表示方法
逻辑分区从sda5开始
文件系统
ext2 最大16TB分区,最大2TB的文件
ext3 添加日志功能
ext4 它是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。 EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是CentOS6.3的默认文件系统(1EB=1024PB=1024*1024TB)
文件系统常用命令
df、du、fsck、dumpe2fs
df 文件系统查看
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs
-h 使用习惯单位显示容量,如KB,MB或GB等
-T 显示文件系统类型
-m 以MB为单位显示容量
-k 以KB为单位显示容量。默认就是以KB为单位
du 统计目录或文件大小
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等
-s 统计总占用量,而不列出子目录和子文件的占用量
du和df区别
df是从文件系统考虑的,不关是文件占用的空间,还有命令和程序占用的空间(文件已经删除,但程序没有释放空间)
du是面向文件的,只会计算文件或目录占用的空间
fsck
文件系统修复命令
-a : 自动修复,
-y:自动修复,有些文件系统只支持-y
dumpe2fs
dumpe2fs /dev/sda1
挂载命令
查询和自动挂载
mount [-l] 显示已经挂载的设备,-l显示卷标名称
mount -a 依据/etc/fstab的内容,自动挂载
挂载命令格式
mount [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名挂载点
-t 文件系统:加入文件系统类型来指定挂载的类型,可以EXT3,EXT4、iso9660等文件系统
-L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
-o 特殊选项:指定挂载的格外选项
挂载光盘和U盘
挂载光盘
mnt U盘 cdrom 光盘
ll /dev/cdrom /dev/cdrom -> sr0
mkdir /mnt/cdrom 建立挂载点
mount /dev/cdrom /mnt/cdrom
设备文件名 盘符
卸载
umount 设备文件名或挂载点
umount /mnt/cdrom 或者 /dev/sr0
挂载U盘
fdisk -l
查看U盘设备文件名
mkdir /mnt/usb
mount -t vfat /dev/sdb1 /mnt/usb/
linux不支持NTFS文件系统
支持NTFS文件系统
下载NTFS-3G插件
http://www.tuxera.com/community/ntfs-3g-download/
安装NTFS-3G
tar -zxvf ntfs-3g_ntfsprogs-2013.1.13.tgz
cd ntfs-3g_ntfsprogs-2013.1.13
./configure 没有指定安装目录,安装到默认位置中
make
make install
fdisk分区
fdisk分区过程
查看新硬盘
fdisk -l
df
fdisk命令分区
fdisk /dev/sdb
重新读取分区表信息
partprobe
格式化分区
mkfs -t ext4 /dev/sdb1
建立挂载点并挂载
mkdir /disk1
mount /dev/sdb1 /disk1/
分区自动挂载与fastab文件修复
==/etc/fstab文件==
第一字段:分区设备文件名或UUID(硬盘通用唯一识别码)
第二字段:挂载点
第三字段:文件系统名称
第四字段:挂载参数
第五字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份
第六字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,那么当然1的优先级比2高
/dev/sdb5 /disk5 ext4 defaults 1 2
检查
mount -a
/etc/fastab文件修复
mount -o remount,rw /
分配swap分区
九、shell
shell概述
Shell是什么
- shell是命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序
- Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
Shell的分类
BourneShell、C Shell
shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh
Bash:Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell
Linux支持的Shell
/etc/shells
Shell脚本的执行方式
echo输出命令
-e:支持反斜线控制的字符转换
echo -e “a\tb\tc\nd\te\tf”
echo -e “\e[1;31m abcd \e[0m”
#输出颜色
#30m=黑色,31m=红色,32m=绿色,33m=黄色#34m=蓝色,35m=洋红,36m=青色,37m=白色
第一个脚本
#vi hello.sh
#!/bin/bash
#The first program
#Author: shenchao (E-mail: shenchao@lampbrother.net)
echo -e “Mr”
脚本执行
赋予执行权限,直接运行
chmod 755 hello.sh
./hello.sh
通过Bash调用执行脚本
bash hello.sh
Bash的基本功能
历史命令与命令补全
历史命令
history [选项] [历史命令保存文件]
-c : 清空历史命令
-w :把缓存中的历史命令写入历史命令保存文件 ~/.bash_history
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile中进行修改
历史命令的调用
- 使用上、下箭头调用以前的历史命令
- 使用“!n”重复执行第n条历史命令
- 使用“!!”重复执行上一条命令
- 使用“!字串”重复执行最后一条以该字串开头的命令
命令与文件补全tab
在Bash中,命令与文件补全是非常方便与常用的功能,我们只要在输入命令或文件时,按“Tab”键就会自动进行补全
命令别名与常用快捷键
命令别名
alias 别名=’原命令’
alias #查询命令别名
alias -p 查看所有别名命令
命令执行时顺序
1 第一顺位执行用绝对路径或相对路径执行的命令。
2 第二顺位执行别名。
3第三顺位执行Bash的内部命令。
4第四顺位执行按照$PATH环境变量定义的目录查找顺序找到的第一个命令。
让别名永久生效
vi /root/.bashrc
删除别名
unalias 别名
Bash常用快捷键
输入输出重定向
标准输入输出
输出重定向
ls &>/dev/null 丢到垃圾箱
输入重定向
wc [选项] [文件名]
-c 统计字节数
-w统计单词数
-l统计行数
命令<文件把文件作为命令的输入
命令<< 标识符
标识符把标识符之间内容作为命令的输入
多命令顺序执行与管道符
多命令顺序执行
; && ||
dd if=输入文件 of=输出文件 bs=字节数 count=个数
f=输入文件 指定源文件或源设备
of=输出文件 指定目标文件或目标设备
bs=字节数 指定一次输入/输出多少字节,即把这些字节看做一个数据块
count=个数 指定输入/输出多少个数据块
date ; dd if=/dev/zero of=/root/testfile bs=1k count=100000 ; date
测试复制文件时间
管道符
命令1 | 命令2
#命令1的正确输出作为命令2的操作对象
ll -a /etc/ | more
netstat -an | grep “ESTABLISHED”
grep
grep [选项] “搜索内容”
-i: 忽略大小写
-n: 输出行号
-v: 反向查找
–color=auto 搜索出的关键字用颜色显示
-r test hundsun hundsun目录中包含test的行
通配符与其他特殊符号
通配符
通配符 | 作用 |
---|---|
? | 匹配任意一个字符 |
* | 匹配0个或任意多个字符 |
[ ] | 匹配括号中的任意一个字符,[ABC],匹配A、B、C中任意一个 |
[^] | 逻辑非 |
Bash中其他特殊符号
符号 | 作用 |
---|---|
‘ ‘ | 单引号中的所有特殊符号没有特殊含义,$, ` |
“ “ | 双引号中的特殊字符没有特殊含义,除了$(调用变量的值), `(引用命令), \(转义符) |
`` | 反引号,引用系统命令,与$()一样 |
$() | 引用系统命令 |
# | shell中表示注释 |
$ | 调用变量的值 |
\ | 转义符,其后特殊符变成普通字符 |
例如
echo $(date)
Bash的变量
变量设置规则
字母、数字和下划线组成
在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
在变量的值中,可以使用“\”转义符。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
环境变量名建议大写
变量分类
- 用户自定义变量
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
- 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
本地变量
赋值
name="shenchao"
aa=”$aa”456
aa=${aa}789
变量调用
echo $name
变量查看
set
变量删除
unset name
env环境变量
环境变量
/etc/profile 所有用户
~/.bash_profile 当前用户
shell窗口,只对当前shell生效
使用source fileName 生效
含义
用户定义变量只在当前SHELL中生效,环境变量在当前Shell和起子Shell都生效,配置文件中的环境变量全局生效
设置环境变量
export 变量名=变量值 声明变量
env 查询变量
unset 变量名 删除变量
系统常见环境变量
PATH:系统查找命令的路径
echo $PATH
PATH=”$PATH”:/root/sh PATH变量叠加,添加可执行命令
PS1:定义系统提示符的变量
\d:显示日期,格式为“星期月日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$
PS1='[\u@\h \W]\$ '
位置参数变量
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0为命令本身,$1~$9代表第几个参数,其后${10} |
$* | 命令行中所有参数一个整体 |
$@ | 每个参数合成数组 |
$# | 所有参数的个数 |
例子1:
num1=$1
num2=$2
sum=$(( $num1 + $num2)
预定义变量
预定义变量
预定义变量 | 作用 |
---|---|
$? | 最后一次命令的返回状态,正确执行0,非0不正确执行 |
$$ | 当前进程的进程号PID |
$! | 后台运行的最后一个进程的进程号PID |
后台运行:
find /root -name hello.sh &
接受键盘输入
read [选项] [变量名]
-p “提示信息” :会提示信息
-t 秒数:指定等待输入时间
-n 字符数:只能输入n位
-s: 输入隐藏数据
read -n 1 -t 30 -p “Please select your gender[M/F]: “ gender
Bash的运算符
declare声明变量类型
declare [+/-][选项] 变量名
-: 给变量设定类型属性
+: 取消属性
-i: 整数型
-x: 环境变量
-p: 显示指定类型的被声明的类型
运算
方法1:数值运算
declare -i cc=$aa+$bb
方法2:expr或let数值运算工具
dd=$(expr $aa + $bb)
方法3:“$((运算式))”或“$[运算式]”
$(( $a + $b )) $[ $a +$b ]
运算符
变量测试与内容替换
环境变量配置文件
环境变量配置文件简介
source
source 配置文件 或 . 配置文件
- 环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,比如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量
- /etc/profile
- /etc/profile.d/*.sh
- ~/.bash_profile
- ~/.bashrc
- /etc/bashrc
环境变量配置文件作用
/etc/profile的作用:
USER变量、LOGNAME变量、MAIL变量、PATH变量、HOSTNAME变量、HISTSIZE变量、umask、调用/etc/profile.d/*.sh文件
~/.bash_profile的作用
调用了~/.bashrc文件、在PATH变量后面加入了“:$HOME/bin”这个目录
~/.bashrc的作用
定义默认别名、调用/etc/bashrc
/etc/bashrc的作用
PS1变量、umask、PATH变量、调用/etc/profile.d/*.sh文件
其他配置文件和登录信息
注销时生效的环境变量配置文件
~/.bash_logout
其他配置文件
~/bash_history
Shell登录信息
- 本地终端欢迎信息:/etc/issue
远程终端欢迎信息:/etc/issue.net
- 转义符在/etc/issue.net文件中不能使用
- 是否显示此欢迎信息,由ssh的配置文件/etc/ssh/sshd_config决定,加入“Banner /etc/issue.net”行才能显示(记得重启SSH服务)
登陆后欢迎信息:/etc/motd
不管是本地登录,还是远程登录,都可以显示此欢迎信息
十、网络基础
虚拟机配置
https://www.cnblogs.com/lastyear/p/11502861.html
nat
BootProto=none
ipaddr需要在范围内
gateWay、netMask要与主机网卡一致
vi /etc/sysconfig/network-scripts/ifcfg-ens33
systemctl restart network
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b07cfc9a-0d9e-4a10-87e1-cabdd1b203db
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.153.222
GATEWAY=192.168.153.2
NETMASK=255.255.255.0
DNS2=114.114.114.114
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no
突然连不上网
https://blog.csdn.net/zhangxing52077/article/details/78411487
修改windows的vm服务
centos7
https://blog.csdn.net/zyq_2014/article/details/79692181
配置LinuxIP地址
setup
启动网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0
把ONBOOT=no改为ONBOOT=yes
service network restart
设置虚拟机网络连接方式
网络基础
互联网接入方法
互联网接入方法
ADSL:非对称数字用户环路。ADSL可以提供最高1Mbps的上行速率和最高8Mbps的下行速率。最新的ADSL2+技术可以提供最高24Mbps的下行速率,ADSL2+打破了ADSL接入方式带宽限制的瓶 颈,使其应用范围更加广阔。宽带连接
FTTH:光纤入户的带宽更高,而光纤的原材料是二氧化硅,在自然界取之不尽用之不竭。当然也是动态IP地址。
小区宽带:小区宽带是一个大局域网,所有客户都在同一个网段中。外网接口可以是FTTH,也可以是固定IP的光纤。
固定IP光纤:带宽自由申请,价格最贵。因为固定IP地址,所以可以搭建服务器。
网络通信协议
OSI/ISO七层模型和TCP/IP四层模型
网络层协议和IP地址划分
网络层协议
网际协议(IP)
互联网控制报文协议(ICMP)
数据封装过程
ip 32位
IP地址分类
子网掩码的使用
变长子网掩码及子网规划
网络地址 : ip与掩码相与 , 掩码中的1不能断开,
广播地址:子网掩码是0时都是1,1时IP不变
ICMP协议
ICMP消息通过IP数据报传送,被用来发送错误和控制信息。
ICMP定义了很多信息类型
ping www.
例如:
目的地不可达
TTL 超时信息
请求信息
应答地址
请求地址应答
Linux网络基础
Linux的IP地址配置
Linux配置IP地址的方法
- ifconfig命令临时配置IP地址
ifconfig eth0 192.168.0.200 netmask 255.255.255.0
setup工具永久配置IP地址
修改网络配置文件
图形界面配置IP地址
Linux网络配置文件
网卡信息文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
– | – |
---|---|
DEVICE=eth0 | 网卡设备名 |
BOOTPROTO=none | 是否自动获取IP(none、static、dhcp) |
WADDR=00:0c:29:17:c4:09 | MAC地址 |
NM_CONTROLLED=yes | 是否可以由Network Manager图形管理工具托管 |
ONBOOT=yes | 是否随网络服务启动,eth0生效TYPE=Ethernet类型为以太网 |
UUID=“44b76c8a-b59f-44d5-83fa-7f98fda86b3d“ | 唯一识别码 |
IPADDR=192.168.0.252 | IP地址 |
NETMASK=255.255.255.0 | 子网掩码 |
GATEWAY=192.168.0.1 | 网关DNS1=202.106.0.20 |
DNSIPV6INIT=no | IPv6没有启用 |
USERCTL=no | 不允许非root用户控制此网卡 |
主机名文件
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
hostname [主机名]
#查看与临时设置主机名命令
DNS配置文件
vi /etc/resolv.conf
nameserver 202.106.0.20
search localhost
常用网络命令(1)
查看与配置网络状态命令
ifconfig
查看或设置主机名命令
hostname [主机名]
关闭与启动网卡
ifdown网卡设备名 禁用该网卡设备
ifup网卡设备名 启用该网卡设备
查询网络状态
netstat [选项]
-t : 列出tcp协议端口
-u: 列出UDP
-n:不使用域名与服务名,而使用IP地址和端口号
-l:仅列出在监听状态网络服务
-a:列出所有的网络连接
-r:列出路由列表,功能和route命令一致
netstat -tlun
netstat –rn
netstat -an | grep ESTABLISHED
统计数量
netstat -an | grep ESTABLISHED | wc -1
route命令
route -n 查看路由列表(可以看到网关)
域名解析命令
nslookup [主机名或IP]
#进行域名与IP地址解析
nslookup
> server
查看本机DNS服务器
常用网络命令(2)
ping命令
ping [选项] ip或域名
-c 次数: 指定ping包的次数
telnet命令
远程管理与端口探测命令
telnet 192.168.0.252 80
traceroute
-n 使用IP,不使用域名,速度更快
wget命令
wget http://soft.vpser.net/lnmp/lnmp1.1-full.tar.gz
下载命令
wget -b url
tail -f wget-log
防火墙
端口操作:https://blog.csdn.net/u014079773/article/details/79745819
关闭防火墙(非常不建议)
service iptables stop –停止
service iptables start –启动
命令
firewall-cmd –state 查看状态
开启
service firewall start
开放
firewall-cmd –permanent –add-port=8080-8085/tcp
重启
firewall-cmd –reload
关闭
firewall-cmd –permanent –remove-port=8080-8085/tcp
查看开放的端口
firewall-cmd –permanent –list-ports
查看使用互联网的程序
firewall-cmd –permanent –list-services
访问端口
curl 127.0.0.1:8080
curl ip:8080
-i HTTP头信息
虚拟机网络参数配置
十一、SHELL编程
正则表达式
基础正则表达式
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed等命令可以支持正则表达式。
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了
基础正则表达式
字符截取命令
cut字段提取命令
cut [选项] 文件名
-f 列号:提取第几列
-d 分隔符: 指定分隔符
cut -d “:” -f 1,3 /etc/passwd
df -h | cut -d “ “ -f 1,3 死板
printf命令
printf 输出格式 输出内容
%ns 输出n个字符
%ni 输出n个数字
%m.nf 输出m位数,n位小数
\a 输出警告声音
\b 退格符
\f 清除屏幕
\n 换行
\r 回车
\t 水平tab
\v 垂直tab
printf ‘%s %s %s\n’ 1 2 3 4 5 6
循环格式
awk命令
awk ‘条件1{动作1} 条件2 {动作2}…’ 文件名
条件 >=
动作 格式化输出、流程控制语句
例子
df -h | awk '{print $1 "\t" $3}'
BEGIN {}
END{}
cat student.txt | grep -v Name | \awk ‘$6 >= 87 {printf $2 “\n” }’
FS内置变量
cat /etc/passwd | grep “/bin/bash” | awk ‘BEGIN {FS=”:”} {printf $1 “\t” $3 “\n”}’
sed命令
sed 是一种几乎包括在所有UNIX 平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
sed [选项] [动作] 文件名
-n 只输出被sed处理的行
-e 应用多条sed命令 sed -e 's/Liming//g ; s/Gao//g' student.txt
-i 同时修改文件
动作
a\ 追加,在当前行后添加一行或多行 '2a hello'
c\ 行替换,用c后面的字符串替换原数据行 '2c replaceString'
i\ 插入,在当期行前插入一行或多行 '2i hello'
d 删除指定的行 '2,4d'
p 输出指定行 sed '2p' student.txt
s 替换字符串, 行范围s/old/new/g sed '3s/74/99/g' student.txt
字符处理命令
sort
sort [选项] 文件名
-f 忽略大小写
-n 以数值型排序
-r 反向排序
-t 指定分隔符 sort -t “:” 3,3 /etc/passwd
-k n[,m] 指定字段范围排序,n到m字段
sort -n -t “:” -k 3,3 /etc/passwd
wc : word count
wc [选项] 文件名
-l 行数
-w 单词数
-m 字符数
条件判断
文件类型判断
-e 判断文件存在
-d 判断目录文件存在
-f 判断普通文件存在
判断格式
test -e /root/install.log
[ -e /root/inatll.log ]
[ -d /root ] && echo “yes” || echo “no”
文件权限判断
文件间比较
文件1 -nt 文件2 判断1的修改时间比2新
文件1 -ot 文件2 判断2的修改时间比2旧
文件1 -ef 文件2 判断是否是同一文件(硬链接)
ln /root/student.txt /tmp/stu.txt
[ /root/student.txt -ef /tmp/stu.txt ] && echo “yes” ||echo “no”
整数间比较
字符串判断
多重条件判断
流程控制
语法
//1.单分支
if [ ];then
test
fi
//2.多分支
if [ ]
then
语句
elif [ ]
then
语句
else
fi
//3.case
read -p "input yes/no: " -t 30 choose
case $choose in
"yes")
echo "yes"
;;
"no")
echo "no"
;;
*)
echo "error"
;;
esac
//4.for
for 变量 in 值1 值2
do
程序
done
例子:
d /lampls
*.tar.gz > ls.log
for i in $(cat ls.log)
do
tar -zxf $i &>/dev/null
done
rm -rf /lamp/ls.log
//5.for
for ((初始值;循环条件;变化))
do
程序
done
//6.while
while [ 条件判断 ]
do
程序
done
//7.util
until [ 条件判断 ]
do
程序
done
实用样例
!/usr/bin/bash
批量解压缩脚本
添加指定数量用户
yum -y install nmap
nmap -sT 192.168.67.100
nmap -sT 106.75.103.71
变量
my_array=(A B "C" D)
${my_array[0]}
module_array=("ruoyi-module-system" "psedu-base" "psedu-exam")
for module_name in ${module_array[@]}
do
echo ${module_name}
done
for i in ${!days[@]}
do
echo ${days[$i]}
done
函数
参数处理 | 说明 |
---|---|
$# | 传递到脚本或函数的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
funWithParam(){
echo "第一个参数为 $1 !"
echo "第二个参数为 $2 !"
echo "第十个参数为 $10 !"
echo "第十个参数为 ${10} !"
echo "第十一个参数为 ${11} !"
echo "参数总数有 $# 个!"
echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
# 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
echo $? # 获取返回值
十二、Linux服务管理
服务简介与分类
服务的分类
查询已安装的服务
RPM包安装的服务
chkconfig –list
查看服务自启动状态,可以看到所有RPM包安装的服务
源码包安装的服务
服务安装的位置,一般是/usr/local下
区别就是安装位置的不同
源码包 /usr/local/
RPM包安装在默认位置中
RPM包安装服务的管理
独立服务的管理
RPM包安装服务的位置
源码包一般是/usr/local
RPM包安装在默认位置
文件
- /etc/init.d 启动脚本位置
- /etc/sysconfig 初始化环境配置文件位置
- /etc/ 配置文件位置
- /etc/xinetd.conf xinetd配置文件
- /etc/xined.d 基于xinetd服务的启动脚本
- /var/lib 服务产生的数据放在这里
- /var/log 日志
独立服务的启动
/etc/init.d/独立服务名 start|stop|status|restart
service 独立服务名 start|stop|status|restart
独立服务的自启动
chkconfig [–level 运行级别] [独立服务名] [on|off]
0 1 2 3 4 5 6
修改/etc/rc.d/rc.local文件
ntsysv命令管理自启动
- tab进入菜单
基于xinetd服务的管理
安装xinetd和telnet
yum -y install xinetd
yum -y install telnet-server
xinetd服务的启动
vi /etc/xinetd.d/telnet
重启xinetd服务
service xinetd restart
xinetd服务的自启动
chkconfig telnet on
ntsysv
源码包安装服务的管理
源码包安装服务的启动
使用绝对路径,调用启动脚本来启动。不同源码包的启动脚本不同,可以查看源码包的安装说明,查看启动脚本的方法
源码包服务的自启动
vi /etc/rc.d/rc.local
/usr/local/apache2/bin/apachectl start
让源码包服务被服务管理命令识别
让源码包的apache服务能被service命令管理启动
软连接
ln-s /usr/local/apache2/bin/apachectl /etc/init.d/apache
让源码包的apache服务能被chkconfig与ntsysv命令管理自启动
vi /etc/init.d/apache
# chkconfig: 35 86 76
#指定httpd脚本可以被chkconfig命令管理。格式是:chkconfig:运行级别启动顺序关闭顺序
# description: source package apache
chkconfig –add apache
服务管理总结
十三、linux系统管理
进程管理
进程简介
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
进程管理的作用
判断服务器健康状态
查看系统中所有进程
杀死进程
查看系统中所有进程
ps aux 查看系统中所有进程,使用BSD操作系统格式
ps -le 查看系统中所有进程,使用Linux标准命令格式
ps -ef
查看系统健康状态
vmstat
iostat IO
sar cput 、内存、IO
top [选项]
-d 秒数:指定top命令更新时间
?或h 显示交互模式的帮助
P CPU使用率排序
M 内存排序
N PID排序
q 退出
任务队列
时间 | 运行时间 | 登录用户 | 系统负载(1,5,15分钟)
进程信息
总进程数 | 运行进程数 | 睡眠的进程 | 停止的进程 | 僵尸进程
CPU信息
用户模式% | 系统模式% | 改变过优先级的用户进程% | 空闲CPU% | 等待输入输出% | 硬中断请求服务% | 软中断请求服务% | 虚拟时间%
物理内存信息
物理内存总量 | 已经使用的 | 空闲的 | 缓冲的
交换分区信息
交换分区总大小 | 已经使用的 | 空闲的 | 缓存的
查看进程树
pstree [选项]
-p 显示进程的PID
-u 显示进程的所属用户
终止进程
kill命令
kill -l 查看可用的进程信号
1重启 9强制终止 15正常结束
kill -9 22368 #强制杀死进程22368
killall命令
killall [选项] [信号] 进程名 #按照进程名杀死进程
-i 询问是否杀死
-I 忽略大小写
pkill命令
pkill [选项] [信号] 进程名 #按照进程名终止进程
-t 终端号:按照终端号踢出用户
w 使用w命令查询本机已经登录的用户
pkill -t -9 pts/1
工作管理
把进程放入后台
tar -zcf root.tar.gz / &
运行时 ctrl + z
查看后台的工作
jobs [-l]
-l 显示工作的PID
将后台暂停的工作恢复到前台执行
fg %工作号 %可以省略,工作号是jobs的
把后台暂停的工作恢复到后台执行
bg %工作号
vim等不能恢复
系统资源查看
vmstat 命令监控系统资源
vmstat [刷新延时 刷新次数]
vmstat 1 3
dmesg 开机时内核检测信息
dmesg | grep CPU
free 命令查看内存使用状态
free [-b|-k|-m|-g]
-b 以字节为单位显示
-k 以kb为单位显示
-m 以MB为单位显示
-g 以GB为单位显示
-s 10 十秒刷新
缓存和缓冲的区别
缓存cache:加速硬盘数据读取
缓冲buffer:加速数据写入硬盘
查看CPU信息
cat /proc/cpuinfo
uptime命令
uptime
显示系统的启动时间和平均负载,也就是top命令的第一行。w命令也可以看到这个数据
查看系统与内核相关信息
uname [选项]
-a:所有相关信息
-r:内核版本
-s:内核名称
判断当前系统的位数
file /bin/ls
查询当前Linux系统的发行版本
lsb_release -a
列出进程打开或使用的文件信息
lsof [选项]
-c 字符串:只列好处以字符串开头的进程打开的文件
-u 用户名:列出某个用户的进程打开的文件
-p pid:列出某个PID进程打开的文件
系统定时任务
crond服务管理与访问控制
service crond restart
chkconfig crond on
用户的crontab设置
crontab [选项]
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除所有crontab任务
crontab -e 进入编辑
任务
分钟/小时 小时/天 天/月 月/年 周几/周
分、时、日、月、周几
特殊符号
符号 | 含义 |
---|---|
* | 任何时间 |
, | 不连续的时间 |
- | 连续的时间段 |
*/n | 每隔多久 |
十四、日志管理
日志管理简介
日志服务
- 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。
- rsyslogd的新特点
- 基于TCP网络协议传输日志信息;
- 更安全的网络传输方式;
- 有日志消息的及时分析框架
- 后台数据库;
- 配置文件中可以写简单的逻辑判断;
- 与syslog配置文件相兼容
确定服务启动
ps aux | grep rsyslogd
#查看服务是否启动
chkconfig –list | grep rsyslog
#查看服务是否自启动
常见日志的作用
- 除了系统默认的日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log/目录中(源码包安装的服务日志是在源码包指定目录中)。不过这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身日志
rsyslogd日志服务
日志文件格式
- 事件发生时间
- 发生事件的服务器的主机名
- 发生事件的服务名或程序名
- 事件的具体信息
/etc/rsyslog.conf配置文件
authpriv.* /var/log/secure
#服务名称[连接符号]日志等级日志记录位置
#认证相关服务.所有日志等级记录在/var/log/secure日志中
服务名称
连接符号
日志等级
日志记录位置
日志文件的绝对路径,如“/var/log/secure“
系统设备文件,如“/dev/lp0”
转发给远程主机,如“@192.168.0.210:514”
用户名,如“root”
忽略或丢弃日志,如“~”
日志轮替
日志文件的命名规则
- 如果配置文件中拥有“dateext”参数,那么日志会用日期来作为日志文件的后缀,例如“secure-20130605”。这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。
- 如果配置文件中没有“dateext”参数,那么日志文件就需要进行改名了。当第一次进行日志轮替时,当前的“secure”日志会自动改名为“secure.1”,然后新建“secure”日志,用来保存新的日志。当第二次进行日志轮替时,“secure.1”会自动改名为“secure.2”,当前的“secure”日志会自动改名为“secure.1”,然后也会新建“secure”日志,用来保存新的日志,以此类推
logrotate配置文件
把apache日志加入轮替
vi /etc/logrotate.conf
/usr/local/apache2/logs/access_log {
daily
create
rotate 30
}
logrotate命令
logrotate [选项] 配置文件名
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替
-v:显示日志轮替过程。加了-v选项,会显示日志的轮替的过程
-f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替
十五、启动管理
6.x启动管理
系统运行级别
0 关机
1 单模式(安全模式)
2 不完全命令行模式,不含NFS服务
3 完全命令行模式
4 系统保留
5 图形模式
6 重启动
运行级别命令
runlevel #查看运行级别命令
init 运行级别 #改变运行级别命令
系统默认运行级别
vim /etc/inittab
id:3:initdefault
系统启动过程
启动引导程序grub
系统修复模式
十六、备份与恢复
备份概述
Linux系统需要备份的数据
/root/
/home/
/var/spool/mail
/etc/
安装服务的数据
apache需要备份的数据
配置文件
网页主目录
日志文件
mysql需要备份的数据
- 源码包安装的mysql:/usr/local/mysql/data/
- RPM包安装的mysql:/var/lib/mysql/
备份策略
完全备份/增量备份/差异备份
dump和restore命令
dump命令
dump [选项] 备份之后的文件名 原文件或目录
-level 0-9十个备份级别
-f 文件名: 指定备份之后的文件名
-u: 备份成功之后,把备份时间记录在/etc/dumpdates文件
-v: 显示备份过程中更多的输出信息
-j: 调用bzlib库压缩备份文件,其实就是把备份文件压缩为.bz2格式,默认压缩等级是2
-W: 显示允许被dump的分区的备份等级及备份时间
备份分区
dump -0uj -f /root/boot.bak.bz2 /boot/
#备份命令。先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates
#查看备份时间文件
cp install.log /boot/
#复制日志文件到/boot分区
dump -1uj -f /root/boot.bak1.bz2 /boot/
#增量备份/boot分区,并压缩
dump –W
#查询分区的备份时间及备份级别的
备份文件或目录
dump -0j -f /root/etc.dump.bz2 /etc/
#完全备份/etc/目录,只能使用0级别进行完全备份,而不再支持增量备份
restore命令
restore [模式选项] [选项]
-C 比较备份数据与实际数据的变化
-i 手工选择需要恢复的文件
-t 查看模式,查看备份文件中拥有哪些数据
-r 还原模式
-f 指定备份文件的文件名
比较备份数据和实际数据的变化
mv /boot/vmlinuz-2.6.32-279.el6.i686 /boot/vmlinuz-2.6.32-279.el6.i686.bak
#把/boot目录中内核镜像文件改个名字
restore -C -f /root/boot.bak.bz2
#restore发现内核镜像文件丢失
查看模式
restore -t -f boot.bak.bz2
还原模式
#还原boot.bak.bz2分区备份
#先还原完全备份的数据
mkdir boot.test
cd boot.test/
restore -r -f /root/boot.bak.bz2
#解压缩
restore -r -f /root/boot.bak1.bz2
#恢复增量备份数据
#还原/etc/目录的备份etc.dump.bz2
restore -r -f etc.dump.bz2
#还原etc.dump.bz2备份
mysql备份
backup
#!/bin/bash
# 数据库相关信息
DB_SERVER=wechat
DB_USERNAME=root
DB_PASSWORD=
# 相关文件路径
DUMP_BIN=/usr/bin/mysqldump
BASE_DIR=/var/backups/mysql/
# 备份数据库
DATABASES=(signf2f subscribe ticknet weixin)
cd $BACKUP_DIR
for DATABASE in ${DATABASES[@]};
do
date=`date +%Y%m%d-%H%M%S`
BACKUP_DIR=${BASE_DIR}${DATABASE}/
TARGZ_FILE="$DB_SERVER-$DATABASE-$date.tar.gz"
# 创建备份目录
if [ ! -d $BACKUP_DIR ];
then
mkdir -p "$BACKUP_DIR"
fi
cd $BACKUP_DIR
$DUMP_BIN -u$DB_USERNAME -p$DB_PASSWORD $DATABASE | gzip > $TARGZ_FILE
#curl -T $TARGZ_FILE $UPYUN_URL/$DB_SERVER/$DATABASE/$TARGZ_FILE -u $UPYUN_USER:$UPYUN_PASS -v
done
delete
#!/bin/bash
# 相关文件路径
BASE_DIR=/var/backups/mysql/weixin
BASE_DIR2=/var/backups/mysql/signf2f
BASE_DIR3=/var/backups/mysql/secret
# 删除5天之前的数据
cd $BASE_DIR
rm -rf `find ./ -ctime 0 -name 202*`
cd $BASE_DIR2
rm -rf `find ./ -ctime +5`
cd $BASE_DIR3
rm -rf `find ./ -ctime +5`
docker
#!/bin/bash
docker exec -i mydb bash <<'EOF'
mkdir -p /backup/mysql/$(date +%Y%m%d)
# 备份指定数据库
mysqldump -uroot -proot library > /backup/mysql/$(date +%Y%m%d)/library_$(date +%Y%m%d_%H%M%S).sql
# 备份所有数据库
mysqldump --no-defaults --events --all-databases -uroot -p mingyuefusu! > /backup/mysql/$(date +%Y%m%d)/library_$(date +%Y%m%d_%H%M%S).sql
exit
EOF
mkdir -p /server/backup/mysql/$(date +%Y%m%d)
docker cp mydb:/backup/mysql/$(date +%Y%m%d) /server/backup/mysql/
十七、其他
Deepin
安装c++
sudo apt-get install build-essential
sudo apt-get install gdb
ssh登录
sudo apt-get install openssh-server
1、安装SSH服务
sudo su
apt-get install openssh-server
2、配置端口
gedit /etc/ssh/sshd_config
port 22 处即为修改端口的地方,默认不修改也可。
3、重启SSH服务端
sudo /etc/init.d/ssh start 或者 service ssh start
4、使用xshell工具连接
配置好住账号(Linux用户名)、密码、端口,点击连接就可以连上了!
常用命令汇总
查看系统信息
内核版本信息
cat /proc/version
uname -a
uname -r
系统版本
cat /etc/issue
cat /etc/lsb_release
lsb_release -a
# redhat
cat /etc/redhat-release
权限控制
# 读(r=4),写(w=2),执行(x=1)
# 文件所有者, 与文件所有者同属一个用户组, 其它用户组
chmod 777
chmod 751
# https://blog.csdn.net/bmbm546/article/details/6875972
# 设置文件夹权限
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:用户组名称 文件或目录
# 修改主人和组
sudo chown -R minyue:sudo lost_admin
# 给组权限
chmod g+rw testFile
root
sudo su
SSH版本
下载相关tar.gz包,没有下载到的,可以在这里下载。http://download.csdn.net/download/songanshu/10023663
拷贝三个包(openssh-7.5p1.tar.gz、openssl-1.0.2l.tar.gz、zlib-1.2.11.tar.gz)到home目录下的openssh7.5目录下
cd /home
sudo mkdir openssh7.5
sudo chmod -R 777 openssh7.5
cd /home/openssh7.5
tar -zxvf zlib-1.2.11.tar.gz
tar -zxvf openssl-1.0.2l.tar.gz
tar -zxvf openssh-7.5p1.tar.gz
# 1
cd /home/openssh7.5/zlib-1.2.11
./configure
make && sudo make install
# 2
cd /home/openssh7.5/openssl-1.0.2l
./config shared zlib #一定要加上shared 参数,要不在安装openssh的时候就无法找到
# ./configure
make && sudo make install
# 3
cd /home/openssh7.5/openssh-7.5p1
./configure --with-ssl-dir=/home/openssh7.5/openssl-1.0.2k
make && sudo make install
sudo vim /etc/passwd
# 最后一行添加
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sudo reboot
ssh -V
sudo chmod 751 /home/openssh7.5
Ubuntu
sudo ufw allow 8082
开放端口
yum无效
\1. Go to /etc/yum.repos.d/\ directory:
# cd /etc/yum.repos.d/
\2. Make copy of original file:
# cp CentOS-Base.repo CentOS-Base.repo.old
\3. Open and edit file with any text editor:
# vi CentOS-Base.repo
\4. Replace mirrorlist‘s
Replace sections:
[base]
[updates]
[extras]
With following:
[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=https://vault.centos.org/6.10/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# released updates
[updates]
name=CentOS-$releasever - Updates
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=https://vault.centos.org/6.10/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
# baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=https://vault.centos.org/6.10/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
\5. Clean yum cache
# yum clean all
\6. Run again yum update command:
# yum update
Now you can successfully update your CentOS 6.
小问题
命令行无颜色
查看home目录下.bashrc和.bash_profile文件是否存在:
ls -la ~/.bash*
若.bashrc不存在,则从另外的用户拷贝一个即可,并通过命令source ~/.bashrc
使颜色属性生效。
而用户建立连接时,系统不会调用.bashrc, 而是调用 .bash_profile
文件,所以我们需要创建该文件,并加上如下内容:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
f