linux文件權限與目錄配置

一.Linux文件屬性及權限
1.文件/目錄屬性查看
(1)文件屬性查看
[root@localhost ~]# ls -l file
   -      rw-r--r--.     1             root      root    0        11月 15 23:55         file
  類型       文件權限     連接數        文件所有人  文件所有組    大小    最後一次被修改的時間    名字
(2)查看目錄屬性
[root@localhost ~]# ls -ld test
  d    rwxr-xr-x.       2     root        root       6         11月 15 23:56             test
 類型      權限          連接數  目錄所有人  目錄所有組 子文件屬性大小    目錄中內容變化        目錄名

注:1.文件名第一個字符爲“.”的文件是隱藏文件,用“ls -al”查看
      2.文件的容量大小,單位爲B。
      3.顯示完整的時間格式,用“ls -l --full-time”。

(3)文件權限的含義

a.對文件的含義

r:可讀權限,可以使用類似cat等命令查看文件內容

w:可以對文件進行編輯和刪除

x:可以運行此文件

b.對目錄的含義

r:可以對此目錄查看目錄內的文件內容,如ls

w:可以在此目錄創建文件或目錄,但必須有x的權限。

x:可以使用cd命令切入到此目錄或使用ls -l查看那目錄內文件的詳細內容。


2.改變文件屬性與權限
(1)文件所屬用戶組

chgrp命令用來改變文件或目錄所屬的組。

命令結構:
chgrp  (-R) 用戶組名/gid  文件/目錄    ##改變文件/目錄所屬用戶組

chgrp  (-R) --reference=文件名      要修改的文件名     ##將要修改的文件的所屬組改爲和前者文件一致的所屬組,前一個文件是被參照的文件,後一個文件爲被修改的文件。

注:被改變的組名必須在/etc/group文件內存在,否則顯示錯誤。
[root@localhost ~]# chgrp test file
chgrp: invalid group: ‘test’                     ##test用戶組不存在
[root@vm1 ~]# ls -l test.txt
-rw-r--r-- 1 root root 0 8月   4 10:36 test.txt
[root@vm1 ~]# chgrp 38 test.txt        ##以gid爲參數修改,38爲ntp的gid。
[root@vm1 ~]# ls -l test.txt
-rw-r--r-- 1 root ntp 0 8月   4 10:36 test.txt

[root@vm1 ~]# ls -l file.sh
-rw-r--r-- 1 root root 0 8月   4 10:37 file.sh
[root@vm1 ~]# chgrp --reference=/root/test.txt file.sh
[root@vm1 ~]# ls -l file.sh
-rw-r--r-- 1 root ntp 0 8月   4 10:37 file.sh

(2)更改文件權限

chmod:不是所有人都可以使用chown更改文件權限,除root外,其餘用戶只能更改屬主爲自己的文件或目錄。
注:當複製文件/目錄給某個用戶,複製後文件/目錄的屬性和權限不會更改,則需要用chown改變文件所有者和所屬組。

chmod具有四種更改方式:賦權,授權,八進制更改,參照文件更改。

更改參數:-o(other):更改其他用戶的權限

                -g(group):更改屬組權限

                -u(user):更改屬主權限

                a(all):更改所有用戶權限(將以上三種全部更改)

命令結構:

chmod       權限      文件/目錄       ##改變文件/目錄的權限

a.賦權表示法

    用“=”來進行賦權更改,直接更換文件原有的權限,更改爲指定的權限。

[root@vm1 ~]# chmod u=rwx file.sh
[root@vm1 ~]# ls -l file.sh
-rwxr--r-- 1 root ntp 0 8月   4 10:37 file.sh

b.授權表示法

    用“+”“-”來進行授權更改,其含義爲在原有的權限上增加或者減少權限

[root@vm1 ~]# chmod u-w,g-r,o-r file.sh
[root@vm1 ~]# ls -l file.sh
-r-x------ 1 root ntp 0 8月   4 10:37 file.sh

c.八進制表示法

    用八進制如:“777”直接對目錄或者文件進行權限更改。

[root@vm1 ~]# chmod 644 file.sh
[root@vm1 ~]# ls -l file.sh
-rw-r--r-- 1 root ntp 0 8月   4 10:37 file.sh

d.參照文件表示法

    使用選項“--reference=文件”來進行更改,其含義爲參照指定文件的權限來對當前指定文件進行權限更改,結果與參照文件的權限一致。

[root@vm1 ~]# ls -l test.txt
-rwxr-xr-x 1 root ntp 0 8月   4 10:36 test.txt
[root@vm1 ~]# ls -l file.sh
-rw-r--r-- 1 root ntp 0 8月   4 10:37 file.sh
[root@vm1 ~]# chmod --reference=/root/test.txt file.sh
[root@vm1 ~]# ls -l file.sh
-rwxr-xr-x 1 root ntp 0 8月   4 10:37 file.sh

注:第一種和第二種只能針對其中一類用戶更改,第三中和第四種不能單獨更改一類用戶。
注:被改變的用戶名/組名必須在/etc/passwd和/etc/group文件內存在,否則顯示錯誤。


(3)改變文件屬主屬組

chown用於修改文件或者目錄的屬主和屬組,root用戶可以對所有文件或目錄進行屬主和屬組的更改,普通用戶只能更改屬主是自己的文件或目錄,該命令也可使用參照文件修改法。

命令結構:

chown(-R)  屬主名:屬組名  文件/目錄          ##改變屬主屬組

chown  (-R) --reference=被參照文件        文件

[root@vm1 ~]# chown apache:memcached file.sh
[root@vm1 ~]# ls -l file.sh
-rwxr-xr-x 1 apache memcached 0 8月   4 10:37 file.sh


[root@vm1 ~]# ls -l test.txt
-rwxr-xr-x 1 root ntp 0 8月   4 10:36 test.txt
[root@vm1 ~]# chown --reference=/root/test.txt  file.sh
[root@vm1 ~]# ls -l file.sh
-rwxr-xr-x 1 root ntp 0 8月   4 10:37 file.sh

注:對目錄更改屬主屬組時,如果也需要修改目錄文件下的文件和目錄一樣的屬主屬組,則可使用“-R”參數,代表遞歸修改目錄下的文件。

a.如果只修改文件的屬組,則可使用冒號+屬組名,表示只修改屬組,屬主不變。

b.如果只修改屬主,則直接寫上用戶名即可,屬組不變。


3.文件/目錄權限的意義
(1)文件是用來記錄數據的,包括一般文本文件,數據庫內容文件,二進制可執行文件等。
    #若文件給“w”權限,則應給“r”權限。文件能否執行由是否含有“x”權限決定。
    #文件具備“w”權限,可以“寫入,編輯,新增,修改”文件的內容,普通用戶不能刪除文件,文件的刪除由目錄的“w”權限決定。
(2)目錄是存放數據的,主要的內容是記錄文件名列表。
    #若目錄給“r”權限,則應給“x”權限。“w”權限不可隨便給。
    #目錄“w”權限具備“新建,刪除,重命名,轉移”文件/目錄等功能
    #目錄“x”權限代表用戶能否進入目錄。

4.文件的默認權限
(1)默認權限的查看
umask(反掩碼)                                 ##默認用戶在新建文件或目錄後的權限默認值。(默認需要減去的權限)。
[root@localhost ~]# umask
0022                                  ##默認權限爲777-022=755.(針對於目錄)

注:umask的值默認是四位,分別代表:setUid/setGid/粘着位(sticky)、屬主權限、組權限、其他用戶的權限。有效值爲後三位,bash中,第一位必須爲0.


系統超級用戶root的umask值是0022,而其餘用戶的umask值爲0002.用戶創建“文件”,默認沒有執行權限“x”,所以默認值爲666,目錄默認爲777,當目錄或文件創建後,需要減去對應的umask值纔是目錄或者文件的最終權限。所以root創建的目錄權限爲755,文件權限爲644.其餘用戶創建的目錄權限爲775,文件權限爲664.


系統爲什麼要經過umask值來創建文件或者目錄。

    因爲系統默認創建文件或目錄的權限是666和777,這樣不安全,所以引入umask值來控制用戶在創建文件或目錄時的權限問題。

(-rw-rw-rw)-(-----w--w-)===>-rw-r--r--      ##文件
(drwxrwxrwx)-(d----w--w-)==>drwxr-xr-x   ##目錄
(2)默認權限的設定
如何設置umask
[root@localhost ~]# umask 002                        ##設置默認權限爲002
[root@localhost ~]# mkdir yang
[root@localhost ~]# ls -ld yang
drwxrwxr-x. 2 root root 6 Nov 16 05:22 yang
(3)umask配置文件的設定
vim /etc/bashrc                                    ##71行是普通用戶的更改,73是超級用戶的更改
    if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then      ##如果UID不在199之內,並且用戶組名和用戶名一致
         umask 002                                                ##則該用戶是普通用戶,umask爲0002,
      else
         umask 022                                                ##反之爲系統用戶,umask值爲0022
      fi
vim /etc/profile                                ##60行是普通用戶的更改,62是超級用戶的更改
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
      umask 002
  else
      umask 022
 fi
source /etc/bashrc /etc/profile ##讓更改立即生效
注:兩個文件必須更改一致。

5.特殊權限
stickyid    ###強制位
o+t                                ###只針對目錄,當一個目錄上有t權限時,這個目錄中的文件只能被文件擁有者刪除
t=1
chmod o+t 目錄
chmod 1777 目錄
[root@localhost mnt]# mkdir test yang                         
[root@localhost mnt]# chmod 777 test                          
[root@localhost mnt]# chmod 1777 yang
[root@localhost mnt]# ls -ld test yang
drwxrwxrwx. 2 root root    6 Nov 16 08:00 test
drwxrwxrwt. 2 root root 4096 Nov 16 07:59 yang
[root@localhost mnt]# touch test/file{1..2}
[root@localhost mnt]# touch yang/file{1..2}
[root@localhost mnt]# su - student
Last login: Mon Nov 16 07:56:10 EST 2015 on pts/1
[student@localhost ~]$ cd /mnt
[student@localhost mnt]$ rm -fr test/file*
[student@localhost mnt]$ rm -fr yang/file*
rm: cannot remove ‘yang/file1’: Operation not permitted
rm: cannot remove ‘yang/file2’: Operation not permitted
[student@localhost mnt]$ ls test/
[student@localhost mnt]$ ls yang/
file1      file2


sgid        ###粘制位
g+s        ##針對目錄,在目錄中創建的文件都自動歸屬到目錄所在組,針對二進制文件,文件內記錄的程序在執行時和執行者的組身份沒有關係,而是以二進制文件的所有組的身份執行的
chmod g+s file|directory
chmod 2777 file|directory
[root@localhost mnt]# mkdir test
[root@localhost mnt]# chgrp student test
[root@localhost mnt]# chmod 2765 test
[root@localhost mnt]# ls -ld test
drwxrwSr-x. 2 root student 6 Nov 16 07:34 test
[root@localhost mnt]# touch /mnt/test/file
[root@localhost mnt]# ls -l /mnt/test/file
-rw-r--r--. 1 root student 0 Nov 16 07:34 /mnt/test/file


suid        ###冒險位
u+s        ###針對文件,文件記錄動作在執行時是以文件所有人身份執行的,與是誰發起的無關
chmod u+s file
chmod 4777 file
[root@localhost mnt]# cp /bin/touch .
[root@localhost mnt]# chmod 4755 touch
[root@localhost mnt]# ls -l
total 64
-rwsr-xr-x. 1 root root 62432 Nov 16 07:35 touch
[root@localhost mnt]# ls -l
total 64
-rwsr-xr-x. 1 root root 62432 Nov 16 07:35 touch
[student@localhost ~]$ /mnt/touch file
[student@localhost ~]$ touch file1
[student@localhost ~]$ ls -l
-rw-rw-r--. 1 root student 0 Nov 16 07:37 file
-rw-rw-r--. 1 student student 0 Nov 16 07:40 file

########################################################


二.Linux文件類型,擴展名與目錄配置

1.文件類型,擴展名
(1)文件類型
    普通文件:第一個字符爲[-].
            純文本文件(ASCII)
            二進制文件(binary)
            數據格式文件(data)
    目錄(directory):第一個屬性爲[d]。
    鏈接文件(link):第一個屬性爲[l]。
    設備與設備文件(device):通常集中在/dev目錄中
             塊(biock)設備文件:存儲數據,提供系統隨機訪問的接口設備,第一個屬性爲[b]。一般爲主機硬件設備。
             字符(character)設備文件:串行接口的設備,第一個屬性爲[c]。一般爲外置設備。
    套接字(sockets):數據接口文件,被用在網絡上的數據連接。第一個屬性是[s]。通常在/var/run目錄中可以看到這種文件類型。
    管道(FIFO,pipe):
                fifo:解決多個程序同時訪問一個文件所造成的錯誤問題。第一個屬性是[p]。

(2)文件擴展名
    注:一個文件中沒有可執行數據,即使擁有“x”權限,也不能執行。
    *.sh:腳本或批處理文件。文件是用shell寫的,擴展名爲*.sh。
    *Z,*.tar,*.tar.gz,*.zip,*.tgz:經過打包壓縮的文件。
    *.html,*.php:網頁相關文件,分別帶邊html語法和php語法的網頁文件。.html文件可使用瀏覽器直接開啓,.php文件可以通過客戶端的瀏覽器來服務端瀏覽。

(3)Linux文件長度限制
    默認ext2,ext3,ext4,xfs文件系統
    單一文件/目錄:最大文件名容許量爲255個字符
    完整路徑名稱及目錄(/)的完整文件名爲4096個字符。

2.目錄配置
(1)目錄
/       ##根目錄。存儲與開機系統的文件。/etc./bin./dev./lib./sbin應該和根目錄放置在一個分區裏,而類似/usr/local可以單獨位於另一個分區
/bin    ##在單用戶維護模式下能夠操作的命令。/bin下的一些命令可以被root與一般用戶所使用,主要有cat,chmod,chown,date,mv,mkdir,cp,bash等常用命令。
/sbin    ##系統管理命令存放位置,一般只能有超級用戶執行。大多數命令普通用戶一般無權限執行,類似/sbin/ifconfig,普通用戶使用絕對路徑也能執行,用於查看當前系統的網絡配置。
/boot    ##啓動分區,負責系統啓動。存放linux啓動時內核以及引導系統程序所需要的核心文件,內核文件(vmlinuz)和grub系統引導管理器(/boot/grub)位於此目錄。
/dev    ##存放設備與設備接口管理文件,訪問該目錄下的某個文件相當於訪問某個硬件設備,常用的有/dev/null,/dev/zero,/dev/tty,/dev/ip*,/dev/hd*,/dev/sd*。
/etc    ##存放大多數系統配置文件,作爲一些軟件啓動時默認配置文件讀取的目錄,不可放置可執行文件。/etc/fstab:存放系統分區掛載信息,/etc/init.d:所有服務的默認啓動腳本。/etc/xinetd.d:super daemon(超級守護進程)管理的各項服務的配置文件目錄。/etc/X11:與X Windows有關的配置文件,xorg.conf:XServer的配置文件。
/home    ##普通用戶的家目錄,
/lib    ##32位系統庫文件存放位置,主要存放開機時用到的函數庫,以及在/bin或/sbin下面的命令會調用的函數庫。/lib/modules:存放內核相關的模塊(驅動程序)
/lib64    ##64位系統庫文件存放位置
/media    ##系統臨時設備掛載點。存放軟盤,光盤,DVD等設備。
/mnt    ##系統臨時設備掛載點
/run    ##系統臨時設備掛載點
/opt    ##第三方軟件安裝位置。存放第三方軟件以及自行安裝額外的軟件。
/proc    ##虛擬文件系統,存放系統運行時的運行信息,如進程信息,內核信息,網絡信息等。此目錄存放在內存中,實際不佔用磁盤空間。如/proc/cpuinfo存放cpu的相關信息。
/root    ##超級用戶家目錄
/srv,/var    ##系統數據,日誌文件
/sys    ##系統管理,主要是關於內核的
/tmp    ##系統臨時文件存放位置,任何人均可訪問。系統軟件或者用戶運行程序時產生的臨時文件存放在這裏。此目錄數據需要定期清除。
/usr    ##系統用戶相關信息數據及用戶自定義軟件存放位置。

(2)系統文件路徑
絕對路徑
文件在系統的真實位置,文件名字以“/”開頭,例如:/usr/share/doc。
相對路徑
文件相對與當前所在位置的一個名字的簡寫,這個名字不會以/開頭,而且名字會自動添加pwd顯示的值

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