您好,登錄后才能下訂單哦!
目錄:
(一)sodu用戶切換
(二)Linux和Linux之間互相傳輸文件
(三)Linux和Windows之間互相傳輸文件
(四)find文件查找
(五)其他查找工具
(一)sodu用戶切換
(1.1)我們在系統中切換用戶時候,是必須要知道對方的密碼才可以切換的,但是很多時候root密碼不可能讓每個人都知道。為了解決這個問題,可以使用root用戶去設置哪些用戶擁有執行哪些命令的權限,而對應的用戶使用“sudo”命令進行用戶切換。
(1.2)我們在vms002主機上進行操作,我們使用root用戶打開/etc/sudoers配置文件,其中配置文件的格式可以參考圖1-2。
# gedit /etc/sudoers
(1.3)由于/etc/sudoers文件中的內容已經比較多了,我們可以在/etc/sudoers.d/目錄中進行編輯,而/etc/sudoers配置文件則會將/etc/sudoers.d/目錄中的文件作為自己的一部分(圖1-3),表示的是jerry用戶在vms002.example.com主機上執行mount和umount命令的時候,將會按照root用戶的權限進行執行(圖1-4)。
# gedit /etc/sudoers.d/jerry
(1.4)此時我們發現在沒有創建/etc/sudoers.d/jerry文件之前我們使用jerry用戶是無法執行mount掛載命令的,接著我們編輯/etc/sudoers.d/jerry文件允許jerry用戶執行mount和umount命令,此時我們登錄式切換到jerry用戶后,使用sudo命令發現已經可以正常的使用mount掛載命令了(圖1-5)。注意:我們在使用jerry用戶執行sudo命令的時候,需要執行一次jerry用戶的密碼,系統保存密碼默認為5分鐘,如果需要清除保存的密碼我們可以使用“sudo -k”命令(圖1-6)。
# sudo mount /dev/cdrom /mnt/
# sudo -k---清除系統保存的密碼
# sudo -l---列出系統中所有允許執行的權限信息
(1.5)如果我們希望jerry用戶在執行mount或者umount命令的時候不需要執行密碼,則可以加上“NOPASSWD”參數,表示當jerry用戶在vms002.example.com主機上執行mount和umount命令的時候,會按照root用戶的權限執行命令,并且不需要輸入密碼信息(圖1-8)。此時我們執行的時候會發現jerry用戶直接執行了mount命令,并且掛載成功了(圖1-9)。
(1.6)如果我們希望jerry用戶能夠按照root用戶的權限執行所有命令,則我們可以使用“ALL”參數,表示所有命令都是按照root用戶的權限進行執行(圖1-10),此時我們使用“sudo -i”命令便可以切換到管理員root下,執行所有的命令了(圖1-11)。
# sudo -i---切換到管理員權限
(1.7)一般我們可以將sudo和網絡用戶進行和配合使用,例如我們有一臺目錄服務主機存放的都是賬戶信息,還有多臺成員服務器,當網絡用戶的服務搭建好之后,例如現在我們有一個tom網絡用戶,一般情況下我們是可以從任意一臺成員服務器使用tom網絡用戶名登錄到系統中的。而現在我們在sudo的配置文件中設置,vms001主機上tom用戶登錄時可以執行的相關權限,其他成員服務器主機上使用tom用戶登錄時都沒有任何的權限,這樣就可以很好的進行權限的管理了。
(二)Linux和Linux之間互相傳輸文件
(2.1)在系統中有時候我們需要傳輸一些小文件或者一些零散的文件,此時我們需要一些傳輸的工具進行文件傳輸,通常在Linux系統和Linux系統之間傳輸文件的工具主要有scp和rsync兩種工具可以使用,這兩種工具都是基于ssh服務建立起來的工具。
(2.2)scp使用方法
(2.2.1)首先我們來了解scp工具,scp工具的語法如下:“scp -選項 /path2/file remoteIP:/path3”,表示將當前主機下目錄中的文件拷貝到遠端主機下的目錄中。
(2.2.2)我們嘗試將vms001主機上的hosts文件拷貝到vms002主機的/opt/目錄下,我們可以按照如下的方式操作,發現可以正常的將vms001主機的文件拷貝傳送到vms002主機上了(圖2-3)。
# scp /etc/hosts vms002:/opt/
(2.2.3)接著我們在vms001主機上切換到tom用戶,然后同樣嘗試將/etc/hosts文件拷貝到vms002主機的/opt/目錄中,我們發現并不能拷貝傳送文件成功,這是由于我們在vms001主機上我們沒有指定用戶名,所以此時默認使用的是當前的用戶名tom傳送文件(圖2-4),查詢/opt/目錄的權限信息,我們發現目錄中其他用戶并沒有可寫的權限,因此我們是無法拷貝傳送文件成功的(圖2-5)。而當我們指定使用root用戶傳輸到vms002主機的/opt目錄下(圖2-6),此時我們發現在vms002主機的/opt目錄可以正常的查看到hosts文件了(圖2-7)。
# useradd tom---創建一個tom用戶
# echo redhat | passwd --stdin tom---給tom用戶創建密碼
# ls -ld /opt/---查看opt目錄的權限
(2.2.4)接著我們在vms001主機上先會生成一個不需要輸入密碼的密鑰對(圖2-8),然后將公鑰對從vms001主機拷貝到vms002主機上,此時我們發現從vms001主機可以直接連接到vms002主機而不用輸入密碼(圖2-9),同時我們從vms001主機傳送/etc/hosts文件到vms002主機時,也是不需要輸入密碼就可以傳輸成功的(圖2-10)。
# ls .ssh/
# ssh-keygen -N ""---生成一個不需要輸入密碼的密鑰對
# ssh-copy-id vms002---將公鑰對從vms001主機拷貝到vms002主機上
# scp /etc/hosts vms002:/opt/---將vms001主機的文件拷貝到vms002主機上
(2.2.5)現在我們的需求是將當前vms001主機的/boot目錄下的文件拷貝到vms002主機的/opt目錄下,此時我們可以使用scp -r遞歸的方式將目錄中的文件進行拷貝(圖2-11),此時我們在vms002主機上看到/opt目錄下已經產生了一個boot目錄了(圖2-12)。
# scp -r /boot/ vms002:/opt/
(2.2.6)我們也是可以反過來操作的,即可以把遠端主機的文件拷貝到本地的,例如我們把vms002主機上的vms002.txt文件拷貝到vms001主機上,此時我們發現vms001主機上可以看到vms002.txt的文件了。
# scp vms002:~/vms002.txt .---將vms002主機上的文件拷貝到本地
(2.3)rsync使用方法
(2.3.1)rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。其中rsync的語法為:“rsync -選項 /path2/file remoteIP:/path3”,表示將當前主機的文件拷貝到遠端主機的目錄中。
(2.3.2)我們嘗試將/etc/hosts文件拷貝到vms002主機的/opt目錄,此時我們發現vms002主機上便已經有了vms001主機上的hosts文件了(圖2-16)。
# rsync /etc/hosts vms002:/opt/---將/etc/hosts文件拷貝到vms002主機的/opt目錄
(2.3.3)如果我們想要將vms001主機的/boot/目錄下的所有文件都拷貝到vms002主機的/opt目錄下,則可以使用rsync -r命令(圖2-17),注意此處我們使用的是“/boot/”表示的是boot目錄下的所有的文件。此時我們在vms002主機上發現/opt目錄下已經存在了boot目錄中的所有的文件了(圖2-18)。
# rsync -r /boot/ vms002:/opt/---將/boot/目錄下的所有文件都拷貝到vms002主機的/opt目錄下
(2.3.4)如果我們希望將vms001主機的/boot/目錄和目錄下的所有文件整體拷貝到vms002主機的/opt目錄下(圖2-19),注意此處我們使用的是“/boot”表示的是將目錄及目錄下文件作為一個整體進行拷貝,此時在vms002主機上發現/opt目錄下已經產生了一個boot目錄了,且boot目錄中也有vms001傳輸過來的所有文件了(圖2-20)。
# rsync -r /boot vms002:/opt/
(2.3.5)如果我們希望對文件的時間、屬主、屬組等所有信息都進行統一的拷貝傳輸,此時我們可以使用rsync -a命令實現這樣的需求。
# rsync -a /boot vms002:/opt/
(2.3.6)有時候為了可以更好的使用rsync的服務,我們也可以使用圖形化界面的工具grsync,常見的grsync版本為grsync-1.2.4-3.el7.nux.x86_64.rpm軟件包。
(三)Linux和Windows之間互相傳輸文件
(3.1)lrzsz使用方法
(3.1.1)在Linux和Windows系統之間進行文件傳輸,通常我們是有很多小的工具可以使用的,例如我們常見的lrzsz,我們首先要確保在服務器上已經安裝了lrzsz,如果我們使用的是圖形化界面的安裝方式,則lrzsz默認是已經安裝好了的;如果我們使用的是最小化安裝系統的方式,則是沒有默認安裝lrzsz工具的。
(3.1.2)我們可以在vms001主機上輸入rz命令,這樣就可以將Windows主機上的文件傳輸到Linux系統了。
(3.1.3)如果我們希望將Linux系統的文件傳輸到Windows主機時,我們可以在vms001主機使用sz命令,便可以實現這個需求。
# sz vms002.txt
(3.1.4)我們需要知道的是lrzsz工具是可以通過xshell、secureCRT等工具連接到服務器上的,但是如果我們使用的是putty客戶端時,則是不支持使用lrzsz工具的。
(3.2)一般來說我們上面使用的lrzsz是用來傳輸小文件比較便捷的,如果我們想要傳輸大文件一般是不建議使用lrzsz的。此時我們可以使用xshell客戶端提供的工具,我們可以點擊“新建文件傳輸”或者是通過快捷鍵“Ctrl+Alt+F”便可以將工具打開,此時我們便可以使用非常快的速率傳輸大文件了。
(3.3)有時候我們也可以使用其他的一些工具實現Linux和Windows系統之間的文件傳輸,例如WinSCP?或者FileZilla,也是可以實現我們的需求的。
(四)find文件查找
(4.1)一般我們使用find命令進行文件的查找,find命令的格式為:“find 目錄 -屬性 值”,其中如果沒有指明目錄則默認是在當前目錄下進行查詢,其中屬性主要包括:name、iname、user、group、nouser、nogroup、uid、gid、size、mtime、mmin、type、perm
(4.2)接著我們在vms002主機上創建一個rh224目錄,然后創建相關的文件,并給創建的文件設置對應的屬主和屬組信息。
# chown jerry aa---修改aa的屬主為jerry
# chown jerry.jerry bb---修改bb的屬主和屬組為jerry
# chown .users cc---修改cc的屬組為users
# chown 101.users dd---修改dd的屬主為101屬組為users
# chown .103 ee---修改ee的屬組為103
(4.3)如果我們想在系統中找到名字為lwang的文件,則可以使用“-name”參數;如果我們希望在查詢名字的時候忽略大小寫,則可以使用“-iname”參數。
# find / -name lwang---找到名字為lwang的文件,則可以使用“-name”參數
# find / -iname lwang---查詢名字的時候忽略大小寫,則可以使用“-iname”參數
(4.4)如果我們想要查詢屬主為jerry用戶的文件,則可以使用“-user”參數;如果我們想要查詢屬組為jerry的文件,則可以使用“-group”參數查詢。
# find -user jerry---查詢屬主為jerry用戶的文件
# find -group jerry---查詢屬組為jerry用戶的文件
(4.5)因為jerry用戶的uid為1000,如果我們想要查詢uid為1000的文件,則可以使用“-uid”參數;如果我們想要查詢gid為1000的文件,則可以使用“-gid參數”
# find -uid 1000---查詢uid為1000的文件
# find -gid 1000---查詢gid為1000的文件
(4.6)如果想要查詢沒有所屬主的文件,則可以使用“-nouser”參數;如果想要查詢沒有所屬組的文件,則可以使用“-nogroup”參數。
# find -nouser---查詢沒有所屬主的文件
# find -nogroup---查詢沒有所屬組的文件
(4.7)如果我們想要查詢屬主和屬組都是jerry用戶的文件,則我們可以使用“-a”參數進行連接,表示兩個條件都要同時滿足;而如果我們想要查詢屬主是jerry或者屬組是jerry用戶的文件,則可以使用“-o”參數,表示所有的條件只要有一個滿足,都是符合條件的。
# find -user jerry -a -group jerry---查詢屬主和屬組都是jerry用戶的文件
# find -user jerry -o -group jerry---查詢屬主是jerry或者屬組是jerry用戶的文件
(4.8)接著我們在vms002主機上重新創建如下的7個文件,如果我們希望查詢文件大小正好等于3M的文件,則直接使用“3M”即可,如果我們希望查詢大于3M的所有文件則可以使用“+3M”參數,此時我們便可以根據文件的大小size進行查詢。
# rm -rf [a-z]*---刪除rh224目錄中的所有文件
# dd if=/dev/zero of=file1 bs=1M count=1---創建一個1M的文件file1
# find -size 3M---查詢文件大小正好為3M的文件
# find -size +3M---查詢文件大小大于3M的所有文件
# find -size +3M -o -size 3M---查詢文件大小大于且等于3M的所有文件
(4.9)我們還可以根據文件的時間屬性進行查詢,我們可以查詢創建的文件的時間間隔為1天的文件,創建的文件的時間間隔大于1天的文件,創建的文件的時間間隔小于1天的文件。
# find -mtime 1---查詢所創建的文件的時間間隔為1天的
# find -mtime +1---查詢所創建的文件的時間間隔大于1天的
# find -mtime -1---查詢所創建的文件的時間間隔小于1天的
(4.10)我們還可以通過mmin參數以分鐘的精度查詢文件的創建時間狀態。
# find -mmin 44---查詢文件的創建時間為44分鐘的
# find -mmin -44---查詢文件的創建時間少于44分鐘的
# find -mmin +44---查詢文件的創建時間超過44分鐘的
(4.11)我們還可以通過文件的類型type進行查詢,我們先在系統中創建一個目錄rh224,再創建一個軟連接從file6文件連接指向lwang文件(圖4-15)。我們知道在查詢文件屬性的時候“d”參數表示目錄文件,“-”表示的普通文件,“l”表示的軟連接,“b”表示的是塊設備及block文件,“c”表示的是字符設備。如果我們想要查詢一個塊設備類型的文件,則可以使用“-b”參數,如果我們想查詢一個普通類型的文件設備,則可以使用“-f”參數(圖4-16)。
# ln -s lwang file6---創建一個軟連接,file6連接到lwang文件上
# find -type b---查詢塊設備類型的文件
# find -type f---查詢普通文件類型的設備
(4.12)我們也可以通過權限perm來進行查詢,例如我們現在設計一個權限ugo=364(圖4-17),同時我們將file1文件的權限設置為364,然后我們查詢當前目錄下權限完全符合364設置的所有文件,此時發現所有文件中只有file1文件是符合權限要求的(圖4-18)。
# chmod 364 file1---修改file文件的權限為364
# find -perm 364---查詢當前目錄下權限完全符合364設置的所有文件
# find -perm +364
(4.13)我們將權限至少為364的文件都挑選出來,因此發現file1、file2、file6三個文件是符合要求的。
# find -perm -364---查詢的權限可以比364的權限多,但是不可以少
(4.14)我們可以使用/364表示只要文件的ugo三個權限中有任意一個位置的權限含于我們查詢的364三個位置上的一個權限,那么此文件就是符合要求的。此時我們發現除了lwang的權限是不符合要求的,其他的文件都是符合要求的。
# chmod 200 file3---將file3文件設置為200
# chmod 004 file4---將file4文件設置為004
# chmod 020 file5---將file5文件設置為020
# chmod 411 lwang---將lwang文件設置為411
# find -perm /364---查詢ugo三個權限中有任意一個位置的權限含于我們查詢的364三個位置上的一個權限的文件
(4.15)如果我們想查詢對應的文件的屬性,可以使用xargs命令進行操作,將查詢出的file開頭的文件通過xargs參數傳遞給ls命令,此時便可以查看查找出來的文件的屬性信息了(圖4-21)。同時我們也可以使用xargs參數執行刪除的操作(圖4-21-1)。
# find -name "file*" | xargs ls -l---查詢file開頭的所有文件的屬性
# touch file{1..10}---創建10個file開頭的文件
# find -name "file*" | xargs rm -rf---將file開頭的文件全部刪除
(4.16)第二種方式我們也可以使用“-exec”命令查看查詢出來的文件的屬性信息,通過使用“-exec”將查詢出來的file開頭的所有文件全部刪除。
# find -name "file*" -exec rm -rf {} \;---將查詢出來的file開頭的所有文件全部刪除
(4.17)如果我們當前目錄中除了文件還有目錄,并且目錄下還包含子文件夾,那么此時我們在執行“# find -name lwang”的命令時,會自動的到子文件夾中做遞歸查詢。如果現在我們并不想做深層的查詢,只希望是做1層的查詢,此時我們可以使用“# man find”進行查詢,然后查找“maxdepth”關鍵字即可。遞歸查找
# find -maxdepth 1 -name lwang---在當前目錄的第一層查找文件名為lwang的文件
(五)其他查找工具
(5.1)在Linux系統中我們還有其他的常用工具用來進行查詢操作,例如which命令,我們想要查詢date命令具體是在哪個路徑下執行的,則可以使用“# which date”進行查詢。
# which date---查詢date命令具體是在哪個路徑
# which vim
# which ifconfig
(5.2)我們還可以使用locate命令,例如我們想要查詢系統中關于ceph關鍵字的所有文件信息,我們可以使用“# locate ceph”命令,此時我們可以查詢出系統中關于ceph關鍵字的所有文件信息(圖5-2)。但是我們如果在系統中臨時創建一個文件ceph.txt,此時我們發現并不能搜索到新創建的文件(圖5-3),這是由于locate命令在查詢的時候使用的是一個數據庫中的信息,而這個數據庫是在一周左右更新一次,所以此時我們搜索剛剛創建的文件的時候是查詢不到任何信息的,此時我們需要做的就是更新數據庫即可,此時我們發現已經可以搜索到剛剛創建的根目錄下的ceph.txt文件了(圖5-4)。
# locate ceph---查詢系統中關于ceph關鍵字的所有文件信息
# updatedb---更新數據庫
(5.3)有時候我們在使用locate命令的時候,很容易和locale命令混淆,因為它們長得太像了像雙胞胎一樣。其中locale命令是來設置我們系統的默認編碼的。我們在xshell中使用ssh登錄的時候,系統的編碼是UTF-8,因此我們必須要保證ssh客戶端的編碼和系統編碼保持一致,否則就會出現亂碼的問題。
(5.4)例如我們在打開瀏覽器的時候,當前系統默認是使用“LANG=zh_CN.UTF-8”即中文打開的,但是我們想要以美式英語的方式打開,此時我們可以使用在執行firefox命令之前使用LANG命令指明美式英語編碼即可(圖5-7)。如果我們想修改系統默認的編碼,則應該在/etc/locale.conf配置文件中進行修改(圖5-8)。
注意:在RHEL 6系統中,系統的默認編碼是在/etc/sysconfig/i18n文件中進行配置的。
# LANG=en-us firefox &---使用美式英語的方式打開瀏覽器
# cat /etc/locale.conf
—————— 本文至此結束,感謝閱讀 ——————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。