1. 文件默認(rèn)權(quán)限: umask
umask
0022
umask -S #Symbolic, 以符號(hào)類型的方式顯示權(quán)限
u=rwx,g=rx,o=rx
#設(shè)置當(dāng)前用戶的umask:
umask 0002
#整體配置文件為/etc/bashrc
2. 文件隱藏屬性: chattr, lsattr
- chattr只能在Ext2/Ext3的文件系統(tǒng)上面生效
#chattr (設(shè)置文件或目錄的隱藏屬性, 較多選項(xiàng)需要root來設(shè)置)
chattr [+-=] [ASacdistu] filename
+: 新增一個(gè)特殊參數(shù)
-: 刪除一個(gè)特殊參數(shù)
=: 僅有后面接的參數(shù)
A: 當(dāng)你訪問此文件(或目錄)時(shí), 他的訪問時(shí)間不會(huì)被修改, 可避免I/O較慢的過度訪問磁盤
S: 進(jìn)行文件修改時(shí), "同步"寫入磁盤
* a: 文件只能增加數(shù)據(jù)(不能通過編輯器追加), 不能刪除和修改, 包括文件的重命名, 移動(dòng)
c: 自動(dòng)將文件壓縮, 讀取時(shí)自動(dòng)解壓, 存儲(chǔ)時(shí)也是先壓縮再存儲(chǔ)(對(duì)大文件特別有效) #compress v.壓縮
d: 當(dāng)dump程序被執(zhí)行時(shí),它可以讓一個(gè)文件(或目錄)"不會(huì)被備份"
* i: 一個(gè)文件"不可被刪除, 修改, 移動(dòng), 設(shè)置連接也無法寫入或添加數(shù)據(jù)" #immutable a.不可變的
s: 若這個(gè)文件被刪除, 則此文件會(huì)被完全從磁盤中刪除 (srcure deletion)
u: 與s相反, 若這個(gè)文件被刪除, 其實(shí)數(shù)據(jù)內(nèi)容還在磁盤中, 可以使用來找回該文件 #undelete a.復(fù)原
#lsattr (顯示文件或目錄的特殊屬性)
lsattr [-adR] filename
-a: 將隱藏文件的屬性也秀出來
-d: 若后面接的是目錄, 僅列出目錄本身的屬性
-R: 連子目錄的屬性一并顯示
#實(shí)例:
chattr +aij /home/alex/
lsattr -d /home/alex/
SUID, SGID, SBIT
文件特殊權(quán)限
1. SUID
Set UID, # -rwsrwxr-x
限制:
#1. 僅對(duì)二進(jìn)制程序(binary program)有效, 對(duì)目錄無效
#2. 執(zhí)行者對(duì)該程序具備 x 權(quán)限
#3. 本權(quán)限僅在執(zhí)行過程(running time)中有效
功能:
#1. 執(zhí)行者在執(zhí)行過程中將具有所有者(owner)的權(quán)限
#2. SUID僅可用在二進(jìn)制程序上, 不能用在shell script上.
#3. 因?yàn)閟hell script只是將很多二進(jìn)制文件調(diào)進(jìn)來執(zhí)行而已. 所以SUID的權(quán)限部分, 還是要看shell
# script中調(diào)用的程序的設(shè)置, 而不是看shell script本身.
2. SGID
Set GID, # -rwxrwsr-x
文件:
#1. 對(duì)二進(jìn)制程序有效
#2. 執(zhí)行者對(duì)該程序具備 x 權(quán)限
#3. 執(zhí)行者在執(zhí)行程序時(shí)會(huì)暫時(shí)獲得程序用戶組的支持
目錄:
#1. 用戶對(duì)此目錄具備 rx 權(quán)限, 則可進(jìn)入該目錄
#2. 用戶在此目錄下的有效用戶組(effective group)將變成此目錄的用戶組
#3. 若用戶在此目錄下具備 w 權(quán)限, 則在此目錄下創(chuàng)建的文件的用戶組為此目錄的用戶組
#注: 一般用戶對(duì)此目錄具有 rwx 權(quán)限時(shí), 在此目錄中創(chuàng)建的新文件的用戶組為一般用戶的私有組.
3. SBIT
Set Bit, 只對(duì)目錄有效.
功能:
#1. 用戶對(duì)此目錄具有 wx 權(quán)限
#2. 當(dāng)用戶在此目錄下創(chuàng)建文件時(shí), 僅自己和root才有權(quán)對(duì)該文件進(jìn)行刪除, 重命名, 移動(dòng)等操作
4. SUID, SGID, SBIT權(quán)限設(shè)置
4 SUID
2 SGID
1 SBIT
chmod 5775 /home/alex
chmod ug=rwxs,o+t /home/alex/permission_test.sh
#注: 大寫的S和T, 表示原本位置上無此權(quán)限.
ACL
access contral list, 訪問控制列表
是系統(tǒng)附加的特殊屬性, 因此與文件系統(tǒng)有關(guān).
1. setfacl
set file access control list.
#用法
#setfacl [-bkRd] [{-m|-x} acl參數(shù)] filename
# -m --modify
# -x --remore
# -d 設(shè)置默認(rèn)的aclcanshu,只對(duì)目錄有效, 在該目錄新建的數(shù)據(jù)會(huì)引用此默認(rèn)值.
# -b 刪除所有的ACL設(shè)置參數(shù).
#如何使ACL權(quán)限設(shè)置能被子目錄(包括文件)所"繼承"?
# d:[ug]:用戶列表:[rwx]
#實(shí)例:
# 使alex在/tmp/grouptest下面一直具有默認(rèn)的rx權(quán)限
# setfacl d:u:alex:rx /tmp/grouptest
2. getfacl
get file access control list.
#用法
#getfacl filename
ln
make links between files.
1. 硬連接
hard link
多個(gè)文件對(duì)應(yīng)到同一個(gè)inode號(hào)碼, 只是在某個(gè)目錄下新建一條文件名連接到某inode號(hào)碼的關(guān)聯(lián)記錄.
#用法:
# ln 源文件 目標(biāo)文件
# ln /etc/contab /root/crontab
#真正多出來的只是block塊中的一條實(shí)際數(shù)據(jù)block塊對(duì)應(yīng)的inode記錄.
限制:
# 1. 不能跨文件系統(tǒng)
# 2. 不能連接到目錄
# 因?yàn)槿绻褂糜策B接連接到目錄時(shí), 連接的數(shù)據(jù)需要連同被連接目錄下的所有數(shù)據(jù)都建立連接.
# 舉例:
# 比如你要將/etc使用硬連接創(chuàng)建一個(gè)/etc_hd的目錄時(shí), 那么在/etc_hd下的所有文件名都需要
# 與/etc下的文件建立硬連接, 而不僅是/etc_hd與/etc建立硬連接而已. 同時(shí)/etc_hd內(nèi)部創(chuàng)建一個(gè)
# 新文件時(shí), 連帶的, /etc內(nèi)的數(shù)據(jù)有得要?jiǎng)?chuàng)建一次hard link, ==> 因此造成環(huán)境相當(dāng)大的復(fù)雜度.
2. 軟連接
symboilc link, 符號(hào)連接, 即快捷方式.
軟連接就是創(chuàng)建一個(gè)新文件, 這個(gè)新文件會(huì)讓數(shù)據(jù)的讀取指向目標(biāo)文件的文件名.
新文件的block中記錄的不是實(shí)際文件的inode號(hào), 而是中間文件的inode號(hào).
#用法:
# ln [-sf] 源文件 目標(biāo)文件
# -s 建立symbolic link
# -f --force, remove existing destination files后創(chuàng)建連接文件
手工創(chuàng)建用戶
不要?jiǎng)?chuàng)建純數(shù)字用戶, 系統(tǒng)會(huì)搞不清楚那是 "UID" 還是 "賬號(hào)".
#1. 手工創(chuàng)建用戶組(vi /etc/group)
#2. 用戶組同步(grpconv)
#3. 手工創(chuàng)建用戶(vi /etc/passwd)
#4. 密碼同步(pwconv) 注: 此時(shí)/etc/passwd和/etc/shadow文件內(nèi)均無密碼
#5. 創(chuàng)建密碼(passwd normal_user)
#6. cp -a /etc/skel/ /home/normal_user/
#7. 修改文件權(quán)限(chown -R normal_user:normal_user /home/normal_user)
本文基于<鳥哥的Linux私房菜>, 歸納整理, 在此致謝鳥哥.