1. 程式人生 > >馬哥筆記(未整理)

馬哥筆記(未整理)

RH442:硬體執行的基本原理和作業系統的基本原理。
軟體調優:
硬體級別:調記憶體的使用,sishi的使用。
基礎知識很重要。
學習新知識的 
RAM:random-access memory隨機存取儲存器。
ROM:read-only memory   只讀儲存器。
CPU:處理器、控制器、暫存器
外圍裝置通過不停地中斷,來和計算機進行溝通。
前端匯流排:FSB:
南橋裝置:距離CPU比較近,低速匯流排控制器,早期是連線大量I/O裝置:鍵盤滑鼠,硬碟。南橋彙總以後傳給北橋,北橋再穿給CPU。
北橋裝置 : 高速匯流排控制器,早期是連線記憶體的。現在,記憶體直接連線CPU,不再連線北橋,速度更快。北橋只負責連線南橋,以及其他的匯流排的控制。
在北橋上接固態硬碟,來完成,快速服務。
程式區域性性原理,時間,空間區域性性。
機器語言:二進位制。
組合語言(微碼):需要編譯器,將微碼轉換為機器語言。跟硬體晶片的結合程度非常緊密,低階語言。
高階語言:先翻譯成組合語言,再編譯成機器語言,然後機器才能識別,然後才能執行。結合一些額外的機制,來彌合多種晶片之間的不同。(不同裝置之間)需要中間層API(應用程式設計介面application  program interface),不同硬體平臺用(用匯編語言寫的軟體)軟體虛擬出來的環境是相同的,向上還有ABI。


庫:彌合底層硬體不同。
一堆的程式,沒有執行入口,可以被其他程式呼叫執行,提供統一的呼叫機制,只提供呼叫介面,(呼叫:call)
System call(底層:將會有上層的程式設計師決定他的應用機制,越底層,變化機制越少):作業系統為了儘可能簡化他的呼叫機制,所以做的非常底層。將底層系統呼叫一個或者多個功能封裝起來,做成更高階的介面(就是所謂的庫APL)。
系統呼叫
程式不能直接和硬體打交道,只能通過作業系統和硬體交流


硬體架構(CPU架構型別):
ARM(移動裝置android,ios):
x86(Inter和AMD 32位系列):
x64(64位):
安騰
Alpha(惠普公司)
UltraSparc
Power(IBM)
M68000,M68K
PowerPC(蘋果,摩托羅拉,IBM三家)
CPU主頻發展遇到了瓶頸,最多發展到了4G Hz,現在是朝多核發展,


OS:
Windows
Linux
Unix:
HP-UX(惠普)
Solaris(sun公司)
AIX(IBM)
Sco unix(sco公司)
Unixware
OS/2








作業系統:
      
 
 -----應用程式----
                 
 -------庫-------

 -----作業系統----(系統呼叫)

 -------硬體------




批處理,
多工:
切割CPU,Memory,儲存執行緒,
作業系統負責這些事情:執行在硬體上,負責管理硬體資源,將硬體資源所提供的計算能力,CPU切割成多個片,記憶體分成多個段,分配給多個不同的程式,並且在他們之間完成協調。還負責完成一個程式的啟動,終止,回收等工作,還要負責程式(程序:執行的程式,process處理過程 有生命週期,從啟動到結束)的切換等工作。通用軟體,不負責完成具體的工作,只是負責協調其他程式的工作。
CPU:(時間驅動的)
:計算時間Silce(切成時間片)
假設:5ms
Memory(分段):
:1.2段
:虛擬地址空間(32位,4G個地址空間。64位,4G*4G個)
程序:正在進行的程式。


程式設計師就是負責呼叫別人所提供的功能,然後去開發程式的的這樣一個過程,
造文字的概念,如果一個文字已經有了,我們拿來直接用就行了,沒必要再重新造一個文字。
這種機制就是:將那種公共的功能做成公共的(共享庫)庫。
















===計算機硬體===:處理器,控制器,儲存器,輸入、輸出裝置,
==協調硬體程式==:(作業系統operating system)(作業系統的核心)核心kernel:負責管理硬體資源,並且將硬體資源虛擬成其他樣子,提供給上層所需要執行的程式。統一的資源管理者。程式執行是通過一個個的系統呼叫(system call)(一種非常底層的實現)來完成的,
====庫====:library,API(Application Program Interface),呼叫庫
=應用程式=:互動式程式、
 
記憶體分為三部分:BIOS,kernel space,多個程式共享記憶體


作業系統的外殼:shell
GUI:圖形使用者介面
CLI:命令列使用者介面


核心的功能:
程序管理
記憶體管理
檔案系統
網路功能
硬體驅動
安全機制



批處理系統:
job1$$$job2$$$........


Mainfram(大型機)
GE(美國的通用電器公司),Bell(美國的電報電話公司ATMT的貝爾實驗室),MIT(人工智慧實驗室)共同研發多工,多使用者的系統(multice)。用匯編語言開發的。






生產計算機的公司:
除了IBM外,還有DEC,digital equipment co-operation
PDP-系列計算機
vax-系列




Ken:
space Travel遊戲
在PDP7上用匯編語言寫了一個平臺運行了他的遊戲。
這個平臺(系統)就是Unice --> Unix


B語言(指令碼語言):引入靜態變數,指標,和。。。--->  C語言 
Ken和 同事 用 C語言 研發了 Unix 系統


Ken  1976年,到加州大學伯克利分校  任教,
其中一個著名的研究生Bill Joy: BSRG團體(作業系統研究小組)研究Unix:改進,修復Bug,提供新功能。  
釋出新的 Unix 版本:BSD(Berkeley System Distribution)


貝爾實驗室:Unix 版本: system V 




1981年,PC機誕生,CPM系統,


西雅圖:1981年Microsoft成立:開始賣basic語言的編譯器,包裝發行賣Xenix(Unix).後來,
PC機上的系統:
CP/M-->DOS(單使用者,單任務)


JOBS(喬布斯):
PC機(裝的Unix)蘋果,apple1,




喬布斯去了Xerox公司:影印機
PARK實驗室:研發出了滑鼠,以及基於圖形化操作的作業系統。
喬布斯買走了它們。
研發出了apple2(圖形化作業系統),
比爾蓋茨,偷走了apple2 ,研發了Windows,
Unix研發商醒悟,不再打口水仗。BSD解散,留下了:FreeBSD專注於執行在PC機上,OpenBSD專注於安全,NetBSD專注於服務.


蘋果系統的核心:Unix,到今天為止,蘋果公司用的都是FreeBSD的核心。




 _一個企業如果只有技術,而經營不善的話,最終只有被收購的命運。做人也是一樣,不能只埋頭學習,還要擡頭看路。
 |
 |
大概2010年被Oracle公司收購67億美元
Sun MicroSystem:
Bell Joy成立的公司;
生產當時的工作站Work station,
有自己獨立的作業系統,sun OS --> Solaris

windows 收購DEC,一個技術越流行,招收一個技術人員的成本越低
開發了,基於VMS的windows-->windows NT
windows的技術基本都是別人3.5年前棄之不用的技術,蘋果公司很多強大的技術包裹絢麗的介面,都是依靠強大硬體的計算能力來實現的,現在的許多圖形工作站,一般都是蘋果機。


Unix商業化後,荷蘭一大學教授 安德魯 開發了一系統——Minix 用於上課。
但是系統不相容,對於每個機器必須開發各自的驅動,很麻煩。
他的一個學生linus,開始用Minix,後來那個學生對於教授的固執不滿,自己開發了一個系統——linus(後更名為linux),並且公開該系統,允許全球的人更改,那些更改的人只需要把改的系統反饋一下就好。然後該系統就迅速火起來了。
linux火起來,不是linux本身有多厲害,而是linux的思想符合了歷史的契機。


80年代,美國麻省理工學院一教授----stallman倡導,Freedom,受到好多人支援
成立一個組織:
GUN : GNU is Not Unix
編寫了一個宣言(準則):
GPL:General Public License(任何人和組織在應用我們提供的原始碼後,必須把應用更改之後的原始碼公開,否則視為侵權)
後來:
LGPL:Lesser GPL 
GPLv2、GPLv3(嚴苛)


其他組織也有協定(比較寬泛):such as : BSD , Apache  (相對比較流行)


開源:開放原始碼(Open Source)


自由:
自由獲取、自由修改、自由學習
自由並不意味著免費。




stallman為這個組織還貢獻了許多著名的軟體:
Emacs:文字編輯器
gcc: GNU C Complier
bash:


linux : glibc,gcc,  受到了全球的黑客的親淶,併為他開發了大量的軟體。


他叫GNU/Linux.
他們的軟體都是C原始碼。需要編譯才能執行。


ABI:Application Binary Interface應用二進位制介面


這個系統需要編譯,才能用,所以就出現了相應的第三方組織:負責編譯linux核心和各種外圍應用程式,並且將它們打包發行成為一個可安裝的便捷的linux。
這種組織包括:
1993年,RedHat(在北美和中國是非常流行的)
1991年,SLS
1992年,德國Debian(高階使用者用的較多)
。。。,德國SUSE(在歐洲非常流行)
他們本身都不是linux的開發者。他們被稱為linux的發行(release)商。他們只是負責將原始碼格式的linux在通用的計算機平臺上,編譯成通用的格式,使得其他人拿到以後可以在大多數硬體平臺上安裝並使用。   


每個發行版的linux包括kernel和軟體:因而軟體管理器應運而生,
Debian,提供了:dpt
RetHat,模仿Debian提供了:rpm紅帽軟體包管理器




紅帽
收錢,賣的是服務。讓人很不爽,於是出現了Cent OS
開始個人版2003終止服務,並把他捐獻給Fedora,後開發行企業版。

Fedora:更新很快


Mandriva:也是基於紅帽個人版的二次發行版本,介面做的很好。


Cent OS:(國內用的最多)
Community ENTerprise OS 






(基於SLS)SUSE: -->已經被Novell收購(他以前的作業系統Netware)有兩個版本:SUSE 和 Open SUSE


Debian:技術最先進,唯一不受商業組織支援的系統,他的所有者和負責維護Debian的,統統來自於網際網路,大家自發聯合起來。最難用。
基於Debian的二次發行版本:
Ubuntu、Mint






linux核心也有版本:最新4.1.5
REHL也有自己的版本3.0 ,4.0 ,5.8 ,7.0:






/------------------\
linux的基本原則:
1.由目的單一的小程式組成:組合小程式完成複雜任務
2.一切皆檔案:
3.儘量避免捕獲使用者介面:
4.配置檔案儲存為純文字格式:


GUI介面:
Gnome:C
KDE:C++
XFace:嵌入式平臺上的輕量級作業系統,比如手機上,
CLI介面:
sh
bash
csh
zsh
ksh
tcsh


命令提示符:prompt,bash(shell)
#:root
$:普通使用者
命令:

命令格式:
命令 選項 引數
選項:
短選項: -
多個選項可以組合:ls -a -l = ls -al
長選項: --
通常不能組合
引數:
命令的作用物件
有多個引數時,用空格隔開

作業系統的使用憑證:進入作業系統需要登入
redhat嚴格區分大小寫


虛擬終端(teminal):Ctrl+Alt+(F1-F6)
進入圖形介面:
命令:startx &

切換使用者:
假設有這幾個使用者:root、student、visitor
su:switch user 
linux重要哲學思想:能簡寫絕不全些
命令:su [-l] student
[...]表示可省略

修改密碼:
密碼;passwd


密碼設定規則:
1.使用4種類別字符中的至少三種
2.足夠長,大於七位
3.使用隨機字串
4.定期更換
5.迴圈週期足夠大


RHCE+RHCA+shell程式設計+MySQL+Web叢集+NoSQL+Hadoop+Hbase+Openstack


---------------------------------------------------------------------------------------------------------------------------
2-1


GUI:Graphic User Interface
windows
X-window
Gnome
KDE
XFace


CLI:Command Line Interface
sh
bash
ksh 
zsh
tcsh

IDE:整合開發環境
dll(庫檔案):動態連結庫(Dynamic Link Library)


linux的庫上叫:( .so )share object 共享物件 


login:
使用者名稱:使用者ID


認證機制:Authertication
授權:Authorization
審計:Audition(日誌)


命令提示符:prompt
命令:
magic number:魔數(程式的執行入口)


#!/bin/bash


# command options... arguments...


命令
選項:
短選項 
長選項 
引數: 


list:ls
列出、列表
列出指定路徑下的 所有目錄或者檔案


資料夾:
目錄:也是一種檔案:路徑對映檔案


路徑:從指定起始點到目的地所經過的位置


檔案系統:file system


絕對路徑:
相對路徑:


目錄:working directory,current directory
FHS:檔案系統層級結構標準


ls:
-l 長格式:現實完整資訊 顯示(檔案型別(佔10個字元) )
檔案型別:
-:普通檔案(f)
d:目錄檔案(dictionary)
b:塊裝置檔案(block)
c:字元裝置檔案(character)
l:符號連結檔案(symbolic link file)
p:命令管道(pipe)
s:套接字(.socket)
檔案許可權:9位,每三位一組,rwx(讀,寫,執行),沒有的話用-表示
檔案硬連結的次數:
檔案的屬主(所有者):owner
檔案的屬組:group
檔案大小(size):預設單位是位元組
時間戮(timestamp):最近一次被修改的時間
訪問:access
修改:modify
改變:change,metadata,元資料
-h:做(記憶體)單位換算
-a:顯示以 . 開頭的隱藏檔案
. 表示當前目錄
.. 表示父目錄
-A:
-d:顯示目錄自身屬性

-i:index node,inode:顯示檔案縮影節點號
-r:逆序顯示
-R:遞迴(recursive)顯示


cd:change directory 
家目錄,主目錄:home directory
cd ~(USERNAME):進入指定使用者的家目錄(不加username進入的是自己的)
cd -:在當前目錄和前一次所在的目錄之間來回切換

linux命令型別:
內建命令(shell內建)
外部命令


環境變數:命名的記憶體空間
變數賦值:
NAME=Jerry
記憶體型別:
堆hig:
棧stack:存放本地宣告的一些變數和靜態變數    


PATH:使用冒號分隔的路徑(按次序的)
在快取(hash)中找檔案:時間複雜度O(1)

type:顯示指定命令屬於哪種型別


hash:快取
printenv:列印環境變數


rtc:實時時鐘
獲得命令的使用幫助:
內部命令:
help COMMAND
外部命令:
COMMAND --help
命令手冊:manual
man COMMAND(export LANG=en)
whatis COMMAND
分章節:有八個
1.使用者命令
2.系統呼叫
3.庫使用者
4.特殊檔案(裝置檔案)
5.檔案格式(配置檔案的語法)
6.遊戲
7.雜項:miscellaneous
8.管理命令(/sbin,/usr/sbin,/usr/local/sbin)


<>:必須給出的內容
[]:可選
...:多選一
{}:分組
0
MAN:
NAME:命令名稱及功能簡要說明
SYNOPSIS:用法說明,包括可用的選項
DESCRIPTION:說明每一個選項的意義
FILE:此命令相關的配置檔案
BUGS:
EXAMPLES:使用示例
SEE ALSO:另外參照

翻屏:
向後翻一屏:SPACE
向前翻一屏:b
向後翻一行:ENTER
向前翻一行:k
查詢:
/KEYWORD:向後
?KEYWORD:向前
n:下一個
N:前一個


q:退出


練習:
使用date單獨獲取系統當前的年份、月份、日、小時、分鐘、秒

hwclock:顯示硬體時鐘
-w:將系統時間寫到硬體中去
-s:將硬體時間寫到系統中來

線上文件:
info COMMAND


google
apache,hadoop,
怎麼能把一個問題給別人講清楚,說明白


cal:(calendar)日曆


練習:
1、echo是內部命令還是外部命令?
2、作用?
3、如何換行顯示?


練習:
1、printf是內部命令還是外部命令?
2、作用?
3、如何顯示“the year is 2013. today is 26”為兩行


file命令及其用法


windows:PE
Linux:ELF


檔案系統:
rootfs:根檔案系統


FHS:檔案系統層級標準


/boot:系統啟動相關的檔案,如核心,initrd,以及grub(bootloader)
/dev:裝置檔案:
塊裝置:隨機訪問,資料塊
字元裝置:線性訪問,按字元為單位
裝置號:主裝置號(major)和裝置號(minor)
/etc:配置檔案
/home:使用者的家目錄,每一個使用者的家目錄通常預設為:/home/USERNAME
/root:管理員的家目錄
/lib:庫檔案
靜態庫: .a
動態庫:.dll  .so (share object)
/lib/modules:/核心模組檔案
/media:移動裝置的掛載點目錄
/mnt:掛載點的目錄,額外的臨時檔案系統
/opt:可選目錄,第三方程式安裝目錄
/proc:偽檔案系統,核心對映檔案,
/sys:偽檔案系統(關機以後變空),跟硬體裝置相關的屬性對映檔案
/tmp:臨時檔案  /var/tmp
/var:可變化的檔案
/bin:可執行檔案,使用者命令
/sbin:管理命令


/usr:shared,read-only
/usr/bin
/usr/sbin
/usr/lib 

/usr/local:
/usr/local/bin
/usr/local/sbin
/usr/local/lib 

命名規則:
1、長度不超過255個字元;
2、不能使用 / 當檔名
3、嚴格區分大小寫


相對路徑:相對於當前位置的查詢路徑
絕對路徑:相對於根目錄的查詢路徑


檔案管理
目錄管理
ls
cd 
pwd


mkdir:建立空目錄
-p:逐一建立(父到子)
-v:檢視詳細目錄
tree:檢視目錄樹


刪除目錄;rmdir(remove directory)
刪除空目錄
-p:從子到父刪除,刪到該目錄不為空目錄為止

檔案的建立和刪除:
touch:
-a
-m
-t 
-c 
檔案和目錄不能同名
stat:顯示檔案的狀態


建立檔案,可以使用檔案編輯器


ASCII:美國標準資訊交換程式碼


GB18030 GBK GB2313 Unicode 


刪除檔案:rm
-i:刪除前詢問是否刪除
-f:強制刪除
-r:遞迴刪除該目錄的所有檔案

複製和移動檔案:
cp:copy
cp:SRC(原始檔) DEST(目的地)
一個檔案到到一個檔案
多個檔案到一個目錄
-i:覆蓋前詢問是否覆蓋
-r:遞迴複製資料夾裡的所有檔案
-f:強制複製檔案
-p:複製連結,同事保持連結的連結屬性
-a:歸檔複製,常用於備份


mv:move
移動檔案
(還可以重新命名檔案)
mv SRC DEST


install
-d DIRECOTRY: 建立目錄
SRC DEST 
install -t DEST SRC ...
只能複製檔案




執行程式
裝置管理
軟體管理
程序管理
網路管理




目錄管理:
ls,cd, pwd,mkdir, rmdir, tree


檔案管理:
touch, stat, file, rm, cp, mv, nano


日期時間:
date, clock, hwclock, cal


檢視文字:
cat, tac, more, less, head, tail 


cat(連線並顯示):
linux文字檔案行結束的標誌為$
windows的行結束符為$加換行符
-n:顯示行號
-e:顯示行結束符

tac:倒過來顯示文字


分屏顯示:
more,less
more:向後翻
less:類似man
head:檢視檔案的前N行
tail:檢視檔案的後N行(N預設是10)
-n :顯示n行
-f:檢視檔案尾部,不退出,等待顯示後續最賤至此檔案的新內容。

文字處理:
cut、join、sed、awk、


database:資料庫
關係型資料庫:
表:二維表


文字檔案也可以儲存資料庫:
用冒號或空格(分隔符)隔開
cut:
-d:指定欄位分隔符,預設是空格
-f:指定要顯示的欄位
-f 1,3  顯示1和3
-f 1-3  顯示1到3


文字排序:
sort:(預設ASCII表升序)
-n:數值大小(升序)排序
-r:降序
-t:欄位分隔符
-k:以哪個欄位為準進行排序
-u:排序後相同的行只顯示一次
-f:排序時忽略字元大小寫

(相鄰並且完全重複的行)


uniq:
-c:顯示檔案中行重複的次數
-d:只顯示重複的行


文字統計:wc(word count)
顯示(行數、單詞數、位元組數)
-l:只顯示行數
-L:最長的一行包含多少個字元
-m(-c):顯示字元數
-w:顯示單詞數

tr(字元處理命令):用於轉換或刪除字元
"<"輸入重定向
eg:tr "a-z" "A-Z" </etc/passwd
-d:刪除給定字串中的單個字元


文字處理:cat,more,less,head, tail, cut, sort, uniq, grep 
正則表示式
管道和重定向:> < >> <<
使用者、組、許可權
bash及其特性:
shell:外殼
GUI:Gnome,KDE,XFace
CLI:sh,csh,ksh,bash,tcsh,ksh
每個開啟的shell都是一個程序:
程序:在每個程序看來,當前主機上只存在核心和當前程序
程序是程式的副本,程序是程式執行的例項


使用者的工作環境:
bash:#: 
$:
shell:子shell


bash:
1.命令歷史
2.管道和重定向
3.命令別名
4.命令列編輯
5.命令列展開
6.檔名通配
7.變數
8.程式設計




命令列編輯:
Ctrl+a:跳到命令列首
Ctrl+e:跳到命令列尾
Ctrl+u:刪除游標至命令列行首的內容
Ctrl+k:刪除游標至命令列行尾的內容
Ctrl+l:清屏


命令歷史:
檢視命令歷史:history
-c:清空命令歷史
-d:OFFSET [n]:刪除指定位置的命令
-w:儲存命令至歷史檔案中
環境變數:
PATH:命令搜尋路徑
HISTSIZE:命令歷史快取區大小


命令歷史的使用技巧:
!n:執行命令歷史中的第n條命令
!-n:執行命令歷史中的倒數第n條命令
!!:執行上一條命令
!(string):執行命令歷史中以指定string為開頭的命令
!$:引用上一個命令的最後一個引數
Esc, .:同上
Alt+.:同上


命令補全:搜尋PATH環境變數指定的每個路徑下我們給出的字串開頭的可執行檔案,如果多於一個,可以給出列表,否則將直接補全;
路徑補全:搜尋我們給出起始路徑下的每一個檔名,並試圖補全;
Tab(敲一下:顯示唯一匹配命令或引數;敲兩下:顯示所有符合條件的命令或引數或路徑)


命令別名:
alias CMDALIAS=COMMAND [Options] {arguments}
在shell中定義的別名僅當在當前shell生命週期中有效,別名的有效範圍僅為當前shell程序
撤銷別名:unalias CMDALIAS


命令替換:$(COMMAND),`COMMAND`(反引號)


bash支援的引號:
``:命令替換
"":弱引用,可以實現變數替換
'':強引用,不完成變數替換


把命令中某個子命令替換為其執行 結果的過程






檔名通配:globbing 
*:任意長度的任意字元
?:匹配任意單個字元
[]:匹配製定範圍內的任意單個字元[a-zA-Z0-9]
[^]:匹配指定範圍之外的任意單個字元
[:space:]:空白字元
[:punct:]:標點符號
[:lower:]:小寫字母
[:upper:]:大寫字母
[:alpha:]:字母
[:digit:]:數字
[:alnum:]:數字和大小寫字母






#man 7 glob


作業2:
1.思考:ls命令是否可以顯示某目錄的整體大小,即包括其內部的所有檔案的整體大小?
2.通過幫助手冊,學習使用du命令;
#du
-s
-h
3.通過幫助,學習read命令;
作業3:
描述GPL,BSD,Apache三個開源協定的大體聯絡及區別。
自由軟體
開源協定,版權描述


作業4:
1.如何獲取Linux當前最新的核心版本號?
官網:www.kernel.org
2.列出你所瞭解的Linux發行版,並說明其跟Linux核心的關係。
Linux,GNU/Linux,原始碼,編輯,編譯,連結,執行

發行版:Fedora,RedHat(CentOS),SUSE(opensuse),Debian(Ubuntu,Mint),Gentoo(給了我們編譯的可能性),LFS(Linux From Scratch(起跑線))


RedHat:通用格式




計算資源:
許可權
使用者,
使用者,容器,關聯許可權:使用者組,方便的指派許可權

使用者:識別符號
使用者組:識別符號




使用者、組、許可權:
安全上下文(secure context):
r,w,x


檔案:
r:可讀,可以使用類似cat等命令檢視檔案內容
w: 可寫,可以編輯或刪除此檔案
x:可執行,exacutable,可以在命令提示符下當作命令提交給核心執行


目錄:
r:可以對此目錄執行ls以列出內部的所有檔案。
w:可以再次目錄建立檔案
x:可以使用cd切換進入此目錄,也可以使用ls -l檢視內部檔案的詳細資訊:


rwx:
r--:只讀
r-x:讀和執行
---:無許可權


0 000:---:無許可權
1 001:--x:執行
2 010:-w-:寫
3 011:-wx:寫和執行
4 100:r--:只讀
5 101:r-x:讀和執行
6 110:rw-:讀寫
7 111:rwx:讀寫執行
使用者:UID(user ID),/etc/passwd
組:GID(group ID),/etc/group 


影子口令:
使用者:/etc/shadow
組:/etc/gshadow


使用者類別:
管理員:0
普通使用者:1-65535(16位二進位制(有的高達32位二進位制))
系統使用者:1-499
一般使用者:500-60000

使用者組類別:
私有組:建立使用者時,如果沒有為其指定所屬的組,系統就會自動為其建立一個與其使用者名稱相同的組
基本組:使用者的預設組
附加組:額外組:預設組以外的其他組


程序(具有身份):tom tom
物件:rwxrw-r-- jerry(屬主) tom(屬組) a.txt
tom:ls
/bin/ls
rwx(屬主)rw-(屬組)r--(其他)


account:登入名
password:密碼
UID:
GID:基本(其他)ID
comment:註釋
HOME DIR:家目錄
shell:使用者預設的shell


/etc/shadow
account:登入名
encrypted password:加密的密碼




加密方法:
對稱加密:加密和解密使用同一個密碼
公鑰加密:每個密碼都成對出現,一個為私鑰(secret key),一個為公鑰(public key)(公鑰加密,私鑰解密;私鑰加密,公鑰解密;)
單向加密,雜湊加密:提取資料特徵碼(存在即合理),常用於資料完整性校驗
1.雪崩效應(初始條件的微小改變,將引起結果的巨大變化)(蝴蝶效應:亞馬遜流域的一隻蝴蝶忽閃一下翅膀,可能會引起得克薩斯州的一場颶風)
2.定長輸出
MD5:Message Digest第5版(中文名為訊息摘要演算法第五版)(麻省理工學院的人工智慧實驗室研發的), 120定長輸出
SHA1:美國國家標準委員會,安全雜湊演算法第一版(Secure Hash Algorithm),160位的定長輸出(還有SHA256,SHA512)


useradd USERNAME(新增使用者)
groupadd GROUPNAME(新增使用者組)
使用者管理:
useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage
組管理:
groupadd,groupdel,groupmod,gpasswd
許可權管理:
chown,chqrp,chmod,umask







解析:名稱解析,www.sohu.com-->IP地址




chmod:修改檔案的許可權
修改三類使用者的許可權
chmod 774 test.py

相關推薦

筆記整理

RH442:硬體執行的基本原理和作業系統的基本原理。 軟體調優:硬體級別:調記憶體的使用,sishi的使用。 基礎知識很重要。 學習新知識的  RAM:random-access memory隨機存取儲存器。 ROM:read-only memory   只讀儲存器。 CP

前端學習筆記整理

Vue ViewModel是vue的一個例項。 View -> Dom listener 檢測頁面上dom元素的變化;如有變化 則更改Model中的資料。 Model –> Model中的資料被更新時 Data bindings工具會幫我們更新呢頁面

sed 學習筆記完成

sed#sedsed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成後,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末

《現代前端技術解析》第一章讀書筆記完成

服務 異步 網絡請求 會話 開始 註冊 復雜 技術 顯示   今天是2017年6月26日,星期一,開始從第一章看起。第一章主要講的是前端技術的發展概況以及一些必須掌握的瀏覽器基礎知識與常用開發技術。   頁面內容多而復雜,為了保證開發效率,我們可以借助符合特定場景的前端框架

顯卡相關整理

mark ews 然而 設定 drivers 技術 整理 開啟 div 顯卡相關(未整理) 關於SLI 什麽是SLI 橋連接器 雙顯卡要求 關於1060的SLI 進入NVIDIA的控制面板後發現並沒有SLI選項(一般情況下N卡的SLI可以在這個界面開啟),常規SLI失敗了。

原生JS實現的DOM操作筆記草稿整理

!= arc move arch div clas java href add 原生JS實現的DOM一系列操作參考: 原生JavaScript封裝DOM庫 siblings: 原生JS-查找相鄰的元素-siblings方法的實現 addClass,removeCl

mysql 鎖相關的視圖整理

ted innodb requested 查看 body 線程id RM locking block mysql 鎖相關的視圖 查看事務,以及事務對應的線程ID 如果發生堵塞、死鎖等可以執行kill 線程ID 殺死線程 kill 199 SELECT

Hadoop學習筆記整理

sbin auth host jdk 配置環境變量 整理 localhost 修改 -s 安裝步驟: 1、安裝虛擬機系統,並進行準備工作(可安裝一個然後克隆) 2.修改各個虛擬機的hostname和host 3.創建用戶組和用戶 4、配置虛擬機網絡,使虛擬機系統之間以及和

博弈學習筆記完成

lin 應用 有一種 部落 自然數 .cn clas sg函數 二進制 博弈 Tags:數學 作業部落 評論地址 前言 本博文分三部分,第一部分簡單介紹SG函數,第二部分簡單介紹博主所理解的一些博弈模型,第三部分推薦題目以及分享做題心得,本文基本不適合初學者食用,初學者請

SpringMVC學習筆記

前邊的入門就不說了~~ 如果有不懂的可以參考SpringMVC 4.2.4.RELEASE官方中文API (進入下載頁直接下載) 1、矩陣變數 2、媒體型別 3、請求引數和請求頭(params="myParam=myValue") 4、REST架構 &nb

GCC編譯過程與動態連結庫和靜態連結庫整理

來源:https://www.cnblogs.com/qingjiaowoxiaoxioashou/p/6410588.html 根據連結時期的不同,庫又有靜態庫和動態庫之分。靜態庫是在連結階段被連結的,所以生成的可執行檔案就不受庫的影響,即使庫被刪除,程式依然可以成功執行。而動態庫是在程式執行的時

資料結構自學筆記完成

1、時間複雜度 2、空間複雜度 /* 問題: 在一個由自然數1-1000中某些數字所組成的陣列中,每個數字可能出現零次或者多次。 設計一個演算法,找出出現次數最多的數字。 */ #include using namespace std; void search

C++抽象程式設計 Programming Abstracting in C++ 全書筆記完結

此篇文章來源於斯坦福的計算機程式設計課, 網址:http://web.stanford.edu/class/cs106b/ 有作業,課程,講義,考試題,答案,視訊,原始碼,方便學習。 每次重頭開始看書都是看那些基本語法,語法看得太多並沒有任何效果,以後不再複習C的基礎知識,

Linux 開機自檢整理

linux基礎1、開機自檢BIOS 檢查硬件有沒有問題 沒問題就根據啟動次序 交加硬盤2、MBR引導 交給硬盤哪裏? 硬盤0 柱面0 磁道1 扇區的前446byte 1扇區一共是512byte 剩下64byte(分區表 4個)+2(分區結束標誌)3、grep引導菜單 cat /etc/

archlinux個人安裝問題記錄整理&完成[linux]

下載 pfile list uefi啟動 shanghai 重啟 建立 die cpu 安裝過程大部分參考 官方文檔:https://wiki.archlinux.org/index.php/installation_guide https://wiki.archlin

ORM框架SQLAlchemy學習整理

性能 select create external 其他 class 學習 -m -- 一、基本介紹   以下介紹來自維基百科,自由的百科全書。   SQLAlchemy是Python編程語言下的一款開源軟件。提供了SQL工具包及對象關系映射(ORM)工具,使用MIT許

前端HTML 與css 整理

簽名 跳轉 doc emp 分類 for ... 小寫 tar HTML 中的標簽存放於文本文件中 需要按照以下固定的文檔結構組織:<!DOCTYPE HTML><html> <head>頭部相關信息 </head>

Linux初級:軟體包管理差編譯安裝整理

軟體包管理 1、ABI:application binary interfac 應用程式二進位制介面,應用程式要在作業系統上執行必須符合作業系統的介面 Linux:ELF(Executable and Linkable Format) Windows:PE(Portable Executab

APM-3.5.2-EKF2筆記完待續

20180704: 一、EKF2.InitialiseFilter()全過程 1. 記錄開始時間,預期步長時間(_frameTimeUsec = 2500),每次融合讀取IMU次數(_framesPerPrediction = 4),確定是否記日誌(通過引數,預設不記錄) 2. 根據加速度計數量確定

《C++Primer》第 5 版第 2 章筆記完整版

第 2 章 變數和基本型別 1. 基本內建型別分為 算術型別和空型別 2. 算術型別分為 整型 和 浮點型 3. 整型分為 int、字元、布林型別 4. char 1位元組   short 2位元組  int和long 4位元組  long long 8位元組  fl