linuxsalt
1. Salt stack的Master與Minion之間通過ZeroMq進行消息傳遞,使用了ZeroMq的發布-訂閱模式,連接方式包括tcp,ipc2. salt命令,將cmd.run ls命令從salt.client.LocalClient.cmd_cli發布到master,獲取一個Jodid,根據jobid獲取命令執行結果。
3. master接收到命令後,將要執行的命令發送給客戶端minion。
4. minion從消息匯流排上接收到要處理的命令,交給minion._handle_aes處理
5. minion._handle_aes發起一個本地線程調用cmdmod執行ls命令。線程執行完ls後,調用minion._return_pub方法,將執行結果通過消息匯流排返回給master
6. master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫的文件中
7.
salt.client.LocalClient.cmd_cli通過輪詢獲取Job執行結果,將結果輸出到終端。
㈡ linux中怎麼添加或修改配置文件
1、首先輯配置文件,添加下面的這一行 。
㈢ linux中用來表示用戶的有
Linux下的帳戶系統文件主要有/etc/passwd、/etc/shadow、/etc/group和/etc/gshadow 4個。
(1)/etc/passwd文件中每行定義一個用戶帳號,一行中又劃分為多個不同的欄位定義用戶帳號的不同屬性,各欄位用「:」隔開。
各欄位定義如下:
用戶名:用戶登錄系統時使用的用戶名,它在系統中是唯一的。
口令:此欄位存放加密的口令。在此文件中的口令是x,這表示用戶的口令是被/etc/shadow文件保護的,所有加密口令以及和口令有關的設置都保存在/etc/shadow中。
用戶標識號:是一個整數,系統內部用它來標識用戶。每個用戶的UID都是唯一的。root用戶的UID是0,1~499是系統的標准帳戶,普通用戶從500開始。
㈣ 在Linux下生成crypt加密密碼的方法
我們可以用mkpasswd命令:這個命令就是用來生成crypt格式的密碼的:
mkpasswd
輸入命令後,程序會要求輸入一個密碼,然後生成crypt格式的字元串。
如果用Apache
Web伺服器,那麼也可以用htpasswd:
htpasswd
-nd
user
用戶名(user)叫什麼都無所謂,我們關注的是密碼。這個命令會輸出一個user:password格式的字元串,直接把password欄位復制下來就ok了。
有OpenSSL的話,可以使用openssl命令:
openssl
passwd
-crypt
myPassword
把上面命令中的myPassword用你想用的密碼字元串代替。
其他還有一些需要把命令在命令行中直接輸入的方式,不過這種做法有個問題,就是在ps命令中可以看到密碼,同時密碼也會被記錄入shell歷史。
不過這個問題是有解決辦法的:用腳本,或者語言解釋器。
比如使用Perl:
perl
-e
"print
crypt('password','sa');"
Perl需要一個加密鹽,如這里使用了sa(salt指加密中用到的隨機字元串,用不同的salt可以生成不同的加密結果)。
Ruby也一樣需要加密鹽:
ruby
-e
'print
"password".crypt("JU");
print("n");'
php也可以:
php
-r
"print(crypt('password','JU')
.
"n");"
需要注意的是,如果不使用加密鹽(如上面命令中的JU),那麼輸出的字元串將不是crypt加密格式,而是MD5加密格式的。所以,加密鹽其實是必須的參數。
python需要導入crypt庫並使用加密鹽:
python
-c
'import
crypt;
print
crypt.crypt("password","Fx")'
這里的加密鹽是Fx。
資料庫也可以生成crypt密碼。比如用Mysql:
echo
"select
encrypt('password');"
|
mysql
另外,Tcl,Ubuntu下的trf,還有Lua的lua-crypt插件也可以實現相同的目的。
歡迎補充其他的方式!
㈤ 如何使用Salt 的各種狀態值
salt的安裝:
master端:
#yum install salt-master -y salt主控端安裝
# vim /etc/salt/master salt主配置文件修改
interface: 服務監聽IP
auto_accept: True(可選,key通過『salt-key -a keyname』命令手動進行認證)
注意:keyname 就是客戶端中設置的id標識(可以查看salt-minion端的配置)
#salt-master -l debug debug模式,查看salt都進行哪些操作
#/etc/init.d/salt-master restart 重啟salt服務
#/etc/init.d/salt-master status 查看狀態
#netstat -antlp | grep 4505 確保消息發布埠正常
#netstat -antlp | grep 4506 確保客戶端與服務端通信埠正常
#/etc/init.d/salt-master restart
# /etc/init.d/salt-master status
# salt-key 查看認證相關信息
# salt-key -a wy-pe2 手動添加認證key(給wy-pe2主機添加認證)
#iptables -F 關閉防火牆以免影響認證
#salt-key -a wy-pe2
#salt-key -L 查看認證信息(會有顯示已經認證和未認證的相關信息)
[root@wy-pe1 ~]# salt-key -L
Accepted Keys:
wy-pe2 已經允許的key(表示wy-pe2已經允許認證了)
Unaccepted Keys:
Rejected Keys:
#cd /etc/salt/pki/master/minions 在master中的minions目錄中生成認證的key
#setenforce 0 暫時關閉selinux
#/etc/init.d/salt-master restart
執行遠程命令(使用salt內建的模塊):
#salt 『wy-pe2′ test.ping 測試master和minion進行通信(在master端進行ping響應測試)
[root@wy-pe1 ~]# salt 『wy-pe2′ test.ping 如果能ping通,則為True
wy-pe2:
True
#lsof -i:4505 查看到minion端都和4505保持建立
[root@wy-pe1 ~]# lsof -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 8568 root 12u IPv4 63217 0t0 TCP *:4505 (LISTEN)
salt-mast 8568 root 14u IPv4 65101 0t0 TCP wy-pe1:4505->wy-pe2:51237 (ESTABLISHED)(表示建立連接了)
注意:如果認證那塊沒做好,就會影響相關的鏈接
客戶端安裝:
minion端安裝配置:
#yum install salt-minion -y
#vim /etc/salt/minion 修改minion客戶端主配置
master: 服務端主機名
id: 客戶端主機名(其實也就是認證key的名字) 用來和master進行認證
#/etc/init.d/salt-minion restart 重啟服務
#cd /etc/salt/pki/minion/ 在這個目錄底下會生成兩個認證文件(minion.pub minion.pem)
salt-minion端不能正常啟動的解決步驟:(一般就是iptables和selinux的影響)
#/etc/init.d/salt-minion restart
# tail -f /var/log/messages
#/etc/init.d/salt-minion restart
#iptables -F
#tail -f /var/log/salt/minion
#salt-minion -l debug
#setenforce 0
#/etc/init.d/salt-minion restart
安裝完畢,在master和minion認證完畢之後會在minion主機上的/etc/salt/pki/minion/目錄底下生成新的minion_master.pub
問題1:檔master和minion進行認證的時候,master沒有接收到public key(minion)
(這個在後來的鏈接過程中會造成master和minion不能鏈接)
問題2:輔機salt-minion總是在查看服務狀態的時候顯示失敗(but pid exits!)
# salt-minion -l debug 查看salt客戶端詳細信息
salt的簡單使用:
salt可以直接讓minion執行模塊命令,也可以直接執行shell命令
1.salt -C 『wy-pe1 and wy-pe2 or wy-peN』 test.ping -C表示多參數(表示在測試多台主機的存活狀態)
# salt 『*』 disk.usage 查看磁碟使用情況(使用內建模塊查看所有minion端的磁碟使用情況)
#salt 『*』 cmd.run 『df -h』 使用cmd.run直接調用遠程shell命令(功能同上)
# salt 『*』 cmd.run 「cat /root/lall」 查看客戶端主機的/root/lall文件
2.nodegroup對minion進行分組:
nodegroups:
group1: 『[email protected],bar.domain.com,baz.domain.com or bl*.domain.com』
group2: 『G@os :Debian and foo.domain.com』
group3:』wy-pe2′
進行分組測試:
# salt -N group3 test.ping
wy-pe2:
True
3.grains對minion基本信息的管理:
salt 『wy-pe2′ grins.ls 查看grains分類
salt 『wy-pe2′ grins.items 查看minnon基本信息(硬體參數)
4.pillar對敏感信息的管理,只有匹配到的節點才能獲取和使用
默認pillar數據定義文件存儲路徑:/srv/pillar
狀態管理:
1.salt基於minion進行狀態的管理(state)
類似於pupet的pp文件功能,salt的state文件擴展文件名為.sls,採用的是和puppet一樣的設計思路。即以master
端的文件狀態來確定minion端的一些狀態信息設置。(安裝的軟體包,服務的運行狀態以及需要同步的文件配置)
注意:salt默認的根目錄在/srv/salt中,如果沒有需要進行建立。
top.sls:這個文件類似於puppet的site.pp文件,作為「最高同步」操作的入口文件,執行「最高同步」操作時,將從此sls文件中獲取狀態對minion進行同步
示例:(注意,salt文件完全採用ymal格式,對代碼的縮進有著嚴格的要求)
#vim /srv/salt/servers_package.sls
httpd: 項目名
pkg: 類型
– installed 動作(表示安裝httpd包)
service:
– running
– enable:True
vim-enhanced:
pkg:
– installed
tomcat環境
openjdk-7-jdk:
pkg:
– installed
tomcat7:
pkg:
– installed
– require:
– pkg: openjdk-7-jdk
# salt 『wy-pe2′ state.sls servers_package 按照sls文件中的配置對wy-pe2進行服務配置
管理配置文件
httpd:
pkg:
– installed
file.managed: 文件管理(文件同步操作)
– name: /etc/httpd/conf/httpd.conf
– source: salt://httpd/httpd.conf
# salt 『wy-pe2′ state.highstate 應用修改(給minion永久添加狀態)
3.使用salt schele對minion進行實時更新,讓minion自覺的保持某個狀態
4.實時管理
有時候我們需要臨時的查看某個機器上的某個文件,或者執行某個命令
cmd.run方式:(salt 『$targeting』 cmd.run 『$cmd』)用來遠程執行shell命令
# salt 『wy-pe2′ cmd.run 『ifconfig eth0′ 查看某台主機的網路介面
cmd.script方式:可以向遠程主機執行腳本
#salt 『*』 cmd.script salt://useradd.sh 向minion主機上執行useradd.sh腳本(salt://是salt的默認發布目錄,即/srv/salt)
pkg.install方式:制定主機安裝軟體
#salt 『wy-pe2′ pkg.install vsftpd 指定主機安裝軟體
# salt 『*』 network.interfaces 查看遠程主機介面
# salt-cp 『wy-pe2′ salt-cmd /home/xxb2 復制文件到指定的系統上(當前目錄的salt-cmd)
salt是主命令,一般用來執行命令模塊。
salt-cp用來復制文件到制定的系統上去
salt-key用來和minion之間進行身份驗證
salt-master為服務端的主守護進程用於控制minion
salt-run為前端命令執行
mole方式:(模塊查看方式#salt 『*』 sys.doc)
#salt 『*』 disk.usage 查看磁碟使用情況
# salt 『*』 grains.item os/osrelease/oscodename
# salt 『*』 user(group).info xxb2
# salt 『*』 ip.get_interface eth0
#salt 『*』 lvm.vgdisplay
salt相關管理命令:
salt-run manage.up 查看存活的minion
salt-run manage.down 查看死掉的minion
salt-run manage.down removekeys=True 查看down掉的minion,並將其刪除
salt-run manage.status 查看minion的相關狀態
salt-run manage.versions 查看slat的所有master和minion的版本信息
㈥ linux中shadow文件里的"!!" 表示什麼意思
以下為干貨。
shadow文件中第二列的格式,它是加密後的密碼,它有些玄機,不同的特殊字元表示特殊的意義:
①.該列留空,即"::",表示該用戶沒有密碼。
②.該列為"!",即":!:",表示該用戶被鎖,被鎖將無法登陸,但是可能其他的登錄方式是不受限制的,如ssh公鑰認證的方式,su的方式。
③.該列為"*",即":*:",也表示該用戶被鎖,和"!"效果是一樣的。
④.該列以"!"或"!!"開頭,則也表示該用戶被鎖。
⑤.該列為"!!",即":!!:",表示該用戶從來沒設置過密碼。
⑥.如果格式為"$id$salt$hashed",則表示該用戶密碼正常。其中$id$的id表示密碼的加密演算法,$1$表示使用MD5演算法,$2a$表示使用Blowfish演算法,"$2y$"是另一演算法長度的Blowfish,"$5$"表示SHA-256演算法,而"$6$"表示SHA-512演算法,目前基本上都使用sha-512演算法的,但無論是md5還是sha-256都仍然支持。$salt$是加密時使用的salt,hashed才是真正的密碼部分。
㈦ linux centos6.2 用戶登陸口令使用什麼加密機制
使用的應該是md5吧,不過使用salt值的md5演算法,$符號前後一共三個欄位,第一個欄位代表的意思就是加密演算法的代號,第二個欄位就是salt值,第三個欄位就是加密後的字元串!
開機時候你輸入密碼後,系統會讀取第一個欄位來判斷加密類型,然後讀取第二個欄位+你輸入的密碼來進行md5摘要,然後生成一個字元串去和系統中保存的密碼去比對!
MD5的ID應該是1,也就是$1$然後後面是salt,salt值的作用就是讓同樣的密碼可以生成不同的字元串,為了防止弱口令的批量泄露!
㈧ Linux裡面自動化部署工具有哪些
1. Puppet
Puppet是一款開源工具,旨在為系統管理員大大簡化自動化和報告工作。它基本上是款配置管理軟體,有助於配置和維護企業網路中的伺服器及其他系統。系統管理員通常每天要花大量時間重復做同樣的任務。他們總是想要使這些任務實現自動化,以便有更多的時間來處理其他項目或學習新的概念和腳本語言。管理員可以通過編寫腳本使任務實現自動化,但是在擁有大型網路的公司,腳本不是很方便。這時候,Puppet就大有用場,因為藉助Puppet,你可以:
為網路上的每個主機定義獨特的配置設置;
不斷監測網路,查找任何變動;
幫助高效地創建和管理用戶;
幫助管理每個開源工具的配置設置。
2. CHEF
Chef是另一款可供Linux系統管理員使用的流行的自動化工具。它用Ruby和Erlang編寫,對於配置和維護公司的伺服器大有幫助,無論貴公司擁有十台伺服器還是上百台。它還可以幫助你將雲端伺服器與亞馬遜EC2、OpenStack、RackSpace或谷歌雲整合起來。Chef可以將你的基礎設施轉變成代碼,那樣藉助代碼,你只要更改幾行代碼,就能輕松撤下一台伺服器,從而讓你輕松管理伺服器。物理節點還意味著:將變更內容部署到生產環境之前,可以對它輕松進行測試,你還可以輕松控制針對代碼的每次更新的版本。Chef DK為你提供了測試和管理配置的所有工具,Chef Server充當你所有「菜譜」(recipe)的存儲庫,可以管理與伺服器連接的每個節點。Chef客戶軟體在每個客戶端上運行,時不時收到伺服器方面的信息,從而更新其配置設置。
3. CFEngine
面向Linux系統管理員的下一款自動化工具是CFEngine,這是另一個領先的自動化系統,可幫助你輕松管理整套基礎設施,並使之實現自動化。一旦你使用CFEngine為網路中的系統定義了配置,那麼CF Engine就會自動確保配置符合規范。不用說,如果你的網路中有10個或100個節點,可以在短短幾秒內更新或改動任何一個節點或所有節點。CFEngine之所以受到許多Linux系統管理員的青睞,是由於它運行成本低、響應速度快、具有自癒合功能。
4. Ansible
Ansible是Red Hat提供的一款開源配置管理和IT企業自動化軟體,隨帶一種簡單的編程語言,讓系統管理員能夠高效地處理自動化和配置過程。Ansible由控制機器和控制機器控制的節點組成。節點是通過SSH來加以控制的。Ansible的主要特點之一是代理並不是部署到節點 ,但是完全藉助SSH來進行通信。易學易用、具有一致性、高可靠性和安全性是讓Ansible脫穎而出的其他特性。Ansible的唯一局限就是無法配置裸機和虛擬機。
5. Foreman
Foreman是另一種用於取證分析的開源配置管理工具。Foreman提供了儀錶板,我們可以通過儀錶板來配置裸機伺服器和虛擬機。默認情況下,無論我們何時安裝Foreman,它都使用Puppet作為配置工具。不過藉助插件,Foreman還支持與其他配置管理工具整合起來,比如Chef、Puppet、Ansible、Salt及其他眾多工具。Foreman自動化工具還隨帶各種各樣的介面,包括命令行介面、Web前端以及REST API。Foreman的其他一些顯著功能包括如下:
通過儀錶板,管理Puppet模塊和puppet類方面的改動;
很容易從Foreman儀錶板來管理Puppet環境;
由於儀錶板,創建主機群(Hosts Group)以及為主機群添加puppet模塊變得很輕松;
可以從Foreman儀錶板,輕松添加Puppet模塊或推送到節點。
6. Katello
Katello是另一種開源自動化工具。換而言之,我們可以說Katello是一種開源版的Red Hat satellite Server;如果我們不想花錢在企業產品及其支持上,就可以用它來代替Red Hat satellite Server。Katello已被Foreman收購,Foreman中的大部分功能在Katello中也得到了支持。Katello Server的主要功能如下:
給基於Linux的伺服器(RHEL和CentOS )打補丁;
使用Pulp Service來同步代碼庫;
使用Foreman進行各種配置;
它還可以處理訂閱內容管理,並審計所有已部署的軟體包;
藉助Katello,你可以為所有主機創建主機群,另外還可以在單一主機或一群主機上批量執行操作。
7. Nagios
Nagios現在名為Nagios Core,它是一種開源自動化和監控工具,可以管理基礎設施中的所有系統。它還提供警報服務,一旦察覺到你的網路中哪裡有問題,就會提醒系統管理員。藉助SNMP以及Nagios,系統管理員還可以控制並管理列印機、路由器和交換機。Nagios讓我們得以創建事件處理工具,一旦某個應用程序及其服務停運,就可以自動重啟出現故障的那個應用程序及其服務。
㈨ linux入門先學什麼
隨著網站承載量需求越來越大,很多都將空間搬入了雲空間。從而讓雲計算工程師的受熱程度呈直線上升,IT從事者或者學生都想進行學習linux雲計算,不過很多人還是對於雲計算學習屬於摸黑境界。今天給大家科普下:如何入門學習linux雲計算?
Linux操作系統相比於十年前的普及程度已經有了大大提高,但是由於其桌面操作系統上的可視化窗口操作模式並不像Windows操作系統那樣直觀、完美,對於一些剛接觸Linux的人或者初學者來說入手還是有一定的難度,所以其發展並不是那麼迅速。
但是近年來Linux已經越來越受到重用,它不再僅僅是一些開源發燒友們之間炫耀資本,而且已經在多方面價值得到了體現,尤其在伺服器操作系統方面,已經成為資深運維工程師的首選的操作工具。
隨著計算機行業的迅速發展,相信Linux操作系統將不僅僅只停留在平台應用上,他將會在更廣的空間展現他那獨有的優勢與魅力。
現在對於大多數中國的電腦用戶,很少有人自己用Linux操作系統的,而且還有相當一部分人甚至是第一次聽說Linux。但這並不奇怪,即使在很多大學生眼裡也大都如此。在你們眼裡只有Windows,只有微軟,比爾蓋茨是你們大多數人的偶像。那是微軟先入為主的觀念造成的,就如我們學習英語一樣,如過我們生下來就用英語講話,周圍的人說的也都是英語,那麼英語也就自然而然的學會了。而且像漢語一樣受我們喜歡。下面尚觀教育小編給同學們好好聊一聊。
1.忘掉Windows的思維方式
我也看過很多有關學習Linux的方法,第一部分基本都是告訴你怎麼安裝雙系統,怎麼便利學習。我也是如此,在自己台式機上安裝了雙系統,但是學習效果並不明顯,百思不得其解,一次看到破釜沉舟的故事頗有啟發,項羽前鋒軍救巨鹿,初戰少利,項羽便率大軍渡過漳河,破釜沉舟以激厲士氣。終於殺蘇角,虜王離,大敗秦軍於巨鹿之野。 楚霸王當初能夠戰勝並不是說他佔了多麼有利的優勢,而是他那一往無前,義無反顧的決心。
當裝了雙系統以後,只要遇到一些問題,就會快速切換到Windows操作系統來查資料,這樣雖然便利了我們學習,但是我們的大腦卻對問題缺少了思考,基本都是去網路知道,問問什麼的查,雖然當時解決問題了,但是過後在回憶當時是怎麼解決問題的,腦海卻是一片空白。我們裝的雙系統給自己帶來便利的同時也給自己找了太多的借口,到頭來卻沒了學習下去的勇氣。
所以後來我把我自己的電腦只安裝了Linux操作系統,做什麼都從上面去做,逼迫自己學安裝瀏覽器,播放器,文檔編輯器,等自己一步步的走過來,才發現,有的時候不是我們沒能力去辦好一件事,而是我們再沒辦事之前就給自己想好了各種退路。徹底忘記Windows思維方式,在一個只有Linux操作系統環境下生活。
如果你想系統的學習Linux,你必需清楚的認識到這一點。如果你真正想系統的學習linux,想用Linux有所作為,那麼請忘記Windows的思維方式,思想性的轉變比暫時性的技術提高更有用, 而思想上的改變往往是受到我們行動所影響的,有不懂的問題就自己思考,查資料, 實在不會再去找別人的電腦去查,這樣就加深了我每次對問題的理解,慢慢感受和習慣Linux的操作方式,總有一天你會真正體驗到他的奧妙所在,從而從自己內心深處喜歡他,使用他,而不是為了趕時髦或向人炫耀而使用他。
2.眼要精、筆要動、手要勤
a.多看一些學習Linux方面的書。要抓住精髓,不要貪多嚼不爛。
b.多做筆記,好記性不如爛筆頭。
c.實踐出真知。很多時候我們都是嘴上功夫,而到了真正自己搭建的時候就會發現自己其實一無所知。
3.要用心學習Linux。
經常看到有人問用什麼版本的Linux好,其實只要你認真學習無論什麼版本都挺好的。要知道,開發Linux發行版的人都是通讀過Linux內核代碼,對Linux原理極其精通的人,而且每一個開發團隊都對他的發行版做過測試後放出的。那些國際知名的大品牌更是如此。
因此,討論什麼版本好並無意義,關鍵是你是不是真心想學。不過,為了避免曲高和寡,最好選用的人多的版本,比如RedHat CentOS等等。學習Linux不是逛自由市場,選定版本就要靜下心來學習。不要今天換版本明天要升級。這樣對你沒有好處。例如有些人號稱用過十幾種甚至幾十種Linux,向人談論起來頭頭是到,好像懂的很多,但是如果你讓他去用Linux搭建一個Web伺服器,他就什麼都不會了。他們把時間都浪費在了版本的轉換上了。
4.不能盲目學習
要熟悉了計算機專業英語,高中畢業的水平就可以輕松的閱讀計算機文檔了。如果你的英語實在太差了,連最簡單的計算機英語文檔都看不懂,那麼在學習Linux的同時,請趕緊學習英語。
如果你想深入學習Linux,看不懂英文文檔實在是太難了。寫的最好的,最全面的文檔都是英語寫的,最先發布的技術信息也都是用英語寫的。即便是非英語國家的人發布技術文檔,也都首先翻譯成英語在國際學術雜志和網路上發表。你去看看各大軟硬體生產商的官方網站,有哪一個不是用英語作為其主站的?長期用Windows的人會很不習慣這一點,裝個軟體還要看半天文檔,因為Windows用起來實在太簡單了。但是如果你想學習Linux就必須學會看各種文檔,而大部分的文檔都是用英語寫的。
現很多人甚至連man文檔都不會看,有什麼命令不會用了就跑到論壇上來問,還裝出一副可憐相,乞討一個命令的用法。有這些時間還不如自己看看man文檔,即使你一個一個單詞的翻譯成中文再自己看都比問別人強,因為別人的回答再怎麼詳盡都比不上man文檔詳盡。安裝一個新的軟體時先看Readme,再看Install然後看FAQ,最後才動手安裝,這樣遇到問題就知道為什麼。否則,說明文檔都不看,結果出了問題再來找答案反而浪費時間! 古人說欲速則不達就是這個道理!
5.多記Linux命令
當你經過一段時間的學習後就應該擴充自己的知識,多學習Linux命令,但是不要在初學階段就系統的學習Linux命令,初學階段只要把上課時候學習過的命令練熟就可以了。
這就好比學英語,什麼語法都不懂,只捧著單詞手冊背單詞是學不會英語的,但是沒有單詞詞彙量英語水平也提不高的。
在Linux中學習命令的最好辦法是學習Shell腳本編程,Shell腳本比起其他語言來學習簡單,但是功能卻十分強大。通過學習Shell編程,能讓你掌握大量的Linux命令。另外,買一本命令參考手冊是必要的,遇到不知道怎麼用的命令可以隨時查詢,這要比查man文檔快。特別適合英語不好,看不懂man文檔的人。
在Linux中,命令可分為系統基本命令和應用程序命令。系統基本命令是所有的Unix類系統都支持的命令,走到哪都不變,只要是Unix類系統上就肯定有。
6.深究Linux系統結構以及Linux系統的管理
等你對Linux有了一定的認識後,知道了/etc下那些配置文件有什麼用,就可以去了解系統結構了。了解系統結構不是要你去看什麼文件夾放什麼內容,而是要學習一些原理性的東西。比如系統是如何引導的,引導後啟動了那些東西。系統中哪些是最基本的庫文件,有什麼用等等。
接下來就可以進一步學習管理系統。比如學習配置各種網路伺服器,用Linux搭建網路,這些都是學習Linux系統管理和網路管理的好方法。 到了這個階段就可以經常上網查查資料,看看論壇精華區文章,論壇可以讓你學到一些小知識,小技巧。
7.多看看關於計算機相關的專業課程
如果你不是計算機專業的,而想把linux學好,就一定要學習專業課程。學習微機原理,操作系統,計算機網路等等專業課程是必需的。為什麼同時開始學習linux,有些人學的非常快,不到半年就成了高手,有些人玩來玩去還玩不出名堂,玩了一兩年還是菜鳥? 因為那些學得快的人有基礎,他們都學過專業課程。同樣一篇文檔,沒有基礎的人可能看了三遍還不明白,基礎扎實的眼睛掃兩下就懂了! 這就是專業和非專業的差別! 因此,要想達到更高的境界就一定要學習基礎的專業課程。
8.保持虛心的學習態度
天外有天,人外有人!保持虛心的學習態度不僅能讓你學到更多知識,而且會讓你受人尊重。
保持這八點,配合馬哥教育梳理linux學習路線進行學習,避免走彎路,從而先人一步進行學習。
㈩ 如何在Linux中產生,加密或解密隨機密碼
1. 使用命令 pwgen 來生成一個長度為 10 個字元的獨特的隨機密碼。假如你還沒有安裝 pwgen,請使用 Apt 或 YUM 等包管理器來安裝它。
$ pwgen 101
生成一個獨特的隨機密碼
一口氣生成若干組長度為 50 個字元的唯一的隨機密碼!
$ pwgen 50
生成多組隨機密碼
2. 你還可以使用 makepasswd 來每次生成一個給定長度的獨特的隨機密碼。在你把玩 makepasswd 命令之前,請確保你已經安裝了它。如若沒有安裝它,試試使用 Apt 或 YUM 包管理器來安裝 makepasswd這個軟體包。
生成一個長度為 10 個字元的隨機密碼。該命令產生的密碼的長度默認為 10。
$ makepasswd
使用 makepasswd 生成獨特的密碼
生成一個長度為 50 個字元的隨機密碼。
$ makepasswd --char50
生成長度為 50 的密碼
生成 7 個長度為 20 個字元的隨機密碼。
$ makepasswd --char20--count 7
3. 使用帶「鹽」的 Crypt(註:這里應該指的是一個函數,可以參考這里 ) 來加密一個密碼。提供手動或自動添加 「鹽」。
對於那些不清楚 鹽 的意義的人,這里的 「鹽」 指的是一個隨機數據,它作為密碼生成函數的一個額外的輸入, 目的是保護密碼免受詞典攻擊。
在執行下面的操作前,請確保你已經安裝了 mkpasswd。
下面的命令將帶 「鹽」 加密一個密碼。「鹽」 的值是隨機自動生成的。所以每次你運行下面的命令時,都將產生不同的輸出,因為它每次接受了隨機取值的 「鹽」。
$ mkpasswd tecmint
使用 Crypt 來加密密碼
現在讓我們來手動定義 「鹽」 的值。每次它將產生相同的結果。請注意你可以輸入任何你想輸入的值來作為 「鹽」 的值。
$ mkpasswd tecmint -s tt
帶「鹽」加密密碼
另外, mkpasswd 還是互動式的,假如你在命令中沒有提供密碼,它將主動詢問你來輸入密碼。
4. 使用 aes-256-cbc 加密演算法並使用帶「鹽」的密碼(如 「tecmint」) 加密一個字元串(如 「Tecmint-is-a-Linux-Community」)。
# echo Tecmint-is-a-Linux-Community | openssl enc -aes-256-cbc -a -salt -pass pass:tecmint
在 Linux 中加密一個字元串
在上面例子中, echo 命令的輸出通過管道傳遞給了 openssl 命令,使得該輸出通過加密編碼方式(enc:Encoding with Cipher ) 所加密,這個過程中使用了 aes-256-cbc 加密演算法,並附帶了密碼 (tecmint) 和 「鹽」 。
5. 使用 openssl 命令的 -aes-256-cbc 解密選項來解密上面的字元串。
# echo U2FsdGVkX18Zgoc+/Z | openssl enc -aes-256-cbc -a -d -salt -pass pass:tecmint
在 Linux 中解密字元串
現在就是這些內容了。