1. 程式人生 > >文件目錄權限chmon更改所有者和所屬組chownumask隱藏權限lsattr-chattr

文件目錄權限chmon更改所有者和所屬組chownumask隱藏權限lsattr-chattr

linux

2.14文件或者目錄權限chmon

2.14.1

[root@MOMOCO-02 ~]# ls -l

總用量 4

-rw-r--r--. 1 root root 0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

【之前我們用ls -l的時候會詳細的顯示一個文件或者目錄,紅色標記的就是一個文件或者目錄的權限,×××是所屬主,紫色是所屬組。他一共有9個權限(rwxrwxrwx:r代表可讀,w代表可寫,x代表可執行,-代表不可以讀、寫或者執行)位前三個是所有者權限。後面的那個點他是受制於selinux,如果你把selinux關閉了再創建目錄或者文件就不會有這個點了,中間三個是所組權限,最後面的三個是其他用戶權限】

2.14.2權限用數字表示

r:我們用r=4表示

w:我們用w=2表示

x:我們用x=1表示

-:我們用-=0表示

例如下面

三個權限位一段表示方法:rwx=7 rw-=6 r-x=5 r--=4 -wx=3 -w-=2 --x=1

九個權限位三段表示方法:rw-r--r--=644 rwx------=700 rwx-w-r-x=725

2.14.3 chomd 全稱:change mode

[root@MOMOCO-02 ~]# chmod 700 2.txt

【更改一個目錄的權限的命令,我們把2.txt改成了所有者可讀可寫可執行,所屬組和其他用戶不可讀不可寫不可執行。之前我們介紹密鑰的時候用到了一個】

[root@MOMOCO-02 ~]# !l

ls -l

總用量 4

-rwx------. 1 root root 0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# chmod 700 /root/.ssh

[root@MOMOCO-02 ~]# ls -ld !$

drwx------. 2 root root 80 12月 14 17:41 /root/.ssh

[root@MOMOCO-02 ~]# getenforce

Enforcing

【查看selinux的狀態】

[root@MOMOCO-02 ~]# setenforce 0

【臨時關閉selinux,創建目錄或者文件還是會有點的】

[root@MOMOCO-02 ~]# getenforce

Permissive


[root@MOMOCO-02 ~]# ls -l

總用量 4

drwxr-xr-x. 3 root root 28 12月 20 11:03 2

-rwx------. 1 root root 0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# chmod 777 2

[root@MOMOCO-02 ~]# !l

ls -l

總用量 4

drwxrwxrwx. 3 root root 28 12月 20 11:03 2

-rwx------. 1 root root 0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# ls -l 2/

總用量 0

-rw-r--r--. 1 root root 0 12月 20 11:02 2.txt

drwxr-xr-x. 2 root root 19 12月 20 11:03 3

【上面的紫色部分我們直接用chmod改目錄的權限的時候,目錄下面的子目錄或者子文件的權限是不發生變化的。如果想子目錄或者子文件一起跟著改可以用相面×××的命令,再看下面的紫色部分就生效了】

[root@MOMOCO-02 ~]# chmod -R 777 2

[root@MOMOCO-02 ~]# ls -l

總用量 4

drwxrwxrwx. 3 root root 28 12月 20 11:03 2

-rwx------. 1 root root 0 12月 20 10:42 2.txt

-rw-------. 1 root root 3470 12月 19 21:40 anaconda-ks.cfg

[root@MOMOCO-02 ~]# ls -l 2/

總用量 0

-rwxrwxrwx. 1 root root 0 12月 20 11:02 2.txt

drwxrwxrwx. 2 root root 19 12月 20 11:03

2.14.4 用字母表示更改權限

[root@MOMOCO-02 ~]# chmod u=rwx,g=r,o=rx 2

【u代表所有者,g代表所屬組,o代表其他用戶,a代表ugo全部。建議使用數字代表】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chmod a-r 2

[root@MOMOCO-02 ~]# ls -ld 2

d-wx-----x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chmod a+r 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2


2.15更改所有者和所屬組chown

2.15.1 chown 全稱:chown owner 格式:[root@MOMOCO-02 ~]#chown -R username:group filename

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown GYB:gyb 2

【更改所有者和所屬組的命令】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB gyb 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown :root 2

【只更改所屬組】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB root 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# chown root 2

【只更改所有者】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root root 28 12月 20 11:03 2

我們也可以用另外的一個命令更改所屬組如下:

[root@MOMOCO-02 ~]# chgrp GYB 2

【更改所屬組】

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 root GYB 28 12月 20 11:03 2

2.15.2

如果想把目錄下的子目錄或者子文件一起更改了我們可以用-R選項

[root@MOMOCO-02 ~]# chown GYB:GYB 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB GYB 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# ls -l 2

總用量 0

-rwxrwxrwx. 1 root root 0 12月 20 11:02 2.txt

drwxrwxrwx. 2 root root 19 12月 20 11:03 3

[root@MOMOCO-02 ~]# chown -R GYB:gyb 2

[root@MOMOCO-02 ~]# ls -ld 2

drwxr--r-x. 3 GYB gyb 28 12月 20 11:03 2

[root@MOMOCO-02 ~]# ls -l 2

總用量 0

-rwxrwxrwx. 1 GYB gyb 0 12月 20 11:02 2.txt

drwxrwxrwx. 2 GYB gyb 19 12月 20 11:03 3


2.16umask

2.16.1

[root@MOMOCO-02 ~]# touch 3.txt

[root@MOMOCO-02 ~]# ls -ld 3.txt

-rw-r--r--. 1 root root 0 12月 20 11:48 3.txt

[root@MOMOCO-02 ~]# mkdir 3

[root@MOMOCO-02 ~]# ls -ld 3

drwxr-xr-x. 2 root root 6 12月 20 11:49 3

【為什麽我們創建的文件權限是644,創建的目錄權限是755。他是有系統的umask值確定的】

[root@MOMOCO-02 ~]# umask

0022

【查看umask的值】

[root@MOMOCO-02 ~]# umask 002

【更改umask的值,你也可以寫成0002】

[root@MOMOCO-02 ~]# umask

0002

我們再次創建目錄和文件

[root@MOMOCO-02 ~]# touch 4.txt

[root@MOMOCO-02 ~]# ls -ld 4.txt

-rw-rw-r--. 1 root root 0 12月 20 11:54 4.txt

[root@MOMOCO-02 ~]# mkdir 4

[root@MOMOCO-02 ~]# ls -ld 4

drwxrwxr-x. 2 root root 6 12月 20 11:54 4

【文件的權限變成了664,目錄的權限變成了775】

我們來總結一下:

umask 文件 目錄

002 644 755

002 664 775

【你可能會認為文件的權限等於666-umask,文件的權限等於777-umask。這樣理解不完全是對的,你可以試試umask等於3時。】


[root@MOMOCO-02 ~]# umask 003

[root@MOMOCO-02 ~]# touch 5.txt

[root@MOMOCO-02 ~]# ls -ld 5.txt

-rw-rw-r--. 1 root root 0 12月 20 12:09 5.txt

[root@MOMOCO-02 ~]# mkdir 5

[root@MOMOCO-02 ~]# ls -ld 5

drwxrwxr--. 2 root root 6 12月 20 12:09 5

【可以看到文件的權限是664,我們要是用666-003該是663的。目錄的權限是774這裏是對的。為什麽會這樣那其實真正的算法是這樣的】

文件:666=(rw-rw-rw-)-003=(-------wx)=(rw-rw-r--)004

【最後的x權限本來就沒有你減了還是沒有,--x=-】

目錄:777=(rwxrwxrwx)-003=(-------wx)=(rwxrwxr--)774


2.17隱藏權限lsattr-chattr

2.17.1 文件

[root@MOMOCO-02 ~]# chattr +i 3.txt

【給一個文件加上i權限】

[root@MOMOCO-02 ~]# vi 3.txt

技術分享圖片

顯示不可以編輯

技術分享圖片

編輯了不能保存

技術分享圖片

:wq 強制保存還是沒有用,我們有:q! 退出來

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

-bash: 3.txt: 權限不夠

[root@MOMOCO-02 ~]# ls -l 3.txt

-rw-r--r--. 1 root root 0 12月 20 11:48 3.txt

【我們查看的權限是可以寫的為什麽不可以寫,那這個時候我們就看看是不是有什麽特殊權限】

[root@MOMOCO-02 ~]# lsattr 3.txt

----i----------- 3.txt

【查看一個文件或是不是有特殊權限,可以看到這個文件是有的,沒有的如下。】

[root@MOMOCO-02 ~]# lsattr 4.txt

---------------- 4.txt

[root@MOMOCO-02 ~]# mv 3.txt 33.txt

mv: 無法將"3.txt" 移動至"33.txt": 不允許的操作

[root@MOMOCO-02 ~]# rm 3.txt

rm:是否刪除普通空文件 "3.txt"?y

rm: 無法刪除"3.txt": 不允許的操作

【可以看到加上i權限你不可以寫文件、不可以刪除、不可以改名字、也不可以touch。如果我們使用a權限只可以在文件的末尾追加內容和touch。】

[root@MOMOCO-02 ~]# chattr -i 3.txt

【刪除i權限】

[root@MOMOCO-02 ~]# lsattr 3.txt

---------------- 3.txt

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

[root@MOMOCO-02 ~]# chattr +a 3.txt

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd > 3.txt

-bash: 3.txt: 不允許的操作

【>重定向】

[root@MOMOCO-02 ~]# head -n 2 /etc/passwd >> 3.txt

【>>追加】

[root@MOMOCO-02 ~]# cat 3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@MOMOCO-02 ~]# touch 3.txt

[root@MOMOCO-02 ~]# cat 3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

[root@MOMOCO-02 ~]# ls -l 3.txt

-rw-r--r--. 1 root root 130 12月 20 13:00 3.txt

【更改時間信息】

[root@MOMOCO-02 ~]# chattr -a 3.txt

[root@MOMOCO-02 ~]# lsattr 3.txt

---------------- 3.txt

【去掉a權限】

技術分享圖片

1.17.2 目錄

[root@MOMOCO-02 ~]# tree 2

2

├── 3

└── 3.txt


1 directory, 1 file

[root@MOMOCO-02 ~]# chattr +i 2

【給目錄加上i權限】

[root@MOMOCO-02 ~]# lsattr 2

---------------- 2/3

---------------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -d 2

----i----------- 2

【不加-d選項他會查看該目錄下的子目錄或者子文件有沒有i權限】

[root@MOMOCO-02 ~]# rm -rf 2

rm: 無法刪除"2/3": 權限不夠

【不可以刪除】

[root@MOMOCO-02 ~]# mv 2 3

mv: 無法將"2" 移動至"3": 不允許的操作

【不可以改名字】

[root@MOMOCO-02 ~]# touch 2/2.txt

touch: 無法創建"2/2.txt": 權限不夠

【不可以touch該目錄下的子文件】

[root@MOMOCO-02 ~]# head -n2 /etc/passwd > 2/3.txt

[root@MOMOCO-02 ~]# cat 2/3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

【可以更改該目錄下的子文件】

[root@MOMOCO-02 ~]# rm 2/3.txt

rm:是否刪除普通文件 "2/3.txt"?y

rm: 無法刪除"2/3.txt": 權限不夠

【不可以刪除該目錄下的子文件】

[root@MOMOCO-02 ~]# rm -r 2/3

rm:是否刪除目錄 "2/3"?y

rm: 無法刪除"2/3": 權限不夠

【不可以刪除該目錄下的子目錄】


[root@MOMOCO-02 ~]# chattr +a 2

【給目錄加上a權限】

[root@MOMOCO-02 ~]# lsattr 2

---------------- 2/3

---------------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -d 2

-----a---------- 2

【不加-d選項他會查看該目錄下的子目錄或者子文件有沒有a權限】

[root@MOMOCO-02 ~]# head -n2 /etc/passwd > 2/3.txt

[root@MOMOCO-02 ~]# cat 2/3.txt

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

【可以更改該目錄下的子文件】

[root@MOMOCO-02 ~]# mv 2 3

mv: 無法將"2" 移動至"3": 不允許的操作

【不可以改名字】

[root@MOMOCO-02 ~]# rm -r 2

rm:是否進入目錄"2"? y

rm:是否進入目錄"2/3"? y

rm:是否進入目錄"2/3/4"? y

rm:是否刪除普通空文件 "2/3/4/3.txt"?y

rm:是否刪除目錄 "2/3/4"?y

【可以刪除該目錄下的子目錄或者子文件的子目錄或子文件】

rm:是否刪除目錄 "2/3"?y

rm: 無法刪除"2/3": 不允許的操作

【不可以刪除該目錄下的子目錄或者子文件】

rm:是否刪除普通文件 "2/3.txt"?y

rm: 無法刪除"2/3.txt": 不允許的操作

[root@MOMOCO-02 ~]# rm 2/3.txt

rm:是否刪除普通文件 "2/3.txt"?y

rm: 無法刪除"2/3.txt": 不允許的操作

[root@MOMOCO-02 ~]# rm -r 2/3

rm:是否刪除目錄 "2/3"?y

rm: 無法刪除"2/3": 不允許的操作

【不可以刪除該目錄下的子目錄或者子文件】

[root@MOMOCO-02 ~]# touch 2/3.txt

[root@MOMOCO-02 ~]# ls -l 2/3.txt

-rw-rw-r--. 1 root root 65 12月 20 13:36 2/3.txt

【可以touch該目錄下的子文件】


小知識:

當我們chattr -R +-i/+-a filaname 的時候他會級聯的把目錄下的所以子目錄或者子文件都加上i或a權限.

當我們lsattr -R filaname 的時候他會顯示該目錄下所有的子目錄或者子文件有什麽權限,不加-R只會顯示兩層。

[root@MOMOCO-02 ~]# chattr -R +i 2

[root@MOMOCO-02 ~]# lsattr 2

----i----------- 2/3

----i----------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -R 2

----i----------- 2/3


2/3:


----i----------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R -i 2

[root@MOMOCO-02 ~]# lsattr -R 2

---------------- 2/3


2/3:


---------------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R +a 2

[root@MOMOCO-02 ~]# lsattr 2

-----a---------- 2/3

-----a---------- 2/3.txt

[root@MOMOCO-02 ~]# lsattr -R 2

-----a---------- 2/3


2/3:


-----a---------- 2/3.txt

[root@MOMOCO-02 ~]# chattr -R -a 2


阿銘linux





文件目錄權限chmon\更改所有者和所屬組chown\umask\隱藏權限lsattr-chattr