suaLinux賬戶管理】
1, 怎樣登入Linux主機?當你輸入帳號密碼系統怎麼判斷呢?
1)先尋找 /etc/passwd 檔案裡有木有這個帳號
沒有:跳出
有:將跟該帳號對應的UID 與 GID 讀出來,還有 shell設定與家目錄(home)
2)再尋找 /etc/shadow 檔案裡對應的 GID跟UID 密碼是不是符合
符合:登入系統
不符合:跳出
root的 UID 跟 GID均為 0
2, passwd 的構造
第一欄:帳號名稱
第二欄:密碼(由於將密碼搬到etc/shadow 中就用 x代替)
第三欄:UID
第四欄:GID 跟/etc/group 檔案有關
第五欄:說明
第六欄:家目錄
第七欄:shell 溝通人類下達命令與硬體之間真正動作的介面!
3, shadow 的構造
第一欄:使用者名稱
第二欄:密碼(密碼欄第一個字元為 * 表示使用者不用來登陸)就是說管理員只要在“不聽話”的帳號密碼前加一個 * 他就登陸不上了!
【root密碼忘記了怎麼辦?】
Single 模式登陸進入 /etc/shadow 檔案編輯將密碼清空:登陸後用 passwd再設定密碼就可以了。
第四欄:上次更改密碼的日期。15274為累計天數
第五欄:密碼需要變更的天數
第六欄:以後的都不重要了…………囧囧囧
4, /etc/group 與 /etc/gshadow簡介
群組名稱密碼群組ID 支援的帳號名稱
瞭解下就行了
5, 增加使用者的一般步驟
Groupadd –g 600 test //-g 是自行設定GID大小
Groupdel test
Useradd -u 666 -g 600 -d /home2 -s bash tian
// UID 666 屬於GID為600的群組 -d 說明家目錄 -s 說明 shell
//此外使用useradd 時候系統會自動的將 /etc/skel 複製為家目錄要想增加家目錄下面的東西只需要在使用 useradd 之前更改 /etc/skel
6, 關於帳號變更時間、密碼長度、密碼最小值、UID_MIN、GID_MAX的設定在/etc/login.defs
關於useradd 命令的情況及其設定在檔案 /etc/default/useradd
7, passwd 命令的使用
查看其存放位置:which passwd ls –l `which passwd`存放在/usr/bin/passwd
Passwd root 根據提示更改密碼
8, sudo 執行root使用者才能執行的命令
sudo vi /etc/shadow但是需要輸入使用者的密碼而不是 root密碼
9,查詢賬戶的 UID GID (除了在 /etc/passwd /etc/group中直接查看)
Id root
Finger root //查詢相關資訊
Groups //直接輸入就可以看到目前使用者所屬的群組
【一, 例行性命令】定時做的任務
1, 關於使用圖形化設定介面命令的解答
ntsysv //開啟介面
如果 RedHat 提示找不到命令的話,應該是變數設定的問題!
解決方案如下:
1) 先在命令列中輸入
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin:
斷行符號
這樣你可以臨時恢複環境變數設定,
然後就可以用了。想一直有用的話
#或者$ cd ~
vi .bashrc或者vi .bash_profile
然後把上邊那句寫進去,好象要加點什麼吧。
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin$PATH
下次使用bash的時候就生效了。
2) 長久設定(沒有解決)
2, at 用法(一次性執行的命令)
【】/etc/crontabcron服務會每分鐘讀一次這個檔案跟下面的檔案
【】當你下達命令時候,命令會寫在:/var/spool/cron目錄中自動建立一個以使用者名稱命名的文檔記下命令
【】執行的記錄放在:/var/log/cron
1)at –m time (例如:at -m 10pm 在晚上10點執行****任務執行時螢幕輸出結果)
-m //表示螢幕輸出執行結果
time格式:04:20 2011-11-03; 4pm+3 days;三天后的下午4點執行
1am May 30 //5月30 淩晨1點執行
寫上時間後會出現這個符號>寫上要執行的命令 Ctl+D 結束命令
2)atq //查看當前任務
3)atrm number //刪除任務這裡的number 為任務號 atq可以查看
3,crontab用法(可以迴圈執行的命令)
參數解析:-l //列出crontab的內容
-e // 編輯crontab
-r //刪除crontab的內容(全部刪除)
例題:Crontab -e //進入vi編輯介面
59 23 1 5 * mail tianshuai </home/test/lover.txt
解析:分鐘/小時/日/月/年(*代表什麼都適合)
意義:想要在每年的 5月1號 23:59 發一份信給tianshuai
// */5 每隔5分鐘執行一次
收到的mail 會存放在 /var/spool/mail/tianshui 檔案內
【二, 程式與資源管理】
1,X-Window只是Linux下的一套軟體,不能算作業系統
2,man 命令(系統執行man命令的時候會到 /etc/man.conf中尋找 MANPATH而MANPATH存放在 /usr/share/man /usr/local/man中)
, 3,背景工作管理
1) &讓命令在背景執行。如:Find / -name test &
2) Ctrl + Z 背景執行不被 Ctrl +C中斷(比如:vi 編輯時可以先暫停)
3) Jobs 查詢
4) fg number //將暫停任務拿到前台來執行
5) bg number //將背景中任務由暫停à運行
6) kill number // -9 強制中斷進程
7) ps –aux //查看正在執行的系統進程。
重要的一列:STAT:該程式的狀態,( R )為可執行檔,( S )為該程式正在睡眠中,就是沒有執行了,( T )正在偵測或者是停止了,( Z )殭屍程式,就是 zombie 死掉的程式啦!需要以 kill 除去囉!
Ps -l //也可以顯示
8) Top 查看進程 //動態查看,每隔5秒重新整理
9) Free 查看記憶體使用量情況
10) Uname -a //所有系統資訊 -p //CPU資訊 -n //列出host name -r//kenel 版本資訊
ps –aux | grep crondd
【三, 開機流程與Loader】沒仔細看
【四, 原始碼與Tarball】
1),File aa.txt //查看檔案的類型及相關資訊
2),利用Patch 更新原始碼
1,原始代碼,想更新expatch.old
expatch.old
echo tianshuai
expatch.new
echo tianshuai
echo is a student
2,輸入命令查看兩個文檔不同
diff -c expatch.old expatch.new
輸出:
*** expatch.old 2011-11-04 19:42:09.000000000 +0800 //這是等待更新的
--- expatch.new 2011-11-04 20:03:24.000000000 +0800
***************
*** 1 ****
--- 1,2 ----
echo tianshuai
+ echo is a good student //先添加代碼
3,vi patch.path
將上述代碼拷貝進去
執行命令:patch –p0 < expatch.patch
3),靜態連結庫 lib***.a
編譯行為:整個靜態連結庫都整合到執行檔案
獨立執行狀態:編譯成功後可以獨立執行,不必要求讀取函數庫
升級難度:需要從新編譯
動態連結程式庫 lib***.so
編譯行為:編譯後只指向動態函數庫位置,沒有整合到執行檔中
獨立執行狀態:不可以獨立執行,必要求讀取函數庫存在且目錄不變
升級難度:不需要重新編譯
4),驗證軟體的正確性
MD5sum -bct filename
-b //binary 的讀文檔方式
-c //檢驗MD5sun的檔案指紋
-t //文字形態讀取 MD5sum 的檔案指紋
【六,RPM與SRPM套件管理員】
1),RPM (RedHat Package Manager) *******.rpm
安裝套件時不需要將套件源碼編譯,但是一定要跟當初安裝的主機的環境一致才可以安裝。必須滿足套件的相依性屬性需求。安裝的時候會將套件的資訊寫入RPM資料庫,以便未來的查詢、驗證、與反安裝。
缺點:反安裝時,不要把系統底層套件移除,否則會出現問題。
2),SRPM(Source RedHat Package Manager) ********.src.rpm
帶源碼的套件。就是要想安裝需要,編譯一下。
好處是,自己可以修改源碼後再編譯。
3),詳解RPM
rpm -i ****.rpm //安裝時
-I //安裝的意思
-v //顯示細節
-h //已安裝資訊列顯示安裝進度
rpm -e **** //卸載
提示:can't create transaction lock on /var/lib/rpm/__db.000
原因:沒有以root身份登入安裝
解決方案:su root 然後安裝就可以了
4),linuxqq-v1.0.2-beta1.i386.rpm
套件名版本釋放次數適合的硬體平台附檔案名稱
********************製作成功RPM********************************
5)1,下載zxvf rp-pppoe-3.10.tar.gzhttp://www.roaringpenguin.com/pppoe/
2,最好轉到root身份下執行 su root
3, cp /home/rp-pppoe-3.10/rp-pppoe.spec /usr/src/redhat/SOURCES/
cp /home/rp-pppoe-3.10.tar.gz /usr/src/redhat/SOURCES/
//需要將設定檔跟壓縮包同時拷貝到製作RPM 所需路徑下
4, cd /usr/src/redhat/SOURCES/
5,rpmbuild -bb rp-pppoe.spec <==僅編譯成 RPM 檔案
rpmbuild -ba rp-pppoe.spec <==編譯並同時產生RPM 與 SRPM 檔案
出現錯誤: RPM build errors:
Installed (but unpackaged) file(s) found:
解決辦法:
將/usr/lib/rpm/macros 中
%__check_files /usr/lib/rpm/check-files %{buildroot} 注釋掉
步驟:cd /usr/lib/rpm/然後:chmod a+w macros
6,rpm –ivh ******.rpm //安裝自己製作的rpm包吧
【七,Tarball跟rpm區別】
Tarball 是原始碼,打包成 .tar.gz 解壓後含:
1. 原始碼2,偵測程式檔案(configure/config)3,套件的安裝說明(INSTALL或READEME)
2. 但是反安裝很麻煩,就是卸載起來不好辦。
RPM 是安裝包 rpm –ivh ******.rpm 安裝即可。可能依賴性比較高!!
【八,核心編譯與模組管理】
概念:將核心的原始碼編譯成binary的可執行檔,成為系統可以認識的執行檔案。
下載命令:wget http://aerosol.ev.ncku.edu.tw/~vbird/download/linux-2.4.18.tar.gz
查看核心版本:uname -r
1),核心的編譯:要將核心放在這個檔案夾下/usr/src/linux
2),如果沒有linux 檔案夾。直接將解壓的kernel 檔案夾放到/usr/src目錄下。然後cd usr/src/linux***
3),make mrproper //去除已經編譯過的檔案
4),特別注意:如果你編譯兩次以上,會有上次編譯的模組放到 /lib/modules中
Cd /lib/modules
Mv file file.old
5),make menuconfig //設定 kernel 的選項(這裡一定要參照說明,有很多服務還有硬體支援一定要選中)
6),開始編譯: make dep //建立相依的屬性關聯性
Make clean //將舊資料去除
Make bzImage //開始編譯核心
Make modules //開始編譯模組
Make modules_install //將資料安裝在 /lib/modules/***中
Make install //將建立的核心安裝上
7)安裝核心:核心編譯完成放在/usr/src/linux/arch/i386/boot/bzImage中了
需要將核心放在/boot目錄下
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.18
【九,系統設定常用指令】
1),setup //一個圖形化設定介面
2),立即啟動服務:啟動apache
/etc/rc.d/init.d/httpd start
【十,認識系統服務】
1),vi /etc/services //視窗與服務的對應關係
第一欄:Daemon name
第二欄:daemon 使用的port以及網路資料包傳送時的類型
第三欄:服務的說明
Service **** start //啟動服務
3),系統開啟的服務
netstat -r //顯示當前的路由表
netstat -a //顯示目前所有網路的聯機狀態
netstat -t/-u //顯示Tcp Udp 封包的狀態
netstat -l //僅顯示LISTEN的內容
netstat -tlp //得到目前在 LISTEN 的 port 的服務名稱
LISTEN:亦即監聽狀態中的 port
ESTABLISHED:已經建立聯機的聯機狀況
TIME_WAIT:該聯機已經是等待的狀態
【十一,認識登入檔】
Chattr +a filename //檔案將不能進行操作
Chattr -a filename //檔案恢複操作
Last // 調出登陸日誌