目录
- diff 命令按行比较文件内容差别
例:
[root@zhangzhen ~]# diff ett.txt test.txt
1c1,3
< olddwindows
---
>test
最小化原则:
- 安装系统最小化
- 开启程序服务最小化原则
- 操作最小化原则。rm -f test.txt
- 登陆最小化原则,平时没有需求不用root登陆,要用普通用户登陆
- 配置参数要合理,不要最大化
1. 创建用户
[root@zhangzhen ~]# useradd oldboy
[root@zhangzhen ~]# passwd oldboy
更改用户 oldboy 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@zhangzhen ~]# #代表超级用户下
[oldboy@zhangzhen ~]$ $普通用户
小结:
超级用户root切换到普通用户下面,不需要密码。
普通用户切换到root或其他普通用户下,需要对应的密码。
whoami 查看当前命令行终端用户
2. 使用更新源的国内镜像
Linux下方便安装软件的工具叫做yum工具,Linux的二进制软件包一般是rpm包,类似于Windows下的exe程序。
通过yum工具来安装软件,默认获取rpm包的软件配置是从国外centos官方源下载。
因此,我们yum安装软件速度会变的比较慢,因此需要把默认获取rpm包配置从国外源改成国内的yum源。
网易开源镜像网站:https://mirrors.163.com/
1)通过yum安装wget命令
[root@localhost yum.repos.d]# yum install -y wget
2) 通过yum安装本地源仓库
安装前先备份源配置文件:
[root@localhost yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.ori
通过wget安装本地源仓库:
[root@localhost yum.repos.d]# wget https://mirrors.163.com/.help/CentOS7-Base-163.repo
3)下载完成后替换源配置文件
[root@localhost yum.repos.d]# cp CentOS7-Base-163.repo CentOS-Base.repo
cp:是否覆盖"CentOS-Base.repo"? y
运行yum makecache生成缓存:
[root@localhost yum.repos.d]# yum makecache
安装必要的软件包:
[root@localhost yum.repos.d]#yum install tree telnet dos2unix sysstat lrzsz
telnet 测试用的 dos2unix转码用的 sysstat性能监控
[root@localhost yum.repos.d]#yum upgrade 系统全部更新成最新(一般不用)
[root@localhost yum.repos.d]#yum grouplist 查看当前系统下,安装了哪些软件包
3. 安装后的基本调优及安全设置
简单优化Linux
Selinux,SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现。
1)关闭Selinux
方法1
方法1:配置文件在:[root@localhost ~]# cat /etc/selinux/config 修改配置文件SELINUX=disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced. 激活的状态。
# permissive - SELinux prints warnings instead of enforcing. 是警告,但是没有激活。
# disabled - No SELinux policy is loaded. 没有激活的状态。
SELINUX=enforcing
方法2
[root@localhost ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config
[root@localhost ~]# grep "disabled" /etc/selinux/config
# disabled - No SELinux policy is loaded.
SELINUX=disabled
sed的替换命令格式:s/A/B/g 或者 s#A#B#g 或者 s_A_B_g#
s 用一个字符串替换另一个
g 在行内进行全局替换
详情参数连接:https://www.cnblogs.com/ftl1012/p/sed.html/.
[root@localhost ~]# getenforce 查看当前的状态
Enforcing 激活状态
修改临时状态:
[root@localhost ~]# setenforce 0 临时生效
[root@localhost ~]# getenforce 查看当前的状态
Permissive 是警告,但是没有激活。
2)查看自己当前是在什么模式下(0-6),默认是在init 3模式下
配置文件:[root@localhost ~]# cat /etc/inittab
[root@localhost ~]# runlevel 查看当前系统运行级别
#init 0 - 停机(千万不能把initdefault 设置为0 )
init 1 - 单用户模式,只root用户进行维护
init 2 - 多用户,不能使用NFS(Net File System) 不联网
init 3 - 完全多用户模式(标准的运行级)
init 4 - 安全模式
init 5 - X11 (xwindow) 图形化界面模式
init 6 - 重新启动 (千万不要把initdefault 设置为6 )
4. 更改ssh服务远程登陆的配置
Windows:默认远程端口:port 3389
Linux:默认远程端口:port 22
Linux下ssh默认配置文件位置:[root@localhost ~]# ll /etc/ssh/sshd_config
1)备份配置文件
[root@localhost ssh]# cp sshd_config sshd_config.ori
2) 编辑配置文件
[root@localhost ssh]# vi sshd_config
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22 默认是22,端口范围:0-65535,1024以下是系统保留的,从1024-65535是用户使用的
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
40 #PermitRootLogin yes “#”去掉,禁止root用户通过ssh登陆。 yes改成no
66 #PermitEmptyPasswords no “#”去掉,no改成yes,可以使用空密码登陆
17 Port 52113 默认是22,端口登录号改成52113
117 #UseDNS yes “#”去掉,yes改成no,不使用DNS登陆
如普通用户登陆不上去,关闭iptables
查看当前正在被哪些ip用户登陆
[root@localhost sysconfig]# netstat -an|grep 192.168.220.10
tcp 0 0 192.168.220.10:22 192.168.220.1:62282 ESTABLISHED
虚拟机 当前使用电脑
5. 将oldboy普通账号加入到sudo管理
sudo 可以让普通用户拥有指定的root权限功能
在root用户下执行 which useradd查看useradd的全路径
1) sudo配置文件,用户添加命令权限:
[root@localhost ~]# visudo 相当于直接编辑/etc/sudoers
100 root ALL=(ALL) ALL
101 oldboy ALL=(ALL) /sbin/useradd 使oldboy有创建用户的权限
------------
101 oldboy ALL=(ALL) NOPASSWD:ALL 普通用户切换的root的时候不需要密码
用户 机器 路径
%用户组 机器 路径
[oldboy@localhost ~]$ sudo su -
[root@localhost ~]#
普通用户可以创建账号了
[oldboy@localhost ~]$ sudo useradd kkk
[sudo] oldboy 的密码:
[oldboy@localhost ~]$ tail -1 /etc/passwd 查看passwd配置文件最后一行
kkk:x:1001:1001::/home/kkk:/bin/bash kkk是添加的普通用户
2) 普通用户组可以查看当前有哪些sudo下的命令
[oldboy@localhost ~]$ sudo -l
[root@localhost ~]# su - oldboy
上一次登录:四 4月 30 18:07:36 CST 2020pts/1 上
[oldboy@localhost ~]$ sudo -l
匹配 %2$s 上 %1$s 的默认条目:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME
LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
用户 oldboy 可以在 localhost 上运行以下命令:
(ALL) NOPASSWD: ALL
3) netstat查看网络状态lntup或an
[root@localhost ~]# netstat -lntup |grep ssh 查看用户ssh开放的端口
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 26975/sshd
tcp6 0 0 :::22 :::* LISTEN 26975/sshd
6. 修改中文显示
什么是字符集?
字符集是一套文字符号及其编码,常用的符号有:
GBK 定长 双字节 不是国际标准,支持的系统不少
UTF-8 非定长 1-4字节 广泛支持,MySQL也使用UTF-8
字符集默认配置文件在:
[root@localhost ~]# cat /etc/sysconfig/il8n
查看当前的字符集有哪些:
[root@localhost ~]# echo $LANG
zh_CN.UTF-8
把字符改成英文:
[root@localhost ~]# LANG=EN
重置默认字符:[root@localhost ~]# source /etc/locale.conf
7. 服务器时间同步
Linux系统的时间同步,一般都是ntp服务时间同步
1) 系统方法
[root@localhost ~]# which ntpdate
/usr/sbin/ntpdate
临时和系统的时间同步
[root@localhost ~]# /usr/sbin/ntpdate time.nist.gov 临时与系统时间同步
30 Apr 20:00:21 ntpdate[49848]: adjust time server 132.163.96.1 offset 0.002108 sec
设置系统定时,每五分钟与系统同步一次
定时任务:
[root@localhost ~]# echo 'time sync by oldboy at 2010-2-1' >>/var/spool/cron/root
[root@localhost ~]# echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1' >> /var/spool/cron/root
用crontab -l 检查,出现下面的表示正常
[root@localhost ~]# crontab -l
time sync by oldboy at 2010-2-1
*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1
8. 加大服务器文件描述符 ulimit
unix/liux 里面,你的服务只要开启一个进程,就要占用文件描述符的。liunx 默认 是 1024,如果描述符少了,你的访问量多了,你的服务器支撑不了,所以要把描述符加大。
有的时候,你的服务器硬盘/内存没那么大,如果文件描述符过大,访问量过来,有可能把服务器搞垮。但是通常都改成65535
查看当前文件描述符数量
[root@localhost ~]# ulimit -n
1024
1) 方法1:临时加大文件描述
[root@localhost ~]# ulimit -HSn 65535
[root@localhost ~]# ulimit -n
65535
2) 方法2:永久加大文件描述
配置文件:/etc/security/limits.conf
echo命令追加到结尾:
[root@localhost ~]# echo '* - nofile 65535 ' >>/etc/security/limits.conf
tail -1 查看最后一行是否添加成功:
[root@localhost ~]# tail -l /etc/security/limits.conf
9. 登陆界面隐藏系统版本号
1)配置文件
[root@localhost ~]# cat /etc/issue
\S
Kernel \r on an \m
2)清空文件的两种命令
[root@localhost ~]# > /etc/issue
[root@localhost ~]# cat /dev/null > /etc/issue
以上两种都是清空登陆界面系统版本号。
10. 锁定关键系统文件
chattr +i 后面跟绝对路径是加锁文件
chattr -i 后面跟绝对路径是解锁文件
文件加锁:
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
[root@localhost ~]# rm -f /etc/passwd
rm: 无法删除"/etc/passwd": 不允许的操作
查看文件属性是否加锁,i代表加锁:
[root@localhost ~]# lsattr /etc/passwd
------i--------- /etc/passwd
文件解锁:
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
Linux基础优化回顾,小结
1)不用root,添加普通用户,通过sudo授权管理。
2)更改默认的远程连接SSH服务端口及禁止root用户远程连接。
3)定时自动更新服务器。
4)配置yum更新源,从国内更新源下载安装rpm包。
5)关闭selinux及iptabless(iptabless工作场景如果有 wan ip 一般要打开,高并发除外)。
6)调正文件描述符的数量。
7)锁定关键系统文件.加锁:chattr +i 绝对路径,chattr -i 绝对路径。