1. 程式人生 > >linux權限及權限管理

linux權限及權限管理

執行 全局配置 inux 進入 本地 原因 su - root 不足 切換用戶

一、權限管理

1.權限的類型:

    r:讀權限,對文件來說可以讀取裏面的內容,對目錄來說可以列出目錄下的文件。
    w:寫權限,對文件來說可以修改文件的內容,對目錄來說可以創建刪除目錄下的文件。
    x:執行權限,對文件來說可以運行這個文件,對目錄來說可以進入這個目錄。

2.文件的三類用戶

    u:屬主,表示此文件屬於這個用戶。
    g:屬組,表示這個文件屬於此組。
    o:其他用戶。

3.chown用法
chown改變文件的屬主、屬組,只用管理員才用權限。
用法chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

         例如:chown student file,將file文件的屬主改為student用戶。
                             chown -R student dir,將dir目錄及其目錄下的文件的屬主改為student,如果不加-R只修改目錄的屬性。
                             chown --reference=/tmp/test.txt file,將file文件的屬主,屬組改為和/tmp/test.txt的屬性一致。
                             chown student:student(student.student) file,將file文件的屬主,屬組改為student。

4.chgrp修改文件的屬組
用法與chown類似,但是不能修改文件的屬主。
5.chmod修改文件的權限

    chmod 666 file,將file文件的權限改為666(rw-rw-rw-)權限。
    chmod --reference=/tmp/test.txt file,將file文件的權限與/tmp/test.txt的一致。
    chmod -R 666 /dir,將/dir目錄及其目錄下的文件的權限改為666。
    **註意:如果修改的權限不足三位,將會在前面添加0,如chmod 66 file,實際上是將文件file的權限改為 066 ,即不足三位在前面添加0。**

    修改某類用戶或某些類用戶的權限:

            u:屬主,g:屬組,o:其他,a:所有
            chmod u=rwx file,將file文件的屬主權限改為rwx。
            chmod u=rwx,g=rw file,將file文件的屬主權限改為rwx,屬組權限改為rw,如果g和u的權限一致可以使用ug=rwx。
            chmod u=  file,將file的屬主權限設置為空,即屬主沒有任何權限。
            chmod u+x file,將file文件的屬主權限加上x權限,那麽  u-x 表示去掉x權限,如 chmod a-x file,表示所有用戶的權限去掉x。
            對目錄的用法同樣有效。

6.umask用法及介紹
umask可以稱作是 “遮掩嗎” ,它是用來修改創建文件時默認權限的,文件的默認權限是666(rw-rw-rw-,linux的系統為了安全考慮所有的文件默認是不具有x執行權限的),目錄的默認權限為777;如果你當前的umask的值為022(可以使用命令umask查看,只取後三位,第一位特殊權限位暫時不考慮),那麽你在創建文件時的權限為644(666-022),創建目錄的權限為755(777-022),每個用戶的umask的值可能是不一樣,root管理員的為002,普通用戶的為022,umask的是可以修改的,使用命令umask 023,將當前bash環境的umask的值修改為023。
需要註意的是:使用命令修改的變量只對當前的bash環境生效,即使你使用同一用戶登錄到同一系統也不生效,要想永久或對其它環境生效需要將其寫入到配置文件,下面我們講下用戶的登陸shell方式和登陸之後讀取的bash配置文件:

    用戶是怎麽登錄到系統的?從用戶角度來講,shell類型:
    登錄式shell:
            正常通過某終端登錄
            su - username 登錄
            su -l username登錄
    非登錄式shell:
            su username 登陸
            圖形終端下打開的命令行窗口
            自動執行的shell腳本

    bash的配置文件有:
            全局配置對所有用戶有效:/etc/profile,/etc/profile.d/*.sh,/etc/bashrc
            個人配置:~/.bashrc,~/.bash_profile
            一般來說,profile類的文件用來設定環境變量和運行命令或腳本,bashrc類文件用來設定本地變量或別名(alias)
            當用戶采用登錄式shell登錄到系統時,讀取bash的配置文件和順序如下:
                    /etc/profile-->/etc/profile.d/*.sh-->~/.bash_profile-->~/.bashrc-->/etc/bashrc (安照此順序讀取bash配置文件 ~ 表示家目錄)
            使用非登錄式shell登錄到系統時,讀取的bash配置文件和順序如下:
                    ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*.sh               
            所有我們使用su root和su - root切換用戶時所帶的環境是不一樣的,應為讀取的bash配置文件不一樣,要想使umask 023永久生效就在相應的bash配置文件寫入吧,需要註意的是如果已經登錄了再修改,需要退出重新登錄才生效。
            另外還要註意的是:如果你的umask設置為023,那麽你新建的文件權限是多少了?計算 666-023 =  643(rw-r---wx),事實上當我們創建文件如file時,使用 ls -l file 查看會發現文件的權限為 rw-r--r-- (644),這是為什麽?原因是這樣的,在前面我們講過,linux的系統為了安全考慮創建的文件是默認不會有x執行權限的,也就是說如果你將umask的值設置為023,那麽創建文件後計算出來的權限值是643,帶有x的執行權限,這是linux不允許的,所以會在有x執行權限的位數上加1,也就變成了644了。
            如果你將umask 027 了,創建文件時的權限為640(沒有負數哦)。

7.建議
要了解更多的chown,chgrp,chmod等用法使用man查看。

linux權限及權限管理