1. 程式人生 > >2018.3.28 二周第三次課

2018.3.28 二周第三次課

文件和目錄權限chmod 更改所有者和所屬組chown umask默認權限 隱藏權限chattr 隱藏權限lsattr

文件或目錄權限chmod

概念:linux目錄或者文件,都會有一個所有者和所屬組;
所有者是指文件的擁有者;所屬組指是這個文件屬於哪一個用戶組;
linux這樣設置文件屬性的目的是為了文件的安全;
所有者(user) 所屬組(group) 其他用戶(others)

-

目錄或文件權限九個字節分為三段,每段三個字節;例:如下表示
第一段表示:所有者的權限;
第二段表示:所屬組的權限;
第三段表示:其他用戶。

r:表示是否可讀 (數字表示4)
w:表示是否可寫 (數字表示2)
x:表示是否可執行 (數字表示1)
-rw-r--r--
拿這個做例子,最一開始"rw"前面的“-”這個表示文件或目錄類型

1.假設:rw-r--r-x=645,第一段4+2=6,第二段4,第三段5.
這樣的話,所有者有可讀可寫不可執行;所屬組擁有可讀不可寫不可執行,其他用戶可讀可寫可執行

ls -l 命令可以來查看這些屬性

例:查看/tmp/zhang/1這個目錄的屬性
[root@zhangzhen-01 ~]# ls -l /tmp/zhang/1
-rw-r--r--. 1 root root 0 3月 27 00:07 /tmp/zhang/1
(權限)(目錄名)(所有者)(所屬組)( 日期 )

註:第一個root是所有者 ,第二個root是所屬組

1.1chmod命令 (修改權限)

創建一個.txt文件

[root@zhangzhen-01 ~]# touch /tmp/zhang/1.txt

查看這個文件的屬性

[root@zhangzhen-01 ~]# ls -l /tmp/zhang/1.txt
-rw-r--r--. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt
這個文件(644)所有者可讀可寫,所屬組可讀,其他用戶可讀

現在我想把這個文件修改成所有者可讀可寫可執行(rwx 700),其他的沒有權限,如下:

[root@zhangzhen-01 ~]# ls -l /tmp/zhang/1.txt
-rw-r--r--. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt

[root@zhangzhen-01 ~]# chmod 700 /tmp/zhang/1.txt
[root@zhangzhen-01 ~]# !ls
ls -l /tmp/zhang/1.txt
-rwx------. 1 root root 0 3月 28 00:50 /tmp/zhang/1.txt

如果想把目錄及目錄下的子文件批量修改權限,在這裏用到大“R”

[root@zhangzhen-01 tmp]# ls -l zhang
總用量 0
-rw-r--r--. 1 root root 0 3月 28 01:15 1.txt
-rw-r--r--. 1 root root 0 3月 28 01:15 2.txt
[root@zhangzhen-01 tmp]# chmod -R 770 zhang
[root@zhangzhen-01 tmp]# !ls
ls -l zhang
總用量 0
-rwxrwx---. 1 root root 0 3月 28 01:15 1.txt
-rwxrwx---. 1 root root 0 3月 28 01:15 2.txt
-R 這個表示文件下所有的文件包括目錄修改統一的權限

chmod還有一個“a+”“a-”選項參數,給三段都加上權限

[root@zhangzhen-01 tmp]# chmod a+x zhang
[root@zhangzhen-01 tmp]# ls -ld zhang
drwxrwxr-x. 2 root root 32 3月 28 01:15 zhang
[root@zhangzhen-01 tmp]# chmod a-x zhang
[root@zhangzhen-01 tmp]# ls -ld zhang
drw-rw-r--. 2 root root 32 3月 28 01:15 zhang

更改所有者和所屬組chown (change owner)

概念:chown命令可以更改文件的所有者
命令格式如下:
chown [-R] 賬戶名(root) 文件名 更改文件所有者
chown [-R] 賬戶名(root):組名(root,中間不加空格) 文件名
-R 選項只適合於目錄,作用是級聯更改,不僅更改當前目錄,連目錄裏的目錄或文件也全部更改

示例命令如下:

[root@zhangzhen-01 ~]# ls
anaconda-ks.cfg
[root@zhangzhen-01 ~]# mkdir dior #創建一個dior目錄
[root@zhangzhen-01 ~]# useradd user1 #創建一個用戶user1
[root@zhangzhen-01 ~]# touch dior/test1 #在dior下創建一個test1文件
[root@zhangzhen-01 ~]# ls -ld dior/ #查看dior這個目錄所有者和所屬組是誰
drwxr-xr-x. 2 root root 19 3月 28 21:59 dior/
[root@zhangzhen-01 ~]# chown user1 dior/ #修改dior所有者為user1
[root@zhangzhen-01 ~]# ls -ld dior/ #查看dior文件所有者是誰
drwxr-xr-x. 2 user1 root 19 3月 28 21:59 dior/

文件所屬組修改,示例命令如下:

[root@zhangzhen-01 ~]# mkdir dior #創建一個dior目錄
[root@zhangzhen-01 ~]# groupadd user1 #創建一個組名
[root@zhangzhen-01 ~]# chown root:user1 dior/ #修改所有者為root,所屬組為user1 後面跟文件名
[root@zhangzhen-01 ~]# ls -ld dior/ #查看dior文件的詳細信息
drwxr-xr-x. 2 root user1 19 3月 28 21:59 dior/

目錄及文件級聯更改,不僅修改目錄,還有目錄下所有的文件,示例如下,-R:

[root@zhangzhen-01 ~]# mkdir dior #創建一個dior目錄
[root@zhangzhen-01 ~]# touch dior/test1 #創建2個文件
[root@zhangzhen-01 ~]# touch dior/test2
[root@zhangzhen-01 ~]# tree dior/ #查看這個目錄樹是否創建成功
dior/
├── test1
└── test2
[root@zhangzhen-01 ~]# ls -l dior/ #查看兩個文件的屬性及所有者,所屬組
總用量 0
-rw-r--r--. 1 root root 0 3月 28 22:44 test1
-rw-r--r--. 1 root root 0 3月 28 22:44 test2
[root@zhangzhen-01 ~]# chown -R root:user1 dior/ #“-R”可以更改當前目錄,連目錄裏的目錄或文件全部修改。
[root@zhangzhen-01 ~]# !ls #查看是否修改成功
ls -l dior/
總用量 0
-rw-r--r--. 1 root user1 0 3月 28 22:44 test1
-rw-r--r--. 1 root user1 0 3月 28 22:44 test2

chgrp命令 (所屬組,change group)

概念:chgrp可以修改目錄或文件的所屬組
命令格式:chgrp [組名] [文件名]

示例命令如下:

[root@zhangzhen-01 ~]# groupadd user1
[root@zhangzhen-01 ~]# tail -5 /etc/group
postfix:x:89:
sshd:x:74:
chrony:x:996:
zhangzhen-03:x:1000:
user1:x:1001:

umask (設置默認權限)

概念:默認情況下,目錄的權限制是755;普通文件的權限制為644.
那麽這個值是誰來規定的呢,就是umask。

查看umask默認值:

[root@zhangzhen-01 dior2]# umask #查看系統默認值
0022 #只看後三位
[root@zhangzhen-01 dior2]# umask 002 #修改umask默認值為002
0002

在umask不自定義前,目錄權限值為:755,普通文件權限值為:644
umask的值是可以自定義的,假設umask為002,你再創建目錄或者文件時,默認權限分別為:
rwx rwx rwx -  --- --- -w- (目錄的權限) 777
rw- rw- rw- - --- --- -w-(文件的權限)666

示例如下:

[root@zhangzhen-01 dior2]# umask 002 #設置umask默認值為002
[root@zhangzhen-01 dior2]# mkdir dior3 #創建個dior3目錄
[root@zhangzhen-01 dior2]# ls -ld dior3/ #查看dior3目錄的權限775
drwxrwxr-x. 2 root root 6 3月 28 23:25 dior3/
[root@zhangzhen-01 dior2]# touch test1 #在dior3下創建個test1文件
[root@zhangzhen-01 dior2]# ls -l test1 #查看lest1文件的權限664
-rw-rw-r--. 1 root root 0 3月 28 23:26 test1

拿上述命令為例,目錄算法如下:

[root@zhangzhen-01 dior2]# mkdir dior3/ #創建個dior3目錄
[root@zhangzhen-01 dior2]# ls -ld dior3/ #查看dior3目錄的權限775
drwxrwxr-x. 2 root root 6 3月 28 23:25 dior3/
我們用默認權限(777)減去你所設定的權限(002),目錄算法應該是:
rwx(7) rwx(7) rwx(7) 減去所設定的權限 ---(0) ---(0) -w-(2) =775

同樣拿上述命令為例,文件算法如下:

[root@zhangzhen-01 dior2]# touch test1 #在dior3下創建個test1文件
[root@zhangzhen-01 dior2]# ls -l test1 #查看lest1文件的權限664
-rw-rw-r--. 1 root root 0 3月 28 23:26 test1
我們用默認權限(666)減去你所設定的權限(002),文件算法應該是:
rw-(6) rw-(6) rw-(6) 減去你所設定的權限 ---(0) ---(0) -w-(2) =664

隱藏權限lsattr_chattr

概念:chattr設置隱藏文件;lsattr查看隱藏文件

命令chattr格式 : chattr [+-=] [Asaci] [文件或者目錄名],其中,+ - =分別表示增加、減少和設定。 各個選項的含義如下:
A :增加該屬性後,表示文件或目錄的atime(時間)將不可修改
s:增加該屬性後,會將數據同步寫入磁盤中
a:增加該屬性後,表示只能追加不能刪除,非root用戶不能設定該屬性。
c:增加該屬性後,表示自動壓縮該文件,讀取時會自動解壓
i:增加該屬性後,表示文件不能刪除、重命名、設定鏈接、寫入以及新增數據。

以上選項中,常用的為“i”選項,示例命令如下:

[root@zhangzhen-01 ~]# mkdir dior3 #創建一個目錄
[root@zhangzhen-01 ~]# chattr +i dior3 #添加不能刪除重命名等操作
[root@zhangzhen-01 ~]# touch dior3/test1 #創建文件
touch: 無法創建"dior3/test1": 權限不夠 #設定成功,創建不了文件
[root@zhangzhen-01 ~]# chattr -i dior3 #給該權限取消
[root@zhangzhen-01 ~]# !touch #繼續創建文件
touch dior3/test1
[root@zhangzhen-01 ~]# ls dior3/test1 #ok,取消成功,正常創建文件
dior3/test1
[root@zhangzhen-01 ~]# chattr +i dior3
[root@zhangzhen-01 ~]# rm -fv dior3/test1 #在這裏,如果目錄有了“i”權限以後,裏面的文件也是刪除不了的
rm: 無法刪除"dior3/test1": 權限不夠

lsattr命令

概念:該命令用於讀取文件或目錄的特殊權限
格式:lsattr [-aRd] [文件/目錄名]
選項:
-a:類似於ls -a選項,目錄裏隱藏文件一同列出
-R:連同子目錄的數據一並列出。
-d 查看目錄本身

-a 使用方法: 查看全部的(包括隱藏的文件)全都顯示出來

[root@zhangzhen-01 ~]# lsattr -a dior
---------------- dior/.
---------------- dior/..
---------------- dior/test1
---------------- dior/test2

-R 使用方法:連同目錄下的子目錄的數據一並列出 可以看見N層目錄

[root@zhangzhen-01 ~]# lsattr -R dior
---------------- dior/test1
---------------- dior/test2

-d 使用方法:查看目錄本身

[root@zhangzhen-01 /]# lsattr -d root/
---------------- root/

2018.3.28 二周第三次課