突然想到 MySQL 備份的問題,其實 MySQL 本身有一個 “mysqldump” 的指令,可以用來備份/還原資料庫的內容,用這個指令來備份資料通常沒什麼問題,但當你要把資料還原時,除非裡面沒有中文字,否則,中文字的衝碼,經常會導致還原失敗!
解決的方法
方法一: 改用 UTF-8 編碼格式儲存資料,即可繼續使用 mysqldump 指令。
方法二: MySQL 的資料庫放在 [/var/lib/mysql] 下,直接將 [/var/lib/mysql] 下的資料庫目錄用 “tar” 指令備份起來即可(備份及還原前最好先暫停 MySQL 的服務)。
P.S.我已經儘量都把程式及資料庫改成 UTF-8 編碼了,但我還是用 “方法二” 來備份資料的。
程式說明
screen 是一個很方便的程式,可以讓你在同一個畫面開啟多個終端機來操作,即使你要離開電腦,也可以將終端機放到背景執行,下次登入時,再取回來操作。
首先啟動 Screen 程式:
screen
某些終端機視窗會在標題列顯示目前在操作的終端機編號,如果沒有顯示,你也可以輸入:
tty
來了解你目前正在哪個終端機中。
以快速鍵操作
Ctrl + A -> C
新增終端機畫面。
Ctrl + A -> P
切換到上一個編號的終端機畫面。
Ctrl + A -> N
切換到下一個編號的終端機畫面。
Ctrl + A -> Ctrl + A
在兩個終端機之間互相切換。
Ctrl + A -> X
鎖定終端機畫面。
Ctrl + A -> Shift + ”
顯示終端機列表,可供你選取。
Ctrl + A -> W
新視窗的標題列顯示所有的終端機編號 (其中有加上 “*” 表示是目前使用的終端機)。
Ctrl + A ->Shift + S
水平分割視窗 (多按幾下可以持續分割)。
Ctrl + A -> Tab
在分割的視窗做切換。
Ctrl + A -> D
將終端機的程序及畫面放到背景執行。在這種狀態下,用戶可以不須理會這個終端機,即使用戶離線了,只要下次登入時,就可以輸入:
將這個終端機叫回來繼續操作。
screen 的相關指令
啟動 Screen 程式:
查看目前已開啟多少個終端機:
取回被放到背景執行的終端機:
如有多個終端機要取回,可以在指令的後面接著輸入要取回的終端機名稱。
將終端機放到背景執行:
相關網頁
http://www.seety.org/Members/yungyuc/yblog/213
- Posted by citypig at 12:36 am (128 views)
- No comments published
- Filed under: linux
測硬碟速度:
hdparm -tT /dev/hda
UDMA3(ATA33):
# hdparm -X66 -c1 -d1 -m16 /dev/hda
UDMA4(ATA66):
# hdparm -X68 -c1 -d1 -m16 /dev/hda
UDMA5(ATA100):
# hdparm -X69 -c1 -d1 -m16 /dev/hda
轉載自: 中文 PHP 資訊站
在linux中,每個普通用戶都有一個帳戶,包括用戶名、密碼和主目錄等資訊。除此之外,還有一些系統本身創建的特殊用戶,它們具有特殊的意義。其中最重要的是超級用戶,在linux中,它默認用戶名是root。
基本操作
增加一個用戶 newuser :
useradd newuser
passwd newuser
然後根據提示兩次輸入新用戶的密碼,請注意,用useradd增加一個用戶後應該立刻用passwd給新用戶修改密碼,沒有密碼的新帳號將不能使用。在/etc/passwd文件中,沒有密碼的新用戶的記錄是如下一行:
newuser:!!:506:506::/home/newuser:/bin/bash
在這一行裏,用戶的密碼域被設置成了”!!”,這就意味著用戶密碼還沒有設置,用戶不能登陸。(passwd文件的格式是 用戶名:密碼:用戶ID(UID):組ID(GID):全名:用戶目錄:外殼腳本)。
當然你可以用-d參數設置新用戶的主目錄(例如:useradd newuser -d /www),也可以用-g參數為用戶指定新組名(例如:useradd newuser -g linuxusers),你還可以用-G參數把新用戶設成系統其他一些組的成員(例如:useradd newuser -G users,shutdown)。所有這些,你都可以在本站的命令查詢中得到詳細資訊。
附注:相應的,僅僅增加一個新組可以用命令groupadd。
修改現有用戶的帳號:
修改密碼
普通用戶可以用passwd修改自己的密碼,只有管理員才能用passwd username為其他用戶修改密碼。
修改用戶shell設置
使用chsh命令可以修改自己的shell,只有管理員才能用chsh username為其他用戶修改shell設置。注意,指定的shell必須是列入/etc/shells文件中的shell,否則該用戶將不能登陸。
你也可以使用usermod命令修改shell資訊,如下所示:
usermod -s(new shell path)(username)
其中new shell path和username應取相應的值。
修改主目錄設置
usermod -d(new home directory)(username)
如果想將現有主目錄的主要內容轉移到新的目錄,應該使用-m參數,如下所示:
usermod -d -m/www/newuser newuser
修改UID
主目錄中所有該用戶所擁有的文件和目錄都將自動修改UID設置。但是,對於主目錄外該用戶所擁有的文件,只能手工用chown命令修改所有權設置。
修改默認組設置
username -g(group name) or GID username
修改帳號的有效期
如果使用了影子密碼,則可以使用如下命令來修改一個帳號的有效期:
usermod -e MM/DD/YY username
例如把用戶newuser的有效期定為12/31/01:
usermod -e 12/31/01 newuser
刪除或禁止用戶帳號
使用userdel命令刪除現有用戶。例如,下面的命令將刪除bluewind用戶:
如果想同時刪除該用戶的主目錄以及其中所有內容,要使用-r參數來遞迴刪除。值得注意的是你無法刪除已經進入系統的用戶,如果想強行完成,需要先killall有關它的進程,然後再運行userdel命令。
如果只是想暫時禁止某個帳號,可以使用下列方法:
- 使用無效的shell。例如使用usermod -s newshell username將用戶的 shell改為/bin/false(最好把它列入/etc/shells文件裏)。
- 使該帳號過期。如果使用影子密碼,可使用usermod -e MM/DD/YY username命令使該帳號過期。
如果想禁止所有帳號(root帳號當然除外)的訪問,可以創建一個名為/etc/nologin的文件,說明系統暫時不允許訪問。注意,確認你還能用root直接登陸才使用這個辦法,否則你慘了。
本文中的所有命令都可以在linuxaid獲得中文詳細的幫助,下面我們一起來繼續探討有關用戶管理的高級內容。
建立多個超級用戶
不少新系統管理員認為root用戶是唯一的超級用戶,其實root只是系統默認的超級用戶的名稱,root並非因為它叫root而成為超級用戶的。隨便打開一個/etc/passwd文件的例子,你就會發現如下幾行:
root:asiewhgYfaoO/J:0:0:root:/root:/bin/tcsh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
lanf:Yuao56Ioyefg:0:0:bluewind:/home/bluewind:/bin/bash
jake:gUyfaiIodashfj:501:501:jake cheng:/home/jake:/bin/tcsh
apache:!!:502:502::/usr/local/apache:/bin/false
可以看到,root的UID和GID都被設置為0了。實際上,超級用戶的充要條件就是UID和GID都等於0。也就是說,任何用戶,只要它的UID和GID都為0,就與常被稱為root超級用戶沒有什麼兩樣了。比如上面那個例子裏面的lanf,也是一個超級用戶。
所以,可以將任何普通用戶變成超級用戶。但是,這樣做並沒有好處,很多時候這都會增加系統的隱患。除非在組織中需要多個系統管理員管理同一個系統,這就需要有多個超級用戶帳號。這有利於各個管理員明確責任,通過日誌知道不同的人分別做過什麼事。
還有一種情況,也可能出現多個超級用戶帳號,那就是黑客入侵後設置一個看起來象普通帳號的用戶,卻修改了UID和GID使之為0。這樣根本就不需要知道root用戶密碼,就可以執行超級用戶許可權了。而從我們的系統管理員的一方來說,我們不可能時刻注意passwd文件的變化的,沒有那個時間也沒有那個精力。這時只好編寫一個腳本來幫助監視,例如:
/bin/grep '0:0' /etc/passwd |awk 'BEGIN{FS=":"}{print $1}'|mail -s "`date +"%D%T"`"root
這是一個很小的腳本程式,使用了一些常規的命令來查看/etc/passwd文件,把UID和GID為0的行寄給root用戶。把這個腳本放在/etc/cron.daily文件中讓cron運行,root將每天收到一封信,報告當前的超級用戶。
實際上,由於PAM(可插入驗證模組)的限制,在telnet上是不允許超級用戶登入的,也就是說,黑客修改了自己的UID和GID後,想再次登陸從而獲得超級用戶的許可權的話,不修改/etc/seuretty文件是不可能的–除非你傻到自己添加了為TTY設備ROOT用戶登陸許可權。一般可以讓超級用戶先用普通用戶帳號登陸,再su(su命令相關內容請參考本站命令查詢部分)。
為普通用戶分配特權
使用sudo命令可以允許普通用戶執行超級用戶才能執行的命令。無論是基於信任的建立需要時間,還是基於是否存在這種必要,我們都不會把超級用戶的所有權限輕易許人的。這是網管工作的原則。所以,當一些用戶必須訪問某些內容時,我們可以配置sudo以允許單獨的普通用戶運行特權命令。
sudo命令允許已經在/etc/sudoers文件中指定的用戶運行超級用戶命令。例如,一個已經獲得許可的普通用戶可以運行:
sudo vi /etc/passwd
實際上,sudo的配置完全可以讓我們指定某個列入/etc/sudoers文件的普通用戶可以做什麼、不可以做什麼。/etc/sudoers的配置行如下:
空行或注釋行(以#字元打頭):無用行。
可選的主機別名行:用來創建主機列表的簡稱。必須以Host_Alias關鍵字開頭,列表中的主機必須用逗號隔開。例如:
Host_Alias REDHAT=binbu,qd
其中binbu和qd是倆主機名,你可以用REDHAT(別名)統稱它們。
可選的用戶別名行:用來創建用戶列表的簡稱。用戶別名行必須以User_Alias關鍵字開頭,列表中的用戶名必須以逗號隔開。其格式同主機別名行。
可選的命令別名行:用來創建命令列表的簡稱。必須以Cmnd_alias開頭,列表中的命令必須用逗號隔開。
可選的運行方式別名行:也是用來創建用戶列表的簡稱。不同的是,使用這樣的別名可以告訴sudo程式以列表中某一用戶的身份來運行程式。
必要的用戶訪問說明行:用戶訪問的說明語法如下:
user host= [run as user ] command list
在user處指定一個真正的用戶名或定義過的別名,同樣的,host也可以是一個真正的主機名或者定義過的主機別名。默認情況下,sudo執行的所有命令都是以root身份執行。如果你想使用其他身份可以指定。至於command list可以是以逗號分隔的命令列表,也可以是一個已經定義過的別名。例如:
lanf binbu=/sbin/shutdown
這一句說明lanf可以在binbu主機上運行關機命令。
注意:
可以在一行定義多個別名,中間用:隔開。
可以在命令或命令別名之前加上!號,使該命令或命令別名無效。
有兩個關鍵字:ALL 和NOPASSWD。ALL意味著”所有文件”(所有主機或所有命令),NOPASSWD意味著不用密碼。
下面是一個sudoers文件的例子:
#sudoers files#User alias specificationUser_Alias ADMIN=yourid:POWERUSER=hisid,herid#user privilege specification ADMIN ALL=ALLPOWERUSER ALL=ALL,!/bin/su
第三行定義了兩個別名ADMIN和POWERUSER,第五行說明在所有主機上ADMIN都可以以root身份執行所有命令。第六行給POWERUSER除了運行su命令外同等ADMIN的許可權。
列出目前的規則
刪除 “INPUT” 的第 1 條規則
丟棄來自 192.168.1.203 的封包
iptables -A INPUT -p all -s 192.168.1.203 -j DROP
禁止 192.168.1.203 的用戶以 SSH 登入(Port:22)
iptables -A INPUT -p tcp -s 192.168.1.203 --dport 22 -j DROP
儲存防火牆的設定到 filename
從 filename 讀取防火牆的設定
iptables-restore < filename
「htaccess 驗證方式」可以達到以較簡單的方式來規範網頁目錄的讀取權限,以限制哪些用戶可以進入到網頁的哪一層目錄。
建立用戶驗證檔
建立用戶驗證檔,並新增一組帳號及密碼:
htpasswd -c /usr/local/etc/htusers UserName1
繼續增加一組帳號及密碼到驗證檔:
htpasswd /usr/local/etc/htusers UserName2
建立群組資料檔
群組資料檔的目的是要將多個用戶設為一個群組,請新增或編輯 /usr/local/etc/htgroups,依需求增加類似如下的設定:
Group1:UserName1 UserName2
登入驗證檔
在欲執行用戶驗證的網頁目錄下,建立一個 .htaccess 檔案,驗證的方式可針對使用者或群組。
針對用戶:
AuthName " 請輸入帳號與密碼"
AuthType Basic
AuthUserFile /usr/local/etc/htusers
require user UserName1
上述的最後一行是針對 UserName1 做驗證,你也可以改成:
表示針對 /usr/local/etc/htusers 裡的所有用戶。
針對群組:
AuthName " 請輸入帳號與密碼"
AuthType Basic
AuthUserFile /usr/local/etc/htusers
AuthGroupFile /usr/local/etc/htgroups
require group Group1
問題排除
如果在設定 htaccess 認證方式之後,在進入網頁時,仍然沒有跳出驗證的對話框,則請編輯 /etc/httpd/conf/httpd.conf,搜尋相關的 “AllowOverride” 設定,改成:
故名思意,pop-before-smtp 就是在 smtp 前,先用 pop3 的帳號登入,以確保伺服器上有你的帳號。以下的步驟,先將 Sendmail 換成 Postfix,再將 smtp 的認証則改用 pop-before-smtp 的方式。
安裝 Postfix
先移除 sendmail:
使用 apt 安裝 postfix:
編輯 /etc/postfix/main.cf,搜尋之參數及修改方式如下:
myhostname -> host.example.com
mydomain -> example.com
myorigin -> $myhostname
inet_interfaces -> all
mydestination -> /etc/postfix/local-host-names
mynetworks -> 127.0.0.0/8, hash:/etc/postfix/access
relay_domains -> $mydestination
alias_maps -> hash:/etc/postfix/aliases
設定本機收件時的領域名稱,將領域名稱新增到 /etc/postfix/local-host-names,每個名稱佔一行:
example.com
mail.example.com
host.example.com
初始化相關資料庫:
postmap hash:/etc/postfix/access
postalias hash:/etc/postfix/aliases
至此已完成 Postfix 的安裝,直接啟動 Postfix 即可:
安裝 pop-before-smtp
顧名思義,pop-before-smtp 就是在寄信前,必須先用 pop3 檢查郵件,只要 pop3 登入正確,你就可以用同一台伺服器寄信 (30分鐘內)。安裝步驟如下:
安裝 Perl 的 File::Tail、Time::HiRes、Net::Netmask、Date::Parse 模組,建議使用 WebMin 安裝,或執行下列指令:
perl -MCPAN -e 'install File::Tail'
perl -MCPAN -e 'install Time::HiRes'
perl -MCPAN -e 'install Net::Netmask'
perl -MCPAN -e 'install Date::Parse'
從本站下載 pop-before-smtp 的安裝檔至 /tmp,並執行安裝:
cd /tmp
wget http://www.vixual.net/download/source/postfix/pop-before-smtp-1.33-1.noarch.rpm
rpm -ivh pop-before-smtp-1.33-1.noarch.rpm
編輯 /etc/pop-before-smtp-conf.pl,將下列三行前的註解 # 拿掉:
#$file_tail{'name'} = '/var/log/maillog';
#$grace = 30*60;
#$dbfile = '/etc/postfix/pop-before-smtp';
編輯 /etc/postfix/main.cf,在最後面加上:
smtpd_recipient_restrictions = permit_mynetworks,reject_non_fqdn_recipient,check_client_access hash:/etc/postfix/pop-before-smtp,check_relay_domains
啟動 pop-before-smtp,並重新載入 postfix:
service pop-before-smtp start
service postfix reload