大數據兼雲計算(王明龍)講師-LINUX-DAY02-文件與目錄權限管理

一.查看【文件/目錄】信息

ls -l或ll 文件名
ls -d或ll -d 目錄名
二.修改屬主與屬組

chown 用戶名 文件名/目錄名 // 修改文件與目錄的屬主
chown .組名 文件名/目錄名 // 修改文件與目錄的屬組
chown :組名 文件名/目錄名 // 修改文件與目錄的屬組
chown 用戶名:組名 文件名/目錄名 // 修改文件與目錄的屬主屬組
三.權限管理
1.基本權限:ugo=主/組/其它人 rwx=421
2.查看基本權限:

stat 文件名/目錄名
getfacl 文件名/目錄名
ll 文件名 // 查看文件權限
ll -d 文件名 // 查看目錄權限
四.修改權限

chmod a/u/g/o/ +/- r/w/x 文件名/目錄名
舉例

chmod g-r a
chmod o+w a
chmod u-w,g+w,o+x a
chmod a-r a.txt a表示ugo
chmod u+r+w-x a
少用:

chmod +x a
chmod -x a
五.隱藏權限

1.設置隱藏權限

chattr +a 文件名/目錄名 // 只能向文件中添加數據,而不能刪除,多用於服務器日誌文件安全,只有root可設定
chattr +i 文件名/目錄名 // 設定文件不能被刪除、改名、設定鏈接關係,同時不能寫入或新增內容,但可>>追加
chattr -a 文件名/目錄名
chattr -i 文件名/目錄名
2.顯示隱藏權限

lsattr 文件名/目錄名
六.高級權限(查看命令的絕對路徑:which 命令名稱)

1.設置Suid // 只對命令/可執行文件有效

which 命令名稱 //查看命令的完整路徑
chmod u+s+x 命令/可執行文件 // 設置此權限後,普通用戶在執行命令和可執行文件時擁有root身份
2.設置Sgid

chmod g+s 文件名/目錄名 //設置此權限後,在此目錄下創建的所有文件或目錄都會繼承此目錄的家目錄
3.設置sticky

chmod o+t 目錄名 //設置此權限後,在此目錄下任何用戶只刪除自已創建的文件,其它人的不能刪除,只對目錄有效
同樣也可使用數字方式表示
SUID=4 —–>>>用戶的x位
SGID=2 —–>>>組的x爲
STICKY=1 —–>>>other的x位

七.設置facl權限

getfacl 文件/目錄 //查看文件或目錄的ACL權限
setfacl -m u:username:mode FILE/DIR //設定某用戶的某權限 mode代表權限,若不給某用戶任何權限 setfacl -m u:username:000 FILE/DIR
setfacl -m g:groupname:mode FILE/DIR //設定某組的某權限
setfacl -b FILE/DIR //刪除所有用戶的ACL權限
setfacl -x u:username FILE/DIR //取消某用戶的某權限
setfacl -x g:groupname FILE/DIR //取消某組的某權限
FACL 文件系統的權限設置
FACL 文件系統的權限設置(file access contrl list) 文件訪問控制列表

針對Unix系統權限機制的不足,一個名爲POSIX ACL的全新權限機制誕生了,目的就是爲了給各Unix系統之間制定一個兼容的ACL標準,使得各操作系統之間使用統一的接口。ACL爲現有權限機制的延伸,在現有機制的三個基本設定(owner、group、other)的基礎上加入了對某指定使用者或羣組的存取權限設定。

在Linux Kernel 2.6上已經正式支持POSIX ACL,常用的檔案系統(如:ext2,ext3,xfs,jfs以及ReiserFS)都能使用ACL。當然,在編譯kernel時需要啓動ACL。

相關的kernel option:

CONFIG_FS_POSIX_ACL
CONFIG_EXT3_POSIX_ACL
CONFIG_EXT2_POSIX_ACL

rules:

user:(uid/name):(perms) 指定某位使用者的權限
group:(gid/name):(perms) 指定某一羣組的權限
other::(perms) 指定其它使用者的權限
mask::(perms) 設定有效的權限屏蔽

ACL可以對某個文件設置該文件具體的某些用戶的權限,意思就是通過ACL可以對一個文件權限做擴展,可以不同的用戶對某個文件有不同的權限。
option:

-m 新增或修改ACL中的規則
-x 移出ACL中的規則

getfacl <文件名> 獲取文件的訪問控制信息
setfacl設置文件的acl -m 修改文件的acl -x 取消對文件的設置
setfacl –m u:用戶名:權限 文件名
setfacl –m g:組名:權限 文件名

要設定預設型ACL只需在每個規則前加上”default:” 。
例如: setfacl -m default:user::rw /home/alex
或簡寫爲: setfacl -m d:u::rw /home/alex

[root@haha ~]# getfacl hello_world 查看文件的acl權限

file: hello_world
owner: root
group: root
user::rw-
group::r–
other::r–

[root@haha ~]# setfacl -m student:rwx hello_world 讓用戶student擁有rwx權限
[root@haha ~]# getfacl hello_world

file: hello_world
owner: root
group: root
user::rw-
user:student:rwx
group::r–
mask::rwx
other::r–

[root@haha ~]# setfacl -m g:student:rx hello_world 讓組student擁有rwx權限
[root@haha ~]# getfacl hello_world

file: hello_world
owner: root
group: root
user::rw-
user:student:rwx
group::r–
group:student:r-x
mask::rwx
other::r–

[root@haha ~]# ll hello_world
-rw-rwxr—+ 1 root root 0 07-21 13:48 hello_world
[root@haha ~]# setfacl -x student hello_world 解除student用戶對文件的acl權限
[root@haha ~]# setfacl -x g:student hello_world 解除student組對文件的權限
(撤消ACL操作: 對用戶直接加用戶名字就可以了 對組,在前面加g:組名)
[root@haha ~]# getfacl hello_world

file: hello_world
owner: root
group: root
user::rw-
group::r–
mask::r–
other::r–

[root@haha ~]# getfacl hello_world

file: hello_world
owner: root
group: root
user::rw-
user:student:rwx
group::r–
group:student:rwx
mask::rwx
other::r–

[root@haha ~]# setfacl -b hello_world 刪除所有擴展的acl規則
[root@haha ~]# getfacl hello_world

file: hello_world
owner: root
group: root
user::rw-
group::r–
other::r–

[root@haha lianxi]# getfacl a

file: a
owner: root
group: root
user::rw-
user:wl:rwx
group::r–
group:wl:rwx
mask::rwx
other::r–

收回所有用戶和所有組的寫的權限
[root@haha lianxi]# setfacl -m m::r-x a
[root@haha lianxi]# getfacl a

file: a
owner: root
group: root
user::rw-
user:wl:rwx #effective:r-x
group::r–
group:wl:rwx #effective:r-x
mask::r-x
other::r–

讓子目錄下的文件和文件夾繼承
[root@haha lianxi]# setfacl -m d:u:wl:rwx,g:wl:rwx b (其中d表示defaults)
[root@haha lianxi]# getfacl b

file: b
owner: root
group: root
user::rwx
group::r-x
group:wl:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:wl:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

[root@haha lianxi]# cd b/
[root@haha b]# mkdir c;touch d
[root@haha b]# ls
c d
[root@haha b]# getfacl c

file: c
owner: root
group: root
user::rwx
user:wl:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:wl:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
[root@haha b]# getfacl d 可能由於文件本身的默認權限666問題,文件沒有繼承x權限

file: d
owner: root
group: root
user::rw-
user:wl:rwx #effective:rw-
group::r-x #effective:r–
mask::rw-
other::r–
getfacl a |setfacl —set-file=- b

這是個很有意思的命令,它可以讓一個文件的權限直接複製改成那一個文件的權限

[root@haha lianxi]# ll
總計 4
-rw-rwxr–+ 1 root root 0 07-21 20:34 a
-rw-r–r– 1 root root 0 07-21 20:34 b
[root@haha lianxi]# getfacl a

file: a
owner: root
group: root
user::rw-
user:wl:rwx
group::r–
group:wl:rwx
mask::rwx
other::r–

[root@haha lianxi]# getfacl a |setfacl –set-file=- b
[root@haha lianxi]# ll
總計 8
-rw-rwxr–+ 1 root root 0 07-21 20:34 a
-rw-rwxr–+ 1 root root 0 07-21 20:34 b
[root@haha lianxi]# getfacl b

file: b
owner: root
group: root
user::rw-
user:wl:rwx
group::r–
group:wl:rwx
mask::rwx
other::r–

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章