1、基本權限和歸屬服務器
1. 訪問權限ide
讀取:容許查看、顯示目錄列表ui
寫入:容許修改,容許在目錄中新建、移動、刪除文件或子目錄spa
可執行:容許運行程序、切換目錄對象
2. 查看文件的權限blog
# ls -l install.log繼承
-|rw-|r--|r-- 1 root root 26195 Dec 17 10:42 install.log遞歸
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩開發
①. 文件類型v8
-表明普通文件
d表明目錄
l表明鏈接
②. rw-:表明文件全部者的權限(u)
r=讀=4
w=寫=2
x=執行=1
③. r--:表明文件所屬組的權限(g)
r=讀=4
w=寫=2
x=執行=1
④. r--:其餘用戶的權限(o)
r=讀=4
w=寫=2
x=執行=1
a=ugo
⑤. 文件 硬連接數
目錄 該目錄下有多少子目錄包括.和..
⑥. 文件全部者
⑦. 文件所屬組
⑧. 文件大小
⑨. 文件修改時間
⑩. 文件名
3. 命令 (R表示遞歸)
chmod 改變權限
chmod ugoa [+-=] [rwx] 文件
chmod 數字 文件
文件最大權限666
目錄最大權限777
默認建立文件的權限644
默認建立目錄的權限755
umask
最大權限的rwx-umask的rwx=默認權限
補充:
對於目錄來講沒有x權限,不管有沒rw,都不能進入該目錄
chown 改變全部者與所屬組
chown 全部者:所屬組 對象
chgrp 組 文件更改文件的屬組
2、附加權限控制
1. 特殊權限介紹
Set UID:4User+x
Set GID:2Group+x
Sticky Bit:1Other+x
2. 特殊權限做用
Set UID:
只能對可執行程序設置,當其餘用戶執行帶SUID標記的程序時,將會使用程序全部者的身份去執行
Set GID:
能夠對可執行程序設置,當其餘用戶執行帶SGID標記的程序時,將會使用程序所屬組的身份去執行
能夠對目錄設置,當對目錄設置SGID後,任何人在該目錄下建立文件和目錄的所屬組自動繼承該目錄的所屬組
Sticky Bit:
對目錄設置,任何人在該目錄下建立文件和目錄,只有root與文件建立者有刪除權限
3. ACL策略
getfacl文件查看ACL策略
setfacl[選項] u:用戶名:權限 文件
setfacl[選項] g:組名:權限 文件
-m定義一條ACL策略
-x刪除指定的ACL策略
-b清除全部已設置的ACL策略
-R遞歸設置
-d爲目錄設置默認權限
1、基本權限和歸屬
公司技術部有一臺Linux開發服務器,根據部門內項目組的構成狀況,須要創建相應的用戶帳號,並對開發數據相關目錄配置訪問權限。
1.文件夾/tech/nsdhome、/tech/jsdhome,分別歸屬於nsd組、jsd組,禁止其餘用戶進入。
2.建立部門公共目錄/public,技術部的全部員工(tech組)對其擁有可讀、可寫、可執行,其餘用戶禁止訪問此目錄。
[root@localhost /]# mkdir -p /tech/nsdhome
[root@localhost /]# mkdir -p /tech/jsdhome
[root@localhost /]# mkdir /public
[root@localhost /]# groupadd nsd
[root@localhost /]# groupadd jsd
[root@localhost /]# groupadd tech
[root@localhost /]# useradd -g nsd nsd01
[root@localhost /]# useradd -g nsd nsd02
[root@localhost /]# useradd -g jsd jsd01
[root@localhost /]# useradd -g jsd jsd02
[root@localhost /]# useradd -g tech yg01
[root@localhost /]# useradd yg02
[root@localhost /]# chown :nsd /tech/nsdhome
[root@localhost /]# ls -l /tech/nsdhome
總計 0
[root@localhost /]# ls -ld /tech/nsdhome
drwxr-xr-x 2 root nsd 4096 07-30 11:36 /tech/nsdhome
[root@localhost /]# chmod o-rx /tech/nsdhome
[root@localhost /]# chown :jsd /tech/jsdhome
[root@localhost /]# ls -ld /tech/jsdhome
drwxr-xr-x 2 root jsd 4096 07-30 11:36 /tech/jsdhome
[root@localhost /]# chmod o-rx /tech/jsdhome
[root@localhost /]# chown :tech /public
[root@localhost /]# ls -ld /public
drwxr-xr-x 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# chmod g+w /public
[root@localhost /]# ls -ld /public
drwxrwxr-x 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# chmod o-rx /public
[root@localhost /]# ls -ld /public
drwxrwx--- 2 root tech 4096 07-30 11:36 /public
[root@localhost /]# ls -ld /tech/nsdhome
drwxr-x--- 2 root nsd 4096 07-30 11:36 /tech/nsdhome
[root@localhost /]# ls -ld /tech/jsdhome
drwxr-x--- 2 root jsd 4096 07-30 11:36 /tech/jsdhome
[root@localhost /]#
2、附加權限控制
一、Suid實驗
只能針對程序(命令)設置,當任何人在執行具備suid權限的命令時,將使用該命令的全部者身份執行
[root@localhost ~]# ls -l /etc/shadow
[root@localhost ~]# which passwd
[root@localhost ~]# ls -l /usr/bin/passwd
[root@localhost ~]# umask 022
[root@localhost ~]# which touch
[root@localhost ~]# cp /bin/tosuuch /bin/suidtouch
[root@localhost ~]# ls -l /bin/*touch
[root@localhost ~]# useradd lily
[root@localhost ~]# su - lily
[lily@localhost ~]$ suidtouch suid-file1.txt
[lily@localhost ~]$ ls -l suid-file1.txt
[lily@localhost ~]$ exit
[root@localhost ~]# ls -l /bin/suidtouch
[root@localhost ~]# chmod u+s /bin/suidtouch
[root@localhost ~]# ls -l /bin/suidtouch
[root@localhost ~]# su - lily
[lily@localhost ~]$ suidtouch suid-file2.txt
[lily@localhost ~]$ ls -l suid-file*
[lily@localhost ~]$ exit
[root@localhost ~]# rm -rf /bin/suidtouch
二、Sgid實驗
能對程序(命令)設置,也能夠對目錄設置
當任何人在執行具備sgid權限的命令時,將使用該命令的所屬組身份執行
[root@localhost ~]# which mkdir
[root@localhost ~]# cp /bin/mkdir /bin/sgidmkdir
[root@localhost ~]# ls -l /bin/*mkdir
[root@localhost ~]# su - lily
[lily@localhost ~]$ sgidmkdir test1
[lily@localhost ~]$ ls -ld test1
[lily@localhost ~]$ exit
[root@localhost ~]# chmod g+s /bin/sgidmkdir
[root@localhost ~]# ls -l /bin/sgidmkdir
[root@localhost ~]# su - lily
[lily@localhost ~]$ sgidmkdir test2
[lily@localhost ~]$ ls -ld test*
[lily@localhost ~]$ exit
[root@localhost ~]# rm -rf /bin/sgidmkdir
對目錄設置Sgid,任何人在該目錄下建立的文件或子目錄的所屬組都自動繼承該目錄自己所屬組
[root@localhost ~]# mkdir /testgid
[root@localhost ~]# ls -ld /testgid/
drwxr-xr-x 2 root root 4096 Jan 6 16:53 /testgid/
[root@localhost ~]# chmod 0757 /testgid/
[root@localhost ~]# su - lily
[lily@localhost ~]$ mkdir /testgid/lilytest1
[lily@localhost ~]$ touch /testgid/lilyfile1.txt
[lily@localhost ~]$ ls -l /testgid/
[lily@localhost ~]$ exit
[root@localhost ~]# chmod 2757 /testgid/
[root@localhost ~]# ls -ld /testgid/
[root@localhost ~]# su - lily
[lily@localhost ~]$ mkdir /testgid/lilytest2
[lily@localhost ~]$ touch /testgid/lilyfile2.txt
[lily@localhost ~]$ ls -l /testgid/
三、t位權限echo
針對公共目錄設置,目錄設置t位權限後,該目錄下的文件或子目錄只有root與文件全部者可以刪除
[root@localhost ~]# mkdir /soft
[root@localhost ~]# ls -ld /soft/
[root@localhost ~]# chmod o+w /soft/
[root@localhost ~]# ls -ld /soft/
[root@localhost ~]# useradd wbb
[root@localhost ~]# useradd lhq
[root@localhost ~]# su - lhq
[lhq@localhost ~]$ cat /soft/lhq.txt
hello,byebye
[lhq@localhost ~]$ exit
[root@localhost ~]# su - wbb
[wbb@localhost ~]$ ls -ld /soft/
[wbb@localhost ~]$ ls -l /soft/
[wbb@localhost ~]$ rm -rf /soft/lhq.txt
[wbb@localhost ~]$ ls -l /soft/
[root@localhost ~]# chmod o+t /soft/
[root@localhost ~]# ls -ld /soft/
[root@localhost ~]# su - lhq
[lhq@localhost ~]$ cat /soft/lhq.txt
hello,byebye
[lhq@localhost ~]$ exit
[root@localhost ~]# su - wbb
[wbb@localhost ~]$ ls -l /soft/
[wbb@localhost ~]$ ls -ld /soft/
[wbb@localhost ~]$ rm -rf /soft/lhq.txt
[root@localhost ~]# find / -type f -a -perm +6000//查找系統中suid/sgid的程序
四、ACL權限設置
建立帳戶:mike john kaka
建立文件:/data/file1.txt
·mike對文件有讀寫權限,john只有讀權限。其餘用戶沒有任何權限
·kaka具備與john相同權限
·建立lily,lily對file1.txt具備讀執行權限,其餘用戶沒有任何權限
[root@localhost ~]# tune2fs -l /dev/sda2 | grep acl
Default mount options: user_xattr acl
[root@localhost ~]# tune2fs -l /dev/sda1 | grep acl
Default mount options: user_xattr acl
[root@localhost ~]# ls -ld /data/
drwxrwxrwx 3 root root 4096 12-09 16:21 /data/
[root@localhost ~]# rm -rf /data/
[root@localhost ~]# mkdir /data
[root@localhost ~]# getfacl /data/
getfacl: Removing leading '/' from absolute path names
# file: data
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@localhost ~]# ls -ld /data/
drwxr-xr-x 2 root root 4096 12-09 16:27 /data/
[root@localhost ~]# setfacl -m u:mike:rwx /data/
[root@localhost ~]# ls -ld /data/
drwxrwxr-x+ 2 root root 4096 12-09 16:27 /data/
[root@localhost ~]# getfacl /data/
getfacl: Removing leading '/' from absolute path names
# file: data
# owner: root
# group: root
user::rwx
user:mike:rwx
group::r-x
mask::rwx
other::r-x
[root@localhost ~]# setfacl -m u:john:r-- /data/
[root@localhost ~]# setfacl -m u:kaka:r-- /data/
[root@localhost ~]# setfacl -m u:lily:r-x /data/