1. 程式人生 > >linux基本介紹與環境搭建

linux基本介紹與環境搭建

1.1 Linux版本

linux kernel 2.2、2.4、2.6、3.0、4.0...
發行商:Red hat、CentOS、Ubuntu
選擇適合的Linux系統學習
桌面系統:Ubuntu
穩定伺服器系統:CentOS
土豪(有售後):Red Hat
對安全性有更高要求:Debian、FreeBSD
新技術,測試版:Fedora


1.2 CentOS

64位的系統版本是當前企業使用的主流
6.5 6.6版本的系統,穩定
學習平臺為6.5版本X86_64系統


1.3 學習環境的重要建議

虛擬機器軟體:VMWare Virtual Box
windows7 建議用VM8.0
記憶體安裝的時候最好1G,安裝之後可以降到512M
網絡卡的模式選擇:bridged橋接、NAT、host-only僅主機
NAT模式的虛擬機器就是通過宿主機上網和交換資料的
bridged 邏輯對等,虛擬機器可以被分配與物理機相同網段的獨立IP,最接近真實網路環境的
Host-only 虛擬機器的網絡卡連線到VMnet1上,宿主系統不為虛擬機器提供路由服務,因此虛擬機器只能和宿主機進行通訊


1.4 32和64區別

設計時的定位不同 普通使用者和企業
安裝要求配置不同 64只能安裝在64位電腦上,針對64位發揮最佳效能
運算速度不同 64一次提取8個位元組的資料,比32快一倍
定址能力不同 32CPU理論最大隻支援4G,可以通過PAE技術支援到8G,64可支援128G
uname -m/a 檢視裝的是32還是64


1.5 基本分割槽方案
IDE /dev./hda
hda第一塊盤 hda1,hda2...
hdb第二塊盤 ...
SCSI /dev./sds

分割槽的編號1-4,只能給P+E
L分割槽的編號只能從5開始

Linux分割槽要求:
/ 根分割槽 用來存放系統檔案及程式 5GB以上
swap(交換)分割槽 相當於虛擬分割槽,一般為實體記憶體容量的1.5倍,此分割槽不是必須
/boot分割槽 引導分割槽 一般為100-200M,不是必須的


1.6 linux系統相關設定

uname -r 檢視核心版本
# 超級管理員
setup配置
儲存網絡卡配置
ifdown eth0 && ifup eth0或者/etc/init.d/network restart==service network restart 前者更好
不要忘了更改配置:vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes 《===控制網絡卡是不是開機啟動
提示:vi是編輯器,相當於記事本,開啟後,按i編輯修改,儲存命令:wq

CRT連不上linux
1.iptables防火牆關閉 /etc/init.d/iptables stop chkconfig iptables off永久關閉
2.ping

ps -ef 檢視程序 ps -ef|grep ssh ps aux 類unix風格顯示
netstat/ss -lntup 檢視埠 netstat -lntup|grep sshd
ifconfig/ip add 檢視IP

windows《=====》linux 互傳資料
ftp/winscp/http/rz-sz
yum install lrzsz -y 安裝rzsz
rz 回車 選擇要上傳的檔案(不能是目錄)
sz 檔案 回車,下載到CRT指定的路徑
-y是覆蓋
halt==shutdown -h now
yum upgrade –y 更新系統 yum update –y
yum grouplist 用於檢視包組列表
額外安裝一些有用的軟體包
yum install tree telnet dos2unix sysstat lrzsz nc nmap -y

[[email protected] ~]# cat /etc/redhat-release
CentOS release 6.5 (Final) 版本
[[email protected] ~]# uname -r
2.6.32-431.el6.x86_64 核心
[[email protected] ~]# uname -m
x86_64 32位還是64位
[[email protected] ~]# hostname
localhost 主機名

linux 多工、多程序、多CPU、多使用者
[[email protected] ~]$ 《======普通使用者提示符
[[email protected] ~]# 《======超級管理員


1.7 系統基本優化

1.7.1 關閉SELinux功能
[[email protected] ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 
[[email protected] ~]# grep =disabled /etc/selinux/config 
SELINUX=disabled
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce
usage:  setenforce [ Enforcing | Permissive | 1 | 0 ]
[[email protected] ~]# setenforce 0

runlevel 執行級別0-6 7種
執行級別0:系統停機狀態,系統預設執行級別不能設為0,否則不能正常啟動
執行級別1:單使用者工作狀態,root許可權,用於系統維護,禁止遠端登陸
執行級別2:多使用者狀態(沒有NFS)
執行級別3:完全的多使用者狀態(有NFS),登陸後進入控制檯命令列模式
執行級別4:系統未使用,保留
執行級別5:X11控制檯,登陸後進入圖形GUI模式
執行級別6:系統正常關閉並重啟,預設執行級別不能設為6,否則不能正常啟動

1.7.2 精簡開機啟動服務

開機必須保留的啟動
sshd,遠端連線linux伺服器時需要的服務
rsyslog,日誌相關軟體,系統的守護程式通常會使用rsyslog程式將各種資訊寫到各個系統日誌檔案中
network,系統啟動時,若想啟用/關閉各個網路介面,則應開啟此服務
crond,該服務用於週期性的執行系統及使用者配置的任務計劃
sysstat,sysstat是一個軟體包,包含檢測系統性能及效率的一組工具
sysstat軟體包整合的主要工具為:
iostat工具:提供CPU使用率及硬碟吞吐效率的資料
mpstat工具:提供與單個或多個處理器相關的資料
sar工具:負責收集、報告並存儲系統活躍的資訊
設定開機自動服務的方法:
1)setup 勾選開機啟動的服務
2)ntsysv 設定
3)用指令碼編寫chkconfig統一關閉

[[email protected] ~]# chkconfig --list atd
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
[[email protected] ~]# chkconfig --level 3 atd off
[[email protected] ~]# chkconfig --list atd       
atd             0:off   1:off   2:off   3:off   4:on    5:on    6:off
[[email protected] ~]# chkconfig --level 2345 atd off
[[email protected] ~]# chkconfig --list atd          
atd             0:off   1:off   2:off   3:off   4:off   5:off   6:off

[[email protected] ~]# for name in `chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|network|rsyslog|crond|sysstat"`;do chkconfig $name off;done

關閉在3級別開啟的除了sshd,rsyslog,network,crond,sysstat之外所有服務

1.7.3 關閉防火牆

[[email protected] ~]# /etc/init.d/iptables stop
[[email protected] ~]# /etc/init.d/iptables status
iptables: Firewall is not running.
[[email protected] ~]# chkconfig iptables off

1.7.4 更改linux遠端SSH連線埠

vim /etc/ssh/sshd_config  :set  nu   表示顯示行數
#####2017-05-21#####
Port 52113
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
ListenAddress 192.168.4.180
#####2017-05-21#####

 /etc/init.d/sshd reload
 /etc/init.d/sshd restart
 netstat -lntup
 netstat -an|grep EST

利用sed命令實現快速增加
sed –ir ’13 i Port 52113\n PermitRootLogin no\n PermitEmptyPasswords no\n UseDNS no\n GSSAPIAuthentication no\n ListenAddress 192.168.4.180’ sshd_config

1.7.5 利用sudo工具來對使用者進行集權管理

visudo ==vi /etc/sudoers 不完全等價,前者更多功能
vi編輯器 輸入98gg切換到98行 yy複製 p貼上

[[email protected] ~]$ useradd yaoyao
-bash: /usr/sbin/useradd: 許可權不夠
[[email protected] ~]$ 
[[email protected] ~]$ 
[[email protected] ~]$ sudo useradd yaoyao
[sudo] password for wangxian: 
[[email protected] ~]$ tail -l /etc/passwd
yaoyao:x:501:501::/home/yaoyao:/bin/bash

環境變數:
PATH 系統路徑變數,執行ls,cp等非內建命令時,系統會首先查詢PATH裡對應的路徑是否有,如果沒有就報告找不到該命令
當執行which cp來檢視命令所在路徑的時候,也是從PATH變數去搜索
臨時修改export PATH="/tmp:$PATH",永久修改前面臨時修改的命令放到/etc/profile下,
使用source /etc/profile使得修改立刻生效

1.7.6 字符集修改

[[email protected] ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
[[email protected] ~]# cp /etc/sysconfig/i18n /etc/sysconfig/i18n.wx.20170521
[[email protected] ~]# sed -i 's#en_US.UTF-8#zh_CN.UTF-8#g' /etc/sysconfig/i18n
[[email protected] ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
[[email protected] ~]# source /etc/sysconfig/i18n  修改後執行
[[email protected] ~]# echo $LANG
zh_CN.UTF-8

1.7.7 linux伺服器時間同步

[[email protected] ~]# date
2017年 05月 21日 星期日 20:53:12 CST
[[email protected] ~]# date -s "2017/05/21 20:55"
2017年 05月 21日 星期日 20:55:00 CST
[[email protected] ~]# hwclock
2017年05月21日 星期日 20時55分35秒  -0.861008 seconds

同步網際網路時間

/usr/sbin/ntpdate ntp1.aliyun.com

也可以將同步時間寫進crond定時任務

crontab -e
 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1   #每5分鐘同步一次

/dev/null 空裝置 黑洞
下面的方法是等價的,習慣選擇第二種
1) 1>/dev/null 2>/dev/null 正確的、錯誤的輸出都扔到黑洞
2)***** 1>/dev/null 2>&1
3) &>/dev/null
etc/init.d/ntpdate start 自身的時間同步伺服器開啟

1.7.8 超時時間設定

export TMOUT=100 設定超時時間為100S
echo "export TMOUT=100">/etc/profile 新增到配置
tail -l /etc/profile 檢視是否修改成功
source /etc/profile或者. /etc/profile 永久生效配

1.7.9 歷史記錄條數修改

export HISTSIZE=100          命令列的歷史記錄修改成100條
[[email protected] ~]# echo "export HISTSIZE=100" >>/etc/profile
[[email protected] ~]# tail -l /etc/profile
export HISTSIZE=100
[[email protected] ~]# . /etc/profile
[[email protected] ~]# HISTFILESIZE=100     歷史記錄檔案的命令數量修改
[[email protected] ~]# echo "export HISTFILESIZE=100" >>/etc/profile
[[email protected] ~]# cat ~/.bash_history 

1.7.10 增大檔案描述符
檔案描述符概念:
1、表示形式為整數數字,一般使用範圍(0-65535)
2、程序使用的時候會佔用檔案描述符(標識開啟的檔案)
檢視預設檔案描述符:
[[email protected] ~]# ulimit -n
1024
調整檔案描述符:
[[email protected] ~]# ulimit -SHn 65535 臨時生效
[[email protected] ~]# ulimit -n
65535
斷開連線重新進入生效
[[email protected] ~]# echo "* - nofile 65535" >>/etc/security/limits.conf
[[email protected] ~]# tail -1 /etc/security/limits.conf

    • nofile 65535

      1.7.11 調整核心引數檔案/etc/sysctl.conf

      vim /etc/sysctl.conf   shift+g切換到檔案結尾  shift+insert貼上
      net.ipv4.tcp_fin_timeout = 2
      net.ipv4.tcp_tw_reuse = 1
      net.ipv4.tcp_tw_recycle = 1
      net.ipv4.tcp_syncookies = 1
      net.ipv4.tcp_keepalive_time =600
      net.ipv4.ip_local_port_range = 4000    65000
      net.ipv4.tcp_max_syn_backlog = 16384
      net.ipv4.tcp_max_tw_buckets = 36000
      net.ipv4.route.gc_timeout = 100
      net.ipv4.tcp_syn_retries = 1
      net.ipv4.tcp_synack_retries = 1
      net.core.somaxconn = 16384
      net.core.netdev_max_backlog = 16384
      net.ipv4.tcp_max_orphans = 16384
      #以下引數是對iptables防火牆的優化,防火牆不開會有提示,可以忽略不理。
      net.ipv4.ip_conntrack_max = 25000000
      net.ipv4.netfilter.ip_conntrack_max = 25000000
      net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
      net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
      net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
      net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

      sysctl -p 生效

1.7.12 系統其他的一些優化設定

隱藏版本資訊顯示,設定開機提示資訊
> /etc/issue     /etc/motd
編輯介面
vi /etc/motd
為grub引導選單新增密碼     不是很重要
鎖定系統重要檔案
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
禁止ping    一般不用   都用防火牆設定禁ping
[[email protected] ~]# echo "net.ipv4.icmp_echo_igore_all=1" >> /etc/sysctl.conf 
[[email protected] ~]# sysctl.conf
更新部分有漏洞軟體
yum install openssl openssh bash –y
定時清理/var/spool/clientsqueue/
定時清理/var/spool/clientsqueue/,寫指令碼,放在定時任務裡面定時清理
搭建系統的yum源,以及進行優化(upgrade)
/etc/yum.repos.d/
清除多餘的系統虛擬帳號,例如:bin、adm、lp、halt、mail、dbus、postfix等

1.7.13 優化安全最小化思想

1、安裝系統最小化,開機啟動最小化,無用的東西不裝,不啟動;
2、操作命令最小化,例如:用rm -f test.txt 不用rm -fr test.txt
3、登入linux使用者最小化,平時沒有需求不用root登入
4、普通使用者授權許可權最小化,只給必須的管理系統的命令
5、linux系統檔案及目錄的許可權設定最小化,禁止隨意建立、更改、刪除