Linux下運用虛擬機器進行檔案操作
阿新 • • 發佈:2019-01-02
檔案許可權
檔案許可權存在的意義
系統最底層安全設定方法之一
保證檔案可以被可用的使用者做相應的操作
檔案許可權的檢視
ls -l file
ls -ld dir
ll file
ll -d dir
-l用來檢視檔案 -d用來檢視目錄
檔案許可權的讀取
- |rw-rw-r--| 1 | kiosk | kiosk | 0 | Jul 21 09:18 | file [1] [2] [3] [4] [5] [6] [7] [8] [1] 檔案的型別 - ##空檔案,或者文字 d ##目錄 l ##軟連結 s ##套接字 b ##block塊裝置 c ##字元裝置 [2] 檔案的許可權 rw-|rw-|r-- 1 2 3 1.[u] 檔案擁有著對檔案能做什麼操作 2.[g] 檔案所有組對檔案能做什麼操作 3.[o] 其他人對檔案能做什麼操作 [3] 對檔案:檔案硬連結個數(檔案內容被記錄的次數) 對目錄:目錄中子目錄的個數 [4] 檔案所有人 [5] 檔案所有組 [6] 對檔案:檔案大小 對目錄:目錄中子檔案元資料(matedate可以理解為檔案的屬性)大小 [7] 檔案內容最後一次被修改的時間 [8] 檔案的名稱
如何改變檔案的所有人和所有組
chown|chgrp
使用者 組
chown user file|dir
chown -R user dir 遞迴,使這個目錄和目錄裡的所有檔案和目錄的使用者都是user
chown user:group file|dir
chown -R user:group dir
chgrp group file|dir
chgrp -R group dir
實驗前先在/mnt下建立幾個檔案和目錄,然後監控
用chown命令改變file1的使用者,改變dzh目錄和dzh下所有檔案的目錄
同時改變使用者和目錄使用chown命令,在使用者和目錄之間用:隔開
用chgrp命令改變檔案和目錄的組
如何改變檔案的許可權
對許可權的理解
r
對檔案:是否可以檢視檔案中的內容 -->cat file
對目錄:是否可以檢視目錄中有什麼子檔案或者子目錄 --> ls dir
w
對檔案:是否可以改變檔案裡面記錄的字元
對目錄:是否可以對目錄中子目錄或子檔案的元資料進行更改
x
對檔案:是否可以通過檔名稱呼叫檔案內記錄的程式
對目錄:是否可以進入目錄
更改方式
chmod <u|g|o><+|-|=><r|w|x> file|dir chmod u+x /mnt/file1 ##給使用者對/mnt/file執行的權力 chmod g-r /mnt/file2 ##去除使用者組對/mnt/file讀的權力 chmod ug-r /mnt/file3 chmod u-r,g+x /mnt/file4 chmod -r /mnt/file5 chmod o=r-x /mnt/file6 rwx 210 r=4 w=2 x=1 r-x|r--|--x 5 4 1 chmod 541 /mnt/file1 ##給/mnt/file的使用者讀和執行的權力 使用者組讀的權力,其他人執行權力 7=rwx 6=rw- 5=r-x 4=r-- 3=-wx 2=-w- 1=--x 0=---
注意:寫的許可權比較特殊,如果-r,-x是對ugo同時進行,但是-w和+w只對u執行
umask
umask 系統建立檔案是預設保留的權力
umask 077 ##臨時設定系統預留許可權為077
永久更改umask
vim /etc/profile ##系統配置檔案
59 if [ $UID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then
60 umask 002 ##普通使用者的umask
61 else
62 umask 077 ##超級使用者的umask
63 fi
vim /etc/bashrc ##shell配置檔案
70 if [ sUID -gt 199 ] && [ "'id -gn'" = "'id -un'" ]; then
71 umask 002
72 else
73 umask 077
74 fi
source /etc/profile ##讓更改立即生效
source /etc/bashrc
用umask檢視超級使用者和普通使用者的預留許可權,在shell裡用umask進行臨時更改
用vim /etc/profile更改系統配置檔案,在60行更改普通使用者的umask,
在62行更改超級使用者的umask,更改結束後使用source命令讓更改立即生效。
用vim /etc/profile更改系統配置檔案,在71行更改普通使用者的umask,
在73行更改超級使用者的umask,更改結束後使用source命令讓更改立即生效。
特殊許可權
粘制位
1.sticky ##粘制位
作用:
只針對目錄生效,當一個目錄上有sticky許可權時
在這個目錄中的檔案只能被檔案的所有者刪除
設定方式:
chmod o+t dir
chmod 1xxx dir
注意:在上面的操作過程中,原本使用者2可以在/pub下刪除使用者1建立的檔案
但是對/pub設定了粘制位後,使用者2就不能在/pub下刪除使用者1建立的檔案了,
並且檢視/pub的屬性,在o上變成了rwt
強制位
2.sgid ##強制位
作用
對檔案: 只針對與二進位制可執行檔案
當檔案上有sgid時任何人執行此檔案產生的程序都屬於檔案的組
對目錄:
當目錄上有sgid許可權時任何人在此目錄中建立的檔案的都屬於目錄的所有組
設定方式:
chmod g+s file|dir
chmod 2xxx file|dir
注意:針對目錄,原本使用者1在/pub下建立檔案,檔案的所有組是1,屬於1,
對/pub設定了強制位後,使用者1在/pub下建立檔案,檔案屬於/pub的組root
並且檢視/pub屬性,在g上變成了rws
對檔案:/bin/watch所屬的組是root,使用者1在執行/bin/watch時,產生程序的組屬於1
給/bin/watch加一個強制位,使用者1再執行/bin/watch時,產生的程序的組屬於root
並且檢視/bin/watch的屬性,g上變成了r-s
冒險位
3.suid ##冒險位
只針對與2進位制可執行檔案
當檔案上有suid時任何人執行這個檔案中的記的程式產生的程序都屬於檔案的所有人
設定方式
chmod u+s file
chmod 4xxx file
對檔案:/bin/watch所屬的使用者是root,使用者1在執行/bin/watch時,產生程序的使用者屬於1
給/bin/watch加一個冒險位,使用者1再執行/bin/watch時,產生的程序的使用者屬於root
並且檢視/bin/watch的屬性,u上變成了rws
如果要同時設定強制位和冒險位:chmod 6xxx file
acl許可權列表
作用
讓特定的使用者對特定的檔案擁有特定許可權
acl列表檢視
-rw-rwxr--+ root root 0 Jul 21 15:45 file
^
acl開啟 有+號代表acl許可權列表開啟
getfacl file ##檢視acl開啟的檔案的許可權
# file: file ##檔名稱
# owner: root ##檔案擁有者
# group: root ##檔案擁有組
user::rw- ##檔案擁有人的許可權
user:kiosk:rwx ##指定使用者的許可權
group::r-- ##檔案擁有組的許可權
mask::rwx ##能賦予使用者的最大權力閾值
other::r-- ##其他人的許可權
acl列表的管理
getfacl file ##開啟許可權列表
setfacl -m u:username:rwx file ##設定username對file擁有rwx許可權
setfacl -m g:group:rwx file ##設定group組成員對file擁有rwx許可權
setfacl -x u:username file ##從acl列表中刪除username
setfacl -b file ##關閉file上的acl列表
當權限列表開啟時,g代表對mask進行操作
chmod g-w file 許可權列表會發生錯誤
修改回來可以使用
setfacl -m m:rwx file
注意:注意:當檔案上有許可權列表時,ls -l能看到的許可權是假的
mask值
在許可權列表中mask表示能生效的許可權值
當用chmod減小開啟acl的檔案許可權時mask值會發生改變
chmod g-w file
注意,這個g不是代表組,而是更改mask的值,對ugo都有影響
如果要恢復mask值
setfacl -m m:rwx file
acl的預設許可權設定
acl預設許可權只針對目錄設定
“acl許可權只針對設定完成之後新建立的檔案或目錄生效,
而已經存在的檔案是不會繼承預設許可權”
setfacl -m d:u:user:rwx /mnt/dzh
setfacl -k /mnt/dzh