馬哥培訓第三天

火星人 @ 2014-03-08 , reply:0
←手機掃碼閱讀

上節內容回顧:

linux文件類型
-
d
c
b
p
s
l

命令歷史:上下鍵可以翻看歷史.
history:所有歷史命令,默認可以查看1000個.
HISTSIZE變數:定義保存命令緩存區的命令歷史條數.
HISTFILESIZE:定義命令歷史文件保存的歷史命令條數.
HISTFILE:定義命令歷史文件保存的文件名
HISTCONTROL=
ignorespace 忽略以空白開頭的命令
ignoredups 忽略重複的命令
ignoreboth 忽略以上兩種
erasedups 刪除重複命令.
-c 清空歷史命令
-d n 清除從第n條往後的命令.
-w 把本次登錄所執行過的命令寫入文件(默認只有關機后,才能被寫入文件/HOMEDIR/.bash_history)
n(數字) 顯示最的n條命令
!n 執行過去的第n條命令
!string 執行命令歷史列表當中最近一次以指定字元串開始的命令
!! 執行最后一次執行的命令
ESC . 調用最后一次命令的參數
ALT . 同上
!$ 同上

[root@localhost ~]# ls -ld /etc/yum.repos.d/
drwxr-xr-x 2 root root 4096 2009-07-08 /etc/yum.repos.d/
[root@localhost ~]# ls !$
ls /etc/yum.repos.d/
rhel-debuginfo.repo



環境變數:定義用戶的工作環境某個方面的屬性.

查看文本文件
cat concatenate(連接)
cat可以看一個文件的內容,也可以同時查看多個文件
-n 顯示的時候加上行號.
-E, --show-ends
display $ at end of each line 顯示文件的換行符.linux的換行符是$符號.
-v, --show-nonprinting
use ^ and M- notation, except for LFD and TAB 顯示非列印字元.顯示的時候不顯示TAB製表符
-T, --show-tabs
display TAB characters as ^I 顯示TAB製表符.

tac 反向顯示,跟cat顯示的相反.


more/less
more:分屏顯示文件,顯示到最后自動退出.


less:分屏顯示文件,顯示到最后不會退出.支持前後翻頁和翻行.支持/內容搜索

head/tail:默認顯示文件的前10行和后10行
顯示指定行數 後面可以直接跟數字以指定顯示的行數.

tail
-f, --follow[={name|descriptor}]
output appended data as the file grows; -f, --follow, and
--follow=descriptor are equivalent



wc 統計文件有多少行,多少單詞,多少位元組
[root@localhost ~]# wc /etc/init.d/functions
583 2085 14000 /etc/init.d/functions
行數 單詞數 位元組數
-l 統計文件有多少行
-w 統計文件有多少單詞
-c 統計文件的位元組數.

cut -d指定分隔符 -f指定顯示欄位
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no
delimiter character, unless the -s option is specified

例:
cut -d : -f1 /etc/passwd 顯示passwd文件第一個欄位
cut -d : -f1-3 /etc/passwd 顯示文件passwd第一個欄位到第三個欄位
cut -d : -f1,7 /etc/passwd 顯示文件passwd第一個欄位和第七個欄位.

sort:排序
以字母在ASSIC碼錶中的順序進行排序,默認以字母在字母表中的順序進行排序.默認為升序.
-r, --reverse 逆序排序.
reverse the result of comparisons
-n, --numeric-sort 以數值大小的方式進行排序.默認只對第最高位進行比較,小的在前,大的在後.
compare according to string numerical value
-f, --ignore-case 不區分大小寫
fold lower case to upper case characters

-u, --unique 重複的行只顯示一次.
with -c, check for strict ordering; without -c, output only the
first of an equal run


uniq 去除重複的行(只能去除連續重複的行,如果兩行內容一樣,但是不連續,則不去除.)
-u, --unique 只顯示不重複的行
only print unique lines
-d, --repeated 只顯示重複的行.多個重複的行只顯示一次.
only print duplicate lines
-c, --count 統計重複的行出現的次數.
prefix lines by the number of occurrences




tr:
tr - translate or delete characters 轉換或刪除字元
tr [OPTION]... SET1 [SET2]
cat /etc/passwd|tr 'abc' 'ABC' 把小寫的abc換成大寫的ABC
tr 'a-z' 'A-Z' </etc/passwd 把passwd里的小字字母換成大寫字母顯示(只改變顯示效果,並不修改文件)

tr -d 'abc' /etc/passwd 刪除文件passwd里的abc字元.

linux用戶管理
Unix, 多用戶 ,多任務
用戶:獲得設定計算機許可權的集合.許可權是界定不同的用戶所能操作計算機的資源的範圍.用戶就是許可權的集合.
UID:User idetifyed
密碼:驗證用戶身份的憑證.
用戶:
管理員,root UID:0
系統用戶,不需要登錄系統,只是在運行某些程序的時候以該用戶的身份進行運行 UID:1-499
普通用戶, 可以登錄系統的普通用戶 UID>=500
linux用戶密碼存放
單向加密 MD5, SHA1, SA256 輸入的數據可以任意長度,輸出的數據長度是定長的.
MD5:Message Degist 信息摘要. 僅能根據數據獲取特徵碼,不能根據特徵碼獲取數據.
MD5 128位的定長輸出
SHA1: 160位的定長輸出
SHA256: 256位的定長輸出

組:group
GID 組是許可權的容器,可以將此許可權映射到組中的用戶上.
私有組(新建用戶時產生的組),系統組(系統用戶所在的組,不做登陸),公共組(所有用戶都可以加入的組)
安全上下文:系統上每一個進程的運行,總是以某個用戶身份在運行.這個進程能訪問的系統資源也即是該用戶能訪問的資源.




許可權:
r:讀
w:寫
x:執行


對於目錄
r:可以查看目錄中的內容
w:可以在目錄中建立或者刪除文件
x:可以進入到目錄,可以執行ls -l

許可權 二進位 八進位
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7


用戶: /etc/passwd 644
密碼: /etc/shadow 400
組: /etc/group 644
組密碼:/etc/gshadow 400

/etc/passwd
格式: account:password:UID:GID:GECOS:directory:shell
用戶:密碼:用戶編號:組編號:描述信息:用戶家目錄:用戶登錄的shell

添加一個用戶
useradd USERNAME
-u 指定用戶的UID
-g 指定用戶的GID(不會自動創建基本組,指定的GID存在,不然會報錯.)
-c 指定註釋信息
-d 指定用戶的家目錄(目錄不能存在,如果存在,剛不複製用戶的模板[複製模板其實是重命令/etc/skel])
-s 指定用戶登陸系統時候的默認shell
-r 指定創建的用戶為系統用戶(沒有家目錄)
-G 指定用戶的附加組,grp1,grp2... 可以是多個
-M 不創建用戶的家目錄
-D 指定創建用戶時候的默認選項
-b HOME DIR
-e EXPIRE DATE
-f INACTIVE
-g GROUP
-s SHELL
在建立用戶的時候,會建立一個跟用戶名同名的組做為用戶的基本組.
在創建用戶的時候,默認信息的設置,被定義在/etc/default/目錄里
[root@localhost default]# less useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

設置密碼
passwd USERNAME
-l 鎖定指定賬戶
-u 解鎖指定賬戶
-fu 強制解鎖
--stdin 接受傳入字元
echo "redhat" | passwd --stdin redhat 不交互,直接到用戶redhat的密碼設置為redhat


新加的用戶是沒密碼的,查看shadow用戶,可以看到,第二個欄位為!!表示用戶沒密碼,被鎖定,不能登錄.
redhat:!!:14811:0:99999:7:::
各欄位意義如下:

· login name

· encrypted password

· days since Jan 1, 1970 that password was last changed

· days before password may be changed(密碼最短使用期限)

· days after which password must be changed(密碼最長使用期限)

· days before password is to expire that user is warned(密碼過期之前多少天之前發出警告)

· days after password expires that account is disabled(在密碼過期多少天用戶會被禁用)

· days since Jan 1, 1970 that account is disabled

· a reserved field(預留,目前尚末使用)

/etc/skel 用戶家目錄模板


建立用戶的過程中,系統所做的操作:
1, /etc/passwd
2, /etc/shadow
3, /etc/group
4, /home/USERNAME


/etc/group
group_name:passwd:GID:user_list
組名:組密碼:組ID:以此組做為附加組的用戶列表

在剩下的三月里,你願意與學習結為伴侶,無論貧窮還是富貴,無論電腦還是手機,無論多困或者多累,無論想吃還是想睡,都要把學習放在第一
位,以不落後為目標,同甘共苦同舟共濟永不言棄,愛惜她尊重她理解她保護她,你願意這樣做么? Yes,I do!

pwck 檢測用戶和密碼是否一致

創建用戶時的相關信息被定義在:/etc/login.defs

id
# id USERNAME 顯示用戶ID的相關信息
id - print user identity

finger (手指)
finger - user information lookup program
顯示用戶的詳細信息.
[root@localhost ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash


On since Thu Jul 22 00:37 (CST) on tty1 197 days 14 hours idle
On since Thu Jul 22 01:02 (CST) on pts/2 from 172.16.16.1
New mail received Thu Jul 22 04:02 2010 (CST)
Unread since Wed Jul 21 19:23 2010 (CST)
No Plan.
上面的On表示用戶當前下在線,New mail表示有新的郵件.


# chfn
chfn - change your finger information 改變用戶的finger的相關信息.
# chsh chsh - change your login shell 改變用戶的登陸SHELL

#usermod
usermod - modify a user account
選項類似useradd.
-a 給用戶新加一個附加組(並保留原有的基本組)
-g 改變用戶的基本組(不保留原來的基本組)
-G 給用戶添加附加組.
-l 改變用戶的登錄名
-L 鎖定用戶賬號
-U 解鎖用戶
-o 兩個用戶使用同一個ID號
-e 用戶賬號的失效時間(用戶賬號,不是密碼)



# chage - change user password expiry information

userdel 刪除用戶
-r 刪除用戶的時候,連同家目錄一起刪除


groupadd
groupdel
gpasswd:為組添加密碼
newgrp:
newgrp - log in to a new group 讓用戶登錄到一個新的組,新的組是該用戶的附加組,否則將提示用戶輸入組的密碼.

作業:
1, 創建一個用戶mandriva,其ID號為2002,基本組為disto(組ID為3003),附加組為linux
2, 創建一個用戶fedora,其命名為Fedora Community,默認shell為csh;
3, 修改mandriva的ID號為4004,基本組為linux,附加組為disto和fedora;
4, 將mandriva的默認shell改為/bin/bash;



Linux安全模型;
1, 每一個文件都有屬主和屬組;
2, 每個進程都以某個用戶和組的身份運行;
3, 讀,寫和執行;
3, 先用戶,組,最后是其它用戶;

# chmod/chgrp

chown redhat[:|.]centos filename 將文件filename的屬主和屬組改為redhat和centos


chown .centos filename 將文件filename的屬組改為centos
chown --reference=filename destfile 將destfile文件的屬主和屬組參照filename的進行修改.

# chmod


chmod
chmod - change file access permissions
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...(八進位的許可權模型)
chmod [OPTION]... --reference=RFILE FILE... (參數文件,把許可權改成跟指定文件一樣)
-R, --recursive
change files and directories recursively(改變目錄及目錄中的所有文件)

--reference=RFILE
use RFILE』s mode instead of MODE values

8進位模型: 影響全局,不僅屬主許可權會改,屬組和其它也會改.
chmod 755 filename 把filename的許可權改為755 即: rwxr-xr-x
chmod 7 filename 把filename的許可權改為007,一般要指定三位數,如果位數不夠,則在前面補0,一直補夠3位

指定某一類用戶: u為屬主,g為屬組,o為其它
chmod u=rwx,g=r,o= filename 把filename的許可權改為屬主rwx,屬組為r,其它用戶沒任何許可權
chmod u=r filename 只改變屬主的許可權,不影響其它
chmod u x filename 屬主加上執行許可權
chmod u-x filename 屬主減去執行許可權
chmod x filename 全部加上執行許可權
chmod u r,g-r filename 屬主加上r,屬組減去r

練習:
1, 新建用戶jerry;然後複製/etc/skel/目錄至/tmp,要求為/tmp/skel目錄指定許可權,要求如下:
屬主屬組均為jerry,包括內部的所有文件
skel及其內部的所有文件的屬組沒有任何許可權,其它用戶也沒有任何許可權;
將/tmp/skel/.bashrc的許可權再次改為跟/etc/issue一樣;


手動添加一個用戶:
slackware,slackware,uid 5000 gid 5000
1, /etc/group
slackware:x:5000:
2, /etc/passwd
slackware:x:5000:5000:Test User:/home/slackware:/bin/bash


3, /etc/shadow
slackware::15355:0:99999:7:::
openssl passwd -1(MD5加密) -salt 12345678
4, cp -r /etc/skel /home/slackware
chown -R slackware.slackware /home/slackware && chmod -R go= /home/slackware
###############################################################
echo
-n 輸出后不換行
-e 使用控制符 \n \t \b \v等

echo -e "\033[33mThis is a test line.\033[0m"
\033[ 表示使用顏色,跟後面的\033[0m 組合使用 0m表示調用顏色結束
33m 第一個3表示背景色,后一個3表示前景色.

reset 重置終端

本文出自 「吖吖個呸」 博客,謝絕轉載!





[火星人 via ] 馬哥培訓第三天已經有355次圍觀

http://www.coctec.com/docs/linux/show-post-46962.html