第六节 Linux系统基础优化

标签(空格分隔):Linux实战教学笔记-陈思齐


第1章 基础环境


第2章 使用网易163镜像做yum源

默认国外的yum源速度很慢,所以换成国内的。

第一步:先备份

mkdir backup

mv C* backup/

第二步:下载163yum源

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

第三步:清除旧缓存

yum clean all

第四步:创建新缓存

yum makecache

第五步:安装必要的软件包

yum -y install tree nmap sysstat gcc gcc-c++ make telnet


第3章 关闭SElinux功能

SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,这个功能让系统管理员又爱又恨,这里我们还是把它关闭了吧,至于安全问题,后面通过其他手段来解决,这也是大多数生产环境的做法,如果非要开启也是可以的。关闭方式如下。

  • 修改配置文件,使关闭SElinux永久生效:

/etc/selinux/config :selinux的配置文件

可以直接vi(vim)修改或者用sed -i直接对配置文件进行修改。

  • 临时关闭SElinux,可在命令行执行如下命令:

命令说明

  • setenforce:用于命令行管理SELinux的级别,后面的数字表示设置对应的级别
  • getenforce:查看SElinux当前的级别状态

提示:修改配置SElinux后,要想使生效,必须要重启系统。因此,可配合使用setenforce 0 这个临时关闭的命令,这样在重启前后都可以使得SElinux关闭生效了,也就是说无需立刻重启服务器了,在生产环境下Linux机器是不能随意重启。

小结

  1. 备份/etc/selinux/config
  2. 修改配置文件(重启服务器生效)

    sed -i '7 s/enforcing/enabled/g' /etc/selinux/coinfig
  3. 命令行(临时,重启后失效)

    setenforce 0

    getenforce

第4章 关闭iptalbes防火墙

关闭防火墙的目的是为了让初学者学习更方便,将来在学了iptables技术后可再统一开启。在企业环境中,一般只有配置外网IP的linux服务器才需要开启防火墙,但即使是有外网IP,对于高并发高流量的业务服务器仍是不能开的,因为会有较大性能损失,导致网站访问很慢,这种情况下只能在前端加更好的硬件防火墙了。

  • 关闭防火墙的具体操作过程如下:


第5章 设定linux运行级别为3(文本模式)

设定运行级别(runlevel)为3,即表示使用文本命令行模式管理Linux。

/etc/inittab :开机启动模式配置文件

模式3:对系统资源的占用最低,所以改成3对系统进行优化

模式5:桌面模式,如果没有装桌面就进不去了

命令:init 0 可以直接关闭计算机

命令:init 6 可以直接重启计算机

命令:init x(模式) 用来临时切换linux运行模式

runlevel命令可以查看当前的运行模式

重点

必须掌握linux的启动流程

必须掌握linux系统的7中运行级别

必须会临时切换,永久修改linux的启动模式


第6章 精简开机系统启动

系统必须开启的5个服务

  • sshd
  • crond
  • rsyslog
  • sysstat
  • network

一条命令关闭其他所有不必要的服务



----------

第7章 添加普通用户账号

  • linux/unix是一个多用户,多任务的操作系统。
  • 超级管理员(root):root默认在unix/linux操作系统中拥有最高的管理全县。
  • 普通用户:管理员或者具备管理权限的用户创建的。权限:系统管理仅可以读,看,不能增,删,改。

权限越大,责任越大

  • 可以使用如下命令添加一个普通用户账号,并为其设置口令:

  • 一般情况下,在企业环境中应尽量避免直接到root用户下操作,除非有超越普通用户权限的系统维护需求,使用完后立刻退回到普通用户。
  • 还可通过下面的命令一步到位的设置密码(其中,chensiqi为用户名,密码为123456)

    echo "123456" | passwd --stdin chensiqi && history -c

--stdin为免交互模式

必须先创用户后,才能给用户设置密码,不然系统会找不到这个用户的。

注意:这种方式虽然能免提示的直接创建用户,但是密码信息都被记录在了命令的历史记录里,因此,在创建完成以后切记history

-c 清空命令的历史记录信息。

尝试切换用户角色:



说明:

  1. 超级用户root切换到普通用户下面,无需输入对应用户密码,这相当于“皇帝”去“大臣”家里。
  2. 普通用户切换到root或其他普通用户下,需要输入切换的对应用户密码
  3. 普通用户的权限比较小,只能进行基本的系统信息查看等操作,无法更改系统配置和管理服务
  4. $符号是普通用户的命令提示符,#符号是超级管理员的提示符。示例如下:

  5. 提示符@前面的字符代表当前用户(可用whoami查询),后面的为主机名(可用hostname查询),~所在的位置是窗口当前用户所在的路径。示例如下:

  6. Linux命令提示符由PS1环境变量控制。示例如下:



    这里的PS1=‘[\u@\h\W]\$’,可以通过全局变量配置文件/etc/profile来调整。

  7. 利用sudo控制用户对系统命令的使用权限

    不用root账号是安全了,但管理不方便了,为既安全又管理方便,可将需要root权限的普通用户加入sudo管理,这样用户就可以通过自己的普通账户登陆实现利用root的权限来管理系统了,当然也就不需要有root账号及密码了。

====>用户管理深度讲解(企业案例)

执行如下visudo命令,即可打开sudo的配置文件进行编辑。

使用visudo命令等效于vim /etc/sudoers(sudo的配置文件)

在/etc/sudoers 文件大约91行的下边添加需要提升为root权限的普通用户名及对应权限,格式如下(下图有误,是91行那个):

  • visudo或者vi /etc/sudoers,在91行下边加入,或者其他位置加入皆可。
  • root ALL=(ALL):此为91行
  • chensiqi ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel :此为添加的行
  • 这句话的意思是对任意主机名的chensiqi用户授权使用useradd和userdel两个命令。

提示:

  • 如果chensiqi用户被授予上述权限,那么它可在所有的机器上运行useradd,userdel命令

  • 如果是针对用户组,则对应的授权命令如下: % 用户组 机器=(授权使用哪个角色的权限) /usr/sbin/useradd

  • 通过sudo进行授权管理系统的的:即能让运维人员干活,又不能威胁系统安全,其实就是前面讲的用户权限最小化原则,还可以审计用户使用sudo的提权操作命令。

为了管理方便,这里暂时给chensiqi授权all权限,即可以管理整个系统

  • 第一步,输入visudo找到91行,在行下加入内容

  • NOPASSWD:ALL:NOPASSWD表示提权执行命令免密码,ALL表示可拥有所有权限
  • 也可以直接仿照91行样例ALL=ALL,也是所有权限,但是提权时会要求输入密码
  • 第二步,修改完毕后,要进行检查

也可以使用快速操作命令增加sudo权限,仅限于批量管理的情况:

\cp /etc/sudoers /etc/sudoers.bak

echo "chensiqi ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers

visudo -c :直接追加没有语法检查,因此要单独执行语法检查

  • 第三步,此时再登陆chensiqi用户,就可以通过执行类似sudo ls -l /root (sudo后面追加正常命令)的命令来以root用户的权限管理系统了,如下:



说明

  • 通过sudo授权管理后,所有用户执行授权的特殊权限格式为“sudo”命令
  • 如果需要切换到root执行相关操作,可以通过“sudo su -”命令,注意,此命令提示的密码为当前用户的密码,而不是root密码。

    执行“sudo -l”命令可以查看当前用户被授权的sudo权限集合。

  • 对于linux系统bash的内置命令,一般无法进行sudo授权,例如:cd命令等。
  • 在生产环境中,通常会禁止root远程登录,不过,会为每个运维人员建立一个普通账号,然后根据运维人员的需求,通过sudo控制登陆系统的权限2,事实证明这是一个不错的权限管理方式。当然,在有的生产环境里可能还会使用一种叫做ldap的统一认证登陆及授权管理的方式。即只要有一个账号和密码,全公司多个机房系统内通行无阻(系统登陆,svn,vpn等),有关这部分内容的讲解,以后根据情况在另行添加。在此,先了解即可。
  • 普通用户的环境变量问题:在早期的Centos5系统中,普通用户执行系统管理相关命令会遭遇到环境变量问题,导致找不到执行的命令(Centos6以后的系统不存在这个问题,这里就不提了)

    sudo授权对于bash的内置命令处理,是个难题,因为内置命令没有实体文件和路径,不过一般都有解决办法例如可以使用sudo ls替代sudo cd,有的人使用sudo bash后在使用内置命令,这是很危险的,不推荐。


第8章 Linux系统安全最小化原则说明

最小化原则对Linux系统安全来说极其重要:即多一事不如少一事。具体包括如下几个基本方面:

  • 安装Linux系统最小化,即选包最小化,yum安装软件包也要最小化,无用的包不装
  • 开机自启动服务最小化,即无用的服务不开启。
  • 操作命令最小化。例如:能用“rm -f test.txt” 就不用“rm -fr test.txt”.
  • 登陆linux用户最小化。平台没有特殊需求不登陆root,用普通用户登录即可。
  • 普通用户授权权限最小化,即只给用户必须的管理系统的命令,不能啥都可以干。
  • Linux 系统文件及目录的权限设置最小化,禁止随意创建,更改,删除文件
  • 程序服务运行最小化,即程序服务运行应尽量不用root身份运行。

第9章 更改SSH服务端远程登录的配置

windows服务器的默认远程登陆端口是3389,管理员用户是administrator,普通用户是guest。Linux的管理用户是root,普通用户默认有很多个,远程连接默认端口port22.这些通常搞IT的人都知道。那么黑客是否也知道呢?他们当然知道,甚至比我们更清楚,所以,为了系统安全要隐藏或更改上述默认的配置才行。更改配置的命令如下:

说明:

  • Port:代表端口,后边的数字代表sshd服务监听的是哪个端口
  • PermitRootLogin :yes代表允许root用户远程登录,no代表不允许(如果是no则所有远程登陆连接都不能用root用户登陆,普通用户可以正常连接)
  • PermitEmptyPasswords:yes代表允许用户输入空的登陆密码,no代表不允许

    UseDNS:指定sshd是否应该对远程主机名进行反向解析,以此检查此主机名是否与IP地址真实对应。默认值“yes”

    建议改成“no”,否则可能会导致SSH连接很慢
  • 将以上信息更改后,保存退出
  • 执行如下命令重启sshd,使修改的配置生效



    提示:reload为平滑重启,不影响正在SSH连接的其他用户,因此要好于restart。

除了前面介绍的安全知识外,还有更高级的SSH安全策略,具体如下:

  1. 更改SSH监听的IP,使仅监听内网IP

  2. 通过防火墙限制仅能使用内网IP去连接此服务器
  3. 通过拨号到VPN服务器然后从局域网访问这些服务器,提升安全。
  4. 工作中的系统安全重点就是互联网TCP/IP连接,对外的Web服务端口http80和https443的安全控制

第10章 Linux中文显示设置

此项优化为可选项,即调整Linux系统的字符集设置,那么,什么事字符集?

简单的说,字符集就是一套字符号及其编码。目前Linux下常用的字符集有:

  • GBK:定长,双字节,不是国际标准,支持的系统不少,实际企业用的不多。
  • UTF-8:非定长,1~4字节,广泛支持,MYSQL也使用UTF-8,企业广泛用。可以通过快捷的命令方式在/etc/sysconfig/i18n中添加如下内容,使其支持中文显示:

临时支持中文:



永久支持中文



注意,还得source一下这个文件或者重启计算机

小结:

echo $LANG:查看系统当前的字符集

/etc/sysconfig/i18n 系统字符集的配置文件

source 文件名,让配置文件立刻生效

提示

  • 乱码的核心解决方法:

    (1)系统字符集(UTF-8)

    (2)xshell软件的字符集保持一致(UTF-8)
  • 注意“zh-CN.UTF-8”的大小写字母
  • 这个中文显示配置需要跟你自己的SSH客户端的配置一致

第11章 linux特殊变量===调整历史记录以及终端超时

11.1 命令行临时生效:

  • export TMOUT=300:连接超时时间控制变量
  • export TMOUT=3:3秒之后,没有任何输入,则自动退出。
  • expoort HISTSIZE=5:history size 命令行历史记录数量,history命令显示的条数
  • export HISTFILESIZE=5:命令行命令对应的历史记录文件,文件中命令记录数,

11.2 永久生效

  • 放入到/etc/profile后
  • source 生效

第12章 隐藏Linux版本信息显示

  • 在登陆到Linux主机本地(非CRT连接的窗口)前,会显示系统的版本和内核。
  • 我们登陆以后在/etc下找到issue这个文件以及issue.net这个文件,cat下。看看是不是很眼熟。

第13章 虚拟机VMware的克隆bug

  • 我们在用虚拟机克隆多台机器,搭建集群环境的时候,可能会出各种各样的bug,比如mac地址冲突,比如网卡无法启动,再比如无法ping通,一切的罪魁祸首都是/etc/udev/rules.d/70-persistent-net.rules这个文件导致的
  • 因此,**我们在克隆虚拟机之前一定要:

第一步:

先要清空这个文件。/etc/udev/rules.d/70-persistent-net.rules

第二步:

编辑你的网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0

删除里面两句话,如下图:



注意:有几块网卡就得删掉几块的对应配置文件的HWADDR,UUID。

综上,此时再克隆虚拟机就不会再出现任何问题。

Linux实战教学笔记06:Linux系统基础优化的更多相关文章

  1. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  2. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  3. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

  4. Linux实战教学笔记18:linux三剑客之awk精讲

    Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

  5. Linux实战教学笔记19:Linux相关网络知识梳理

    第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...

  6. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  7. Linux实战教学笔记07:Linux系统目录结构介绍

    第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...

  8. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  9. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

随机推荐

  1. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  2. PC分配盘符的时候发现==》RPC盘符不可用

    服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件

    系列目录 上一篇演示了WebApi利用Unity注入 很多人问我如何用配置文件来配置注入,本节演示如何利用配置文件来注入,道理是一样的,跳转到上一节下载源码一起来动手! 1.打开源码定位到文件Depe ...

  4. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  5. node中的Stream-Readable和Writeable解读

    在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.Outpu ...

  6. 我大中华微软MVP中国区人才库

    刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...

  7. 【深入Java虚拟机】之四:类加载机制

    类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验 ...

  8. QT内省机制、自定义Model、数据库

    本文将介绍自定义Model过程中数据库数据源的获取方法,我使用过以下三种方式获取数据库数据源: 创建 存储对应数据库所有字段的 结构体,将结构体置于容器中返回,然后根据索引值(QModelIndex) ...

  9. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  10. 基于select的python聊天室程序

    python网络编程具体参考<python select网络编程详细介绍>. 在python中,select函数是一个对底层操作系统的直接访问的接口.它用来监控sockets.files和 ...