Linux實戰教學筆記06:Linux系統基礎優化

来源:http://www.cnblogs.com/chensiqiqi/archive/2016/12/28/6228006.html
-Advertisement-
Play Games

第六節 Linux系統基礎優化 標簽(空格分隔):Linux實戰教學筆記 陳思齊 第1章 基礎環境 ![QQ20161227 [email protected] 60.5kB][1] 第2章 使用網易163鏡像做yum源 預設國外的yum源速度很慢,所以換成國內的。 第一步:先備份 mkdir backup ...


第六節 Linux系統基礎優化

標簽(空格分隔):Linux實戰教學筆記-陳思齊


第1章 基礎環境

QQ20161227-120011@2x.png-60.5kB


第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
QQ20161227-131254@2x.png-221.1kB

第五步:安裝必要的軟體包

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直接對配置文件進行修改。

QQ20161227-132958@2x.png-114.6kB

  • 臨時關閉SElinux,可在命令行執行如下命令:
    QQ20161227-133354@2x.png-54.2kB

QQ20161227-133500@2x.png-49.3kB

命令說明

  • 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,對於高併發高流量的業務伺服器仍是不能開的,因為會有較大性能損失,導致網站訪問很慢,這種情況下只能在前端加更好的硬體防火牆了。

  • 關閉防火牆的具體操作過程如下:
    QQ20161227-141939@2x.png-136.8kB

第5章 設定linux運行級別為3(文本模式)

設定運行級別(runlevel)為3,即表示使用文本命令行模式管理Linux。
QQ20161227-143748@2x.png-195.8kB

/etc/inittab :開機啟動模式配置文件
模式3:對系統資源的占用最低,所以改成3對系統進行優化
模式5:桌面模式,如果沒有裝桌面就進不去了
命令:init 0 可以直接關閉電腦
命令:init 6 可以直接重啟電腦
命令:init x(模式) 用來臨時切換linux運行模式
runlevel命令可以查看當前的運行模式

重點

必須掌握linux的啟動流程
必須掌握linux系統的7中運行級別
必須會臨時切換,永久修改linux的啟動模式


第6章 精簡開機系統啟動

系統必須開啟的5個服務

  • sshd
  • crond
  • rsyslog
  • sysstat
  • network
    QQ20161228-000234@2x.png-17.5kB

一條命令關閉其他所有不必要的服務
QQ20161228-000817@2x.png-76.7kB
----------

第7章 添加普通用戶賬號

  • linux/unix是一個多用戶,多任務的操作系統。
  • 超級管理員(root):root預設在unix/linux操作系統中擁有最高的管理全縣。
  • 普通用戶:管理員或者具備管理許可權的用戶創建的。許可權:系統管理僅可以讀,看,不能增,刪,改。

許可權越大,責任越大

  • 可以使用如下命令添加一個普通用戶賬號,併為其設置口令:

  • 一般情況下,在企業環境中應儘量避免直接到root用戶下操作,除非有超越普通用戶許可權的系統維護需求,使用完後立刻退回到普通用戶。
  • 還可通過下麵的命令一步到位的設置密碼(其中,chensiqi為用戶名,密碼為123456)
    echo "123456" | passwd --stdin chensiqi && history -c

--stdin為免交互模式
必須先創用戶後,才能給用戶設置密碼,不然系統會找不到這個用戶的。
註意:這種方式雖然能免提示的直接創建用戶,但是密碼信息都被記錄在了命令的歷史記錄里,因此,在創建完成以後切記history
-c 清空命令的歷史記錄信息。

嘗試切換用戶角色:
QQ20161227-192202@2x.png-60.6kB
說明:

  1. 超級用戶root切換到普通用戶下麵,無需輸入對應用戶密碼,這相當於“皇帝”去“大臣”家裡。
  2. 普通用戶切換到root或其他普通用戶下,需要輸入切換的對應用戶密碼
  3. 普通用戶的許可權比較小,只能進行基本的系統信息查看等操作,無法更改系統配置和管理服務
  4. $符號是普通用戶的命令提示符,#符號是超級管理員的提示符。示例如下:
    QQ20161227-195051@2x.png-27.5kB
  5. 提示符@前面的字元代表當前用戶(可用whoami查詢),後面的為主機名(可用hostname查詢),~所在的位置是視窗當前用戶所在的路徑。示例如下:
    QQ20161227-195534@2x.png-17.4kB
  6. Linux命令提示符由PS1環境變數控制。示例如下:
    QQ20161227-195715@2x.png-7.1kB
    這裡的PS1=‘[\u@\h\W]\$’,可以通過全局變數配置文件/etc/profile來調整。
    屏幕快照 2016-12-27 下午7.59.14.png-1224.9kB
  7. 利用sudo控制用戶對系統命令的使用許可權
    不用root賬號是安全了,但管理不方便了,為既安全又管理方便,可將需要root許可權的普通用戶加入sudo管理,這樣用戶就可以通過自己的普通賬戶登陸實現利用root的許可權來管理系統了,當然也就不需要有root賬號及密碼了。

====>用戶管理深度講解(企業案例)

執行如下visudo命令,即可打開sudo的配置文件進行編輯。

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

在/etc/sudoers 文件大約91行的下邊添加需要提升為root許可權的普通用戶名及對應許可權,格式如下(下圖有誤,是91行那個):
QQ20161227-202125@2x.png-59.3kB

  • visudo或者vi /etc/sudoers,在91行下邊加入,或者其他位置加入皆可。
  • root ALL=(ALL):此為91行
  • chensiqi ALL=(ALL) /usr/sbin/useradd,/usr/sbin/userdel :此為添加的行
  • 這句話的意思是對任意主機名的chensiqi用戶授權使用useradd和userdel兩個命令。
    屏幕快照 2016-12-27 下午8.27.46.png-319.6kB

提示:

  • 如果chensiqi用戶被授予上述許可權,那麼它可在所有的機器上運行useradd,userdel命令

  • 如果是針對用戶組,則對應的授權命令如下: % 用戶組 機器=(授權使用哪個角色的許可權) /usr/sbin/useradd

  • 通過sudo進行授權管理系統的的:即能讓運維人員幹活,又不能威脅系統安全,其實就是前面講的用戶許可權最小化原則,還可以審計用戶使用sudo的提權操作命令。

為了管理方便,這裡暫時給chensiqi授權all許可權,即可以管理整個系統

  • 第一步,輸入visudo找到91行,在行下加入內容
    QQ20161227-204545@2x.png-61.8kB
  • NOPASSWD:ALL:NOPASSWD表示提權執行命令免密碼,ALL表示可擁有所有許可權
  • 也可以直接仿照91行樣例ALL=ALL,也是所有許可權,但是提權時會要求輸入密碼
  • 第二步,修改完畢後,要進行檢查
    屏幕快照 2016-12-27 下午8.51.25.png-18.1kB

也可以使用快速操作命令增加sudo許可權,僅限於批量管理的情況:

\cp /etc/sudoers /etc/sudoers.bak
echo "chensiqi ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
visudo -c :直接追加沒有語法檢查,因此要單獨執行語法檢查

  • 第三步,此時再登陸chensiqi用戶,就可以通過執行類似sudo ls -l /root (sudo後面追加正常命令)的命令來以root用戶的許可權管理系統了,如下:

QQ20161227-210431@2x.png-64.4kB
說明

  • 通過sudo授權管理後,所有用戶執行授權的特殊許可權格式為“sudo”命令
  • 如果需要切換到root執行相關操作,可以通過“sudo su -”命令,註意,此命令提示的密碼為當前用戶的密碼,而不是root密碼。
    執行“sudo -l”命令可以查看當前用戶被授權的sudo許可權集合。
    QQ20161227-210733@2x.png-35.8kB
  • 對於linux系統bash的內置命令,一般無法進行sudo授權,例如:cd命令等。
  • 在生產環境中,通常會禁止root遠程登錄,不過,會為每個運維人員建立一個普通賬號,然後根據運維人員的需求,通過sudo控制登陸系統的許可權2,事實證明這是一個不錯的許可權管理方式。當然,在有的生產環境里可能還會使用一種叫做ldap的統一認證登陸及授權管理的方式。即只要有一個賬號和密碼,全公司多個機房系統內通行無阻(系統登陸,svn,vpn等),有關這部分內容的講解,以後根據情況在另行添加。在此,先瞭解即可。
  • 普通用戶的環境變數問題:在早期的Centos5系統中,普通用戶執行系統管理相關命令會遭遇到環境變數問題,導致找不到執行的命令(Centos6以後的系統不存在這個問題,這裡就不提了)
    sudo授權對於bash的內置命令處理,是個難題,因為內置命令沒有實體文件和路徑,不過一般都有解決辦法例如可以使用sudo ls替代sudo cd,有的人使用sudo bash後在使用內置命令,這是很危險的,不推薦。
    QQ20161227-211657@2x.png-38.6kB

第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的人都知道。那麼黑客是否也知道呢?他們當然知道,甚至比我們更清楚,所以,為了系統安全要隱藏或更改上述預設的配置才行。更改配置的命令如下:

QQ20161227-215351@2x.png-80.6kB

說明:

  • Port:代表埠,後邊的數字代表sshd服務監聽的是哪個埠
  • PermitRootLogin :yes代表允許root用戶遠程登錄,no代表不允許(如果是no則所有遠程登陸連接都不能用root用戶登陸,普通用戶可以正常連接)
  • PermitEmptyPasswords:yes代表允許用戶輸入空的登陸密碼,no代表不允許
    UseDNS:指定sshd是否應該對遠程主機名進行反向解析,以此檢查此主機名是否與IP地址真實對應。預設值“yes”
    建議改成“no”,否則可能會導致SSH連接很慢
  • 將以上信息更改後,保存退出
  • 執行如下命令重啟sshd,使修改的配置生效
    QQ20161227-220551@2x.png-14.7kB
    提示:reload為平滑重啟,不影響正在SSH連接的其他用戶,因此要好於restart。

除了前面介紹的安全知識外,還有更高級的SSH安全策略,具體如下:

  1. 更改SSH監聽的IP,使僅監聽內網IP
    QQ20161227-221123@2x.png-40.9kB
  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中添加如下內容,使其支持中文顯示:
    QQ20161227-222244@2x.png-63.7kB

臨時支持中文:
QQ20161227-222639@2x.png-31.3kB
永久支持中文
QQ20161227-223117@2x.png-22.5kB
註意,還得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版本信息顯示

QQ20161227-225338@2x.png-8.8kB

  • 在登陸到Linux主機本地(非CRT連接的視窗)前,會顯示系統的版本和內核。
  • 我們登陸以後在/etc下找到issue這個文件以及issue.net這個文件,cat下。看看是不是很眼熟。
    QQ20161227-230008@2x.png-75.1kB

QQ20161227-230348@2x.png-19.4kB

第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
刪除裡面兩句話,如下圖:
QQ20161227-232129@2x.png-30.2kB
註意:有幾塊網卡就得刪掉幾塊的對應配置文件的HWADDR,UUID。

QQ20161227-232843@2x.png-71.7kB

綜上,此時再克隆虛擬機就不會再出現任何問題。




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQLServer定時作業任務:即資料庫自動按照定時執行的作業任務,具有周期性不需要人工干預的特點 創建步驟:(使用最高許可權的賬戶登錄--sa) 一、啟動SQL Server代理(SQL Server Agent) 二、新建作業 三、設置作業常規屬性 四、設置作業步驟 五、設置作業計劃 六、點擊"確 ...
  • 資料庫分為關係型資料庫(關係型資料庫強調的是 表跟表建立在誰跟誰有關係的基礎上進行設計 ;你是他的,他是她的,她是它的;基本最終都能找到一個數據 是誰的。這就是關係型資料庫了) 以前傳統的資料庫都是關係型資料庫 Oracle、SQLServer、Sybase、Informix、access、DB2、 ...
  • 在資料庫操作中, 尤其是碰到一些複雜一些的系統, 不可避免的, 會用到函數/自定義函數, 或者存儲過程. 實際項目中, 自定義函數和存儲過程是越少越好, 因為這個東西多了, 也是一個非常難以維護的地方. 一、自定義函數 1. 例子 mysql提供的函數, 不在這一篇講了, 這裡主要貼一下自定義函數. ...
  • 本文列舉了史上八大MySQL宕機事件原因、影響以及人們從中學到的經驗,文中用地震級數來類比宕機事件的嚴重性和後果,排在最嚴重層級前兩位的是由於亞馬遜AWS宕機故障(相當於地震十級和九級)。一、Percona網站宕機事件震級:3 發生時長:2011年7月11日 持續時長:數日 地點:加州Pleasan ...
  • 最近使用SQL*Plus命令生成html文件,遇到一些有意思的知識點,順便記錄一下,方便以後需要的時候而這些知識點又忘記而捉急。好記性不如爛筆頭嗎! 為什麼要用SQL*Plus生成html文件? 有些人肯定會問,我使用SQL*Plus為什麼要生成html文件呢? SQL*Plus本身就是一個命令工具... ...
  • Redis緩存伺服器是一款key/value資料庫,讀110000次/s,寫81000次/s,因為是記憶體操作所以速度飛快,常見用法是存用戶token、簡訊驗證碼等 官網顯示Redis本身並沒有Windows版本的,微軟官方開發了基於Windows的Redis伺服器:MSOpenTech/redis ...
  • 觸發器在之前的項目中, 應用的著實不多, 沒有辦法的時候, 才會去用這個. 因為這個東西在後期並不怎麼好維護, 也容易造成紊亂. 我最近的項目中, 由於資料庫設計(別人設計的)原因, 導致一些最簡單功能, 查詢起來, 都很麻煩和複雜. 牽涉表非常多, 表與表之間又互有部分關係. 我想說, 這是我見過 ...
  • 比如有一個表,我們需要些一個語句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然後就能返回分割成單獨的行。 原表: | SomeID | OtherID | Data + + + | abcdef-..... | cdef1 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...