2_Linux操作系統和基礎命令行
非圖形頁面下執行程序
GUI接口
CLI接口 #輸入命令,給出執行文件的路徑
命令提示符,prompt(表示可以立即輸入命令了) 命令提示符通過bash(shell)運行程序來展示的
#:root #就是管理員提示符
$:普通用戶 $是普通用戶提示符
命令:shell本身就是命令行接口,所以當我們輸入一個命令時,這個命令會被我們的shell送給內核,由內核來判斷程序是否具有執行權限以及能否執行和從什麽地方開始執行
linux的命令格式
command [-options] parameter1 parameter2...
命令 選項 參數1 參數2
{
0、一行命令中第一個輸入的部分絕對是"命令"或"可執行文件"
1、中括號[]並不存在實際的命令中,而加入參數設置時,通常參數前面會帶"-"號
例如-h 有時候會使用參數的完整全名,則參數前面帶有"--"符號,例如--help
2、parameter1 parameter2..為依附在options後面的參數,或者command的參數
3、命令,選項,參數等這幾個命令中間以空格開區分,不論幾個空格,shell都視為一格
4、按下enter鍵後就會立即執行命令
5、命令太長時,可以使用反斜杠來轉義enter符號,使命令連續到下一行。註意:反斜杠後立刻接特殊字符,才能轉義
6、linux和windows不同,linux命令嚴格區分大小寫
}
{
命令 選項 參數
選項:修改命令的執行特性
短選項: -
一般多個選項可以組合:-a -b = -ab #-a -b 用空格隔開。-ab就不能用空格隔開
長選項:--
長選項通常不能組合,必須要分開來寫
參數:指定命令的作用對象
}
使用憑證:驗證用戶權限
虛擬終端(terminal):Ctrl+Alt+F2會進入另個虛擬登錄頁面,Ctrl+Alt+F3又會進入另個虛擬登錄頁面,以此類推,可以啟動多個頁面也可以來會切換。虛擬出來的幾個假的顯示器叫終端
startx &_ 會啟動圖形頁面,圖形終端。在圖形頁面下執行終端只需要右鍵選擇Open Terminal,這個終端稱作模擬終端,在裏面就可以輸入命令了
圖形界面的類型
GUI:Graphic User Interface
windows桌面
X-windows是linux桌面,X在linux裏表示圖形顯示協議,使用cs架構的,它的主機和顯示器是可以分離的
Gnome:C開發的
KDE: C++開發的
XFace:簡潔的,適合用在嵌入式平臺的輕量級桌面系統
命令行頁面
CLI:Command Line Interface
sh(shell其實也是bash的鏈接,還是執行bash)
bash
csh
zsh
ksh
tcsh
切換用戶:
su:switch user
# su [-l] 用戶名(半切換) //中括號表示可省略的
# su -l 用戶名(完全切換) //不省略就是完全切換
退回:exit
修改密碼:
# passwd //友情提醒:工作中密碼一定要具有復雜性規則,每次看到什麽什麽被脫褲子了,我們第一想到的肯定是管理員是不是使用了弱口令,而且要定期更換密碼,密碼盡量不要和名字生日手機號關聯,社會工程學專治這種不服
密碼不是進入系統的唯一手段,利用漏洞提權為多。 //18下半年開始,任何未經授權的測試都是違法行為。。。賊他媽可怕
IDE:指的是程序員開發程序的時候用的開發環境
windows有很多庫文件
dll(Dynamic Link Library):動態鏈接庫
linux下的庫是
.so(shared object):共享對象
login:
用戶名:用戶ID //計算機識別最快的就是數字,用戶名是公開的
認證機制(Authentication):認證的過程就是鑒別用戶生成的那個人的機制
授權(Authorization)
審計(Audition):審計對於計算機來說大部分通過日誌來完成的,日誌記錄過程
prompt:命令提示符
命令:一般來說一個可執行文件必須有一個可執行入口,這個二進制文件開頭處有一個特殊字符或者有幾個字節是非常獨特的標識,這個叫做程序的魔數(magic number) //庫是沒有可執行入口的,雖然它可執行
magic number:魔數。在windows下執行程序的魔數和Linux下執行程序的魔數是不一樣的它們所理解的二進制格式也是不盡相同的,就算它們的庫是完全相同的,在Linux下編譯的程序也未必能在windows下運行
在shell編程裏開頭的 #!/bin/bash 這就是個魔數,也稱shebang
當一個程序被啟動的時候,這個程序的執行入口就被提交給內核了,內核是管理進程的
由bash提交給內核,內核就去找這個執行程序的魔數,看看是不是可執行格式以及是不是當前內核可理解的格式,是就運行,否則拒絕執行,是不是真正執行,還取決於權限等各種復雜的機制,所以說程序必須要有執行入口,入口就是用於表示它的魔數以及這個程序的執行格式等等
ls命令
ls(list):列表,列出。列出指定路徑下的所有目錄和文件
目錄:目錄不是文件夾,那是windows帶來的誤導,它僅僅是一個路徑映射
路徑:從指定起始點到目的地所經過的位置。
層次化管理:層次性結構可以實現很快的利用非常短的路徑追溯一個目標,這樣一個層次化文件管理機制叫做文件系統(file system)
絕對路徑:從根開始找目標
相對路徑:相對於當前所處位置的路徑 //相對一定是從根到目的地中間路徑的某個叉點上有這個位置,否則是無法相對的
目錄(working directory,current directory):登錄系統以後,在每一個時刻上都會處在某個目錄上
pwd命令:
pwd(Printing Working directory):顯示當前目錄。Linux下最頂級的根用 / 表示,各路徑之間的分隔符也用 / 表示,windows下使用的是反斜線 \
ls
-l:長格式,顯示完整信息
//這是我以前學安全用的Ubuntu系統,其實也沒用幾次大部分都去琢磨kali了,升級之後不知道哪裏不兼容了打不開,這是未克隆之前的
yanhan@yanhan-virtual-machine:~$ ls
BurpHelper.jar vmware-tools-distrib 圖片 桌面
burpsuite_pro_v1.7.30.jar 公共的 文檔
burpsuite_pro_v1.7.30_sts.zip 模板 下載
VMwareTools-10.0.5-3228253.tar.gz 視頻 音樂
//博客園這一點很惡心,源格式復制不過來,源筆記在我電腦上,可以找我要
yanhan@yanhan-virtual-machine:~$ ls -l
總用量 124764
-rw-r--r-- 1 yanhan yanhan 434154 12月 21 2017 BurpHelper.jar
-rw-r--r-- 1 yanhan yanhan 27688550 12月 21 2017 burpsuite_pro_v1.7.30.jar
-rw-rw-r-- 1 yanhan yanhan 27320168 5月 12 10:38 burpsuite_pro_v1.7.30_sts.zip
-rw-rw-r-- 1 yanhan yanhan 72270857 11月 11 2015 VMwareTools-10.0.5-3228253.tar.gz
drwxr-xr-x 9 yanhan yanhan 4096 11月 11 2015 vmware-tools-distrib
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 公共的
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 模板
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 視頻
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 圖片
drwxr-xr-x 2 yanhan yanhan 4096 4月 24 20:05 文檔
drwxr-xr-x 2 yanhan yanhan 4096 5月 12 10:41 下載
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 音樂
drwxr-xr-x 2 yanhan yanhan 4096 4月 13 10:41 桌面
1、先看第一列,-rw-r--r--,這是十位,最左側(第一位)是文件類型,是文件本身屬性上區別的類型
文件類型:
-:普通文件(f)
d:目錄文件
b:壞設備文件(block)
C:字符設備文件(character)
l:符號鏈接文件(symbolic link file)
p:命令管道(pipe)
s:套接字文件(socket)
文件權限:9位,每三位一組,每一組:rwx(讀、寫、執行),如果沒有對應的權限用 - 表示,比如rw-就是能讀能寫不能執行
2、後面的數字(如後面的1、2、9):文件被硬鏈接的次數
3、文件的屬主(owner):yanhan
4、文件的屬組(group):yanhan
5、文件大小(size):434154 //默認單位是字節
6、時間戳(timestamp):這裏顯示的是最後一次被修改的時間戳
訪問:access
修改:modify
改變:change
修改和改變的區別,一個文件他有兩種數據,一種是文件自身的數據,另外一種是文件的屬性數據,屬性數據也叫元數據(metadata),修改是改變了文件的內容,改變是改變了文件的屬性或者說元數據
7、文件名
-h:做單位轉換
yanhan@yanhan-virtual-machine:~$ ls -l -h //這裏也可以寫為 ls -lh
總用量 122M
-rw-r--r-- 1 yanhan yanhan 424K 12月 21 2017 BurpHelper.jar
-rw-r--r-- 1 yanhan yanhan 27M 12月 21 2017 burpsuite_pro_v1.7.30.jar
-rw-rw-r-- 1 yanhan yanhan 27M 5月 12 10:38 burpsuite_pro_v1.7.30_sts.zip
-rw-rw-r-- 1 yanhan yanhan 69M 11月 11 2015 VMwareTools-10.0.5-3228253.tar.gz
drwxr-xr-x 9 yanhan yanhan 4.0K 11月 11 2015 vmware-tools-distrib
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 公共的
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 模板
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 視頻
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 圖片
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 24 20:05 文檔
drwxr-xr-x 2 yanhan yanhan 4.0K 5月 12 10:41 下載
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 音樂
drwxr-xr-x 2 yanhan yanhan 4.0K 4月 13 10:41 桌面
-a:顯示以.開頭的隱藏文件
yanhan@yanhan-virtual-machine:~$ ls -a
. .presage
.. .profile
.bash_history .sudo_as_admin_successful
.bash_logout VMwareTools-10.0.5-3228253.tar.gz
.bashrc vmware-tools-distrib
BurpHelper.jar .Xauthority
burpsuite_pro_v1.7.30.jar .xinputrc
burpsuite_pro_v1.7.30_sts.zip .xsession-errors
.cache .xsession-errors.old
.compiz 公共的
.config 模板
.dbus 視頻
.dmrc 圖片
.gconf 文檔
.ICEauthority 下載
.local 音樂
.mozilla 桌面
.pki
.表示當前目錄 ls . 就是 ls
..表示父目錄
-A:顯示所有目錄但是不包括 . 和 ..
-d:顯示目錄自身屬性
yanhan@yanhan-virtual-machine:~$ ls -ld .cache
drwx------ 20 yanhan yanhan 4096 5月 6 15:28 .cache
-i:index node,inode 顯示文件的索引節點號,每個文件前面多的一串數字。我們是以名字記憶的,計算機以數字查找
yanhan@yanhan-virtual-machine:~$ ls -i
276054 BurpHelper.jar 397116 公共的 397111 下載
276058 burpsuite_pro_v1.7.30.jar 397115 模板 397118 音樂
917560 burpsuite_pro_v1.7.30_sts.zip 397120 視頻 397104 桌面
275297 VMwareTools-10.0.5-3228253.tar.gz 397119 圖片
275299 vmware-tools-distrib 397117 文檔
-r:逆序顯示
-R:遞歸(recursive)顯示,遞歸是相當消耗資源的
文件名是不是文件的數據?想象一下,當我們往文件系統裏存放一個文件,這個文件我們是不是通常都是使用文件名去找的,那文件名存放在什麽地方?文件內容存放在什麽地方?
cd(change directory):切換目錄 cd的只能是目錄
yanhan@yanhan-virtual-machine:/opt$ pwd
/opt
yanhan@yanhan-virtual-machine:/opt$ ls /
bin dev initrd.img lost+found opt run sys var
boot etc lib media proc sbin tmp vmlinuz
cdrom home lib64 mnt root srv usr
yanhan@yanhan-virtual-machine:/opt$ cd /bin
yanhan@yanhan-virtual-machine:/bin$ pwd
/bin
cd不加任何參數,就是回到用戶的主目錄或者說家目錄(home directory)
當我們登錄主機後,登錄的時候一般而言只要用戶有家目錄,就在家目錄。對於家目錄,用戶有所有的操作權限
現在切換到root下玩
yanhan@yanhan-virtual-machine:~$ su root
密碼:
root@yanhan-virtual-machine:/home/yanhan#
cd ~USERNAME:進入到指定用戶的家目錄。只有管理員才有權限進別人家
root@yanhan-virtual-machine:~# pwd
/root
root@yanhan-virtual-machine:~# cd ~yanhan
root@yanhan-virtual-machine:/home/yanhan# pwd
/home/yanhan
cd -:在當前目錄和前一次所在的目錄來回切換
linux命令類型:
內置命令(shell內置)
外部命令:在文件系統的某個路徑下有一個與命令名稱相應的可執行文件
環境變量:變量是命名的內存空間
printenv:顯示環境
PATH:使用冒號分隔的一堆路徑
hash:可以理解為一種緩存,在緩存中記錄了使用過的命令的路徑,每一次在使用時不會先去PATH裏找了,會先直接來緩存裏找歷史
緩存保存的是一個hash列表,hash是o(1)的:我們從一個列表中查找一個數據的速度隨著列表長度變化而發生變化的比例,無論這個隊列有多長,我們從一個中找和從一萬個中去找花費的時間是一樣的
所以說緩存是實現系統加速的
clear:清屏
type:顯示指定屬於哪種類型
root@yanhan-virtual-machine:~# type cd
cd 是 shell 內建
root@yanhan-virtual-machine:~# type ls
ls 是 `ls --color=auto‘ 的別名
root@yanhan-virtual-machine:~# type su
su 是 /bin/su
硬件時鐘和系統時鐘
date:時間管理。顯示當前系統內的時間
2018年 10月 10日 星期三 19:11:04 CST
rtc:實時時鐘,每一次操作系統開機的時候,都是從這個硬件時鐘當中讀取當前時間,設置當前系統時間
ntp:網絡時間協議
linux和windows不同的在於,linux在開機的時候它會通過rtc讀取時間,一旦讀取時間成功就不在使用這個時間,內核(操作系統)自身會通過軟件的方式模擬振蕩器的方式在系統內部來維持時鐘
clock(hwclock):硬件時鐘
root@yanhan-virtual-machine:~# hwclock
2018年10月10日 星期三 19時25分03秒 -0.880505 秒
root@yanhan-virtual-machine:~# date
2018年 10月 10日 星期三 19:24:40 CST
root@yanhan-virtual-machine:~#
hwclock
-w:將系統時間寫到硬件中去
-s:將硬件寫到系統中來
修改時間:date 1010202218.30 //月2位、日2位、時間4位、年2位、.30是秒 可省略
獲取命令的使用幫助:
內部命令:
help COMMAND
外部命令:
COMMAND --help
命令手冊:manual
man COMMAND
whatis COMMAND:顯示這個命令的摘要信息以及和出現在哪些章節當中了
man分章節:
1、用戶命令(/bin, /usr/bin, /usr/local/bin)
2、系統調用 //如果顯示的有亂碼,是字符集不匹配,使用 export LANG=en 命令
3、庫用戶
4、特殊文件(設備文件)
5、文件格式(解釋某一個命令對應的配置文件的語法)
yanhan@yanhan-virtual-machine:~$ cat /etc/passwd //當時玩命令註入的時候,爆過一次 & cat /etc/passwd 帶敏感文件出來
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:104:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:105:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:106:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:107:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:110::/home/syslog:/bin/false
messagebus:x:105:112::/var/run/dbus:/bin/false
uuidd:x:106:113::/run/uuidd:/bin/false
avahi:x:107:116:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false
dnsmasq:x:108:65534:dnsmasq,,,:/var/lib/misc:/bin/false
whoopsie:x:109:118::/nonexistent:/bin/false
avahi-autoipd:x:110:122:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
kernoops:x:112:65534:Kernel Oops Tracking Daemon,,,:/:/bin/false
pulse:x:113:124:PulseAudio daemon,,,:/var/run/pulse:/bin/false
rtkit:x:114:126:RealtimeKit,,,:/proc:/bin/false
saned:x:115:127::/var/lib/saned:/bin/false
usbmux:x:116:46:usbmux daemon,,,:/var/lib/usbmux:/bin/false
colord:x:117:128:colord colour management daemon,,,:/var/lib/colord:/bin/false
hplip:x:118:7:HPLIP system user,,,:/var/run/hplip:/bin/false
lightdm:x:119:129:Light Display Manager:/var/lib/lightdm:/bin/false
yanhan:x:1000:1000:yanhan,,,:/home/yanhan:/bin/bash
guest-VgI3lW:x:120:132:Guest,,,:/tmp/guest-VgI3lW:/bin/bash
guest-lUXOag:x:121:133:Guest,,,:/tmp/guest-lUXOag:/bin/bash
yanhan@yanhan-virtual-machine:~$
6、遊戲
7、雜項:Miscellaneous
8、管理命令(/sbin, /usr/sbin, /usr/local/sbin)
MAN:
NAME:命令名稱及功能簡要說明
SYNOPSIS:用法說明,包括可用的選項
DESCRIPTION:命令功能的詳盡說明,可能包括每一個選項的意義
OPTIONS:說明每一個選項的意義
FILES:此命令相關的配置文件
BUGS:bugs報告給誰
EXAMPLES:使用示例
SEE ALSO:另外參照
在線文檔:
info COMMAND
文檔:
/usr/share/doc
還有我們的神器google
cal:日歷
<>:必須給出的內容
[]:可省略的
...:可以出現多次
|:多選一
{}:分組,沒有特殊意義
翻屏:
向後翻一屏:SPACE
向前翻一屏:b
向後翻一行:ENTER
向前翻一行:k
查找(索引):
/KEYWORD:向後
n:下一個
N:前一個
?KEYWORD:向前
n:下一個
N:前一個
q:退出
換行:
echo:換行
echo [選項] [字符串]
printf:
默認不打印換行符,得手動指定
看不懂的問我,或者神器google
2_Linux操作系統和基礎命令行