umask命令詳解

  

基礎命令學習目錄首頁html

 

原文連接:https://blog.csdn.net/stpeace/article/details/45509425linux

       umask命令用得相對很少, 而umask函數則用得相對較多。 下面, 咱們先來看看umask命令, 它主要用來設置權限屏蔽, 說白了, 就是間接地設置權限。
       咱們先打開一個linux shell終端, 執行一些命名, 獲得以下的結果:
 [taoge@localhost learn_c]$ umask
0002
[taoge@localhost learn_c]$ touch a.txt
[taoge@localhost learn_c]$ ls -l
total 0
-rw-rw-r-- 1 taoge taoge 0 May  5 06:57 a.txt
[taoge@localhost learn_c]$ umask 022
[taoge@localhost learn_c]$ umask
0022
[taoge@localhost learn_c]$ touch b.txt
[taoge@localhost learn_c]$ ls -l
total 0
-rw-rw-r-- 1 taoge taoge 0 May  5 06:57 a.txt
-rw-r--r-- 1 taoge taoge 0 May  5 06:58 b.txt
[taoge@localhost learn_c]$ mkdir zzz
[taoge@localhost learn_c]$ ls -l
total 4
-rw-rw-r-- 1 taoge taoge    0 May  5 06:57 a.txt
-rw-r--r-- 1 taoge taoge    0 May  5 06:58 b.txt
drwxr-xr-x 2 taoge taoge 4096 May  5 07:00 zzz
[taoge@localhost learn_c]$
      咱們看到, 在個人系統中, umask的默認值是002(固然, 在你係統中, 極可能就不是醬紫的)。 002是個什麼意思呢? 意思是說, 若是建立文件, 那麼它的默認權限是664, 若是是建立目錄, 那麼它的權限是775.
      好, 咱們建立一個文件a.txt, 而後查看一下, 發現該文件的權限果真是664.
      下面, 咱們來改一下umask的默認值, 改成022, 並檢驗一下, 發現確實是修改爲功的, 這意味着:建立文件的默認權限是644, 建立目錄的默認權限是755, 咱們實踐一下, 發現果然如此。
    
      因而可知, umask就是爲控制默認權限而生的。
       還沒完, 咱們再打開另外一個終端, 進行操做, 結果爲:
[taoge@localhost learn_c]$ umask
0002
[taoge@localhost learn_c]$ ls -l
total 4
-rw-rw-r-- 1 taoge taoge    0 May  5 06:57 a.txt
-rw-r--r-- 1 taoge taoge    0 May  5 06:58 b.txt
drwxr-xr-x 2 taoge taoge 4096 May  5 07:00 zzz
      咱們看到, 在另一個shell終端中, umask的值仍然是002,  可見, 一個shell進程中的umask值僅在當前shell進程中才有效。

      好, 咱們接着看umask函數,
它經常使用來控制進程建立文件/目錄的默認權限, 代碼以下:
#include <stdio.h> int main(){ system("touch test0.txt"); system("mkdir folder0");  umask(022); system("touch test1.txt"); system("mkdir folder1");  umask(066); system("touch test2.txt"); system("mkdir folder2");  system("ls -l");  return 0;}
      結果爲:
 
 [taoge@localhost learn_c]$ umask 000
[taoge@localhost learn_c]$ gcc test.c
[taoge@localhost learn_c]$ ./a.out
total 24
-rwxrwxrwx 1 taoge taoge 4925 May  5 07:43 a.out
drwxrwxrwx 2 taoge taoge 4096 May  5 07:43 folder0
drwxr-xr-x 2 taoge taoge 4096 May  5 07:43 folder1
drwx--x--x 2 taoge taoge 4096 May  5 07:43 folder2
-rw-rw-rw- 1 taoge taoge    0 May  5 07:43 test0.txt
-rw-r--r-- 1 taoge taoge    0 May  5 07:43 test1.txt
-rw------- 1 taoge taoge    0 May  5 07:43 test2.txt
-rwxrw-rw- 1 taoge taoge  279 May  5 07:42 test.c
[taoge@localhost learn_c]$ umask
0000
[taoge@localhost learn_c]$
 
     咱們知道,  shell是父進程, ./a.out進程是子進程.  下面來分析一下:
     1. 根據test0.txt可知, 父進程能夠影響子進程的默認屏蔽字。
     2. 根據test1.txt可知, 子進程能夠改變本身的默認屏蔽字。
     3. 根據最後shell進程的屏蔽字爲000可知, 子進程不會改變父進程的屏蔽字。

     實際上, umask命令與函數的用法是一致的。 那一年, 我第一次看到umask, 還使勁琢磨着這個玩意兒是幹啥的, 哈哈。
---------------------
做者:stpeace
來源:CSDN
原文:https://blog.csdn.net/stpeace/article/details/45509425
版權聲明:本文爲博主原創文章,轉載請附上博文連接!
 
 
原文連接:https://www.cnblogs.com/zhangchengxiang/p/5196439.html

umask使用方法

  A 什麼是umask?shell

 

  當咱們登陸系統以後建立一個文件老是有一個默認權限的,那麼這個權限是怎麼來的呢?這就是umask乾的事情。umask設置了用戶建立文件的默認 權限,它與chmod的效果恰好相反,umask設置的是權限「補碼」,而chmod設置的是文件權限碼。通常在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中設置umask值。bash

 

  你的系統管理員必需要爲你設置一個合理的 umask值,以確保你建立的文件具備所但願的缺省權限,防止其餘非同組用戶對你的文件具備寫權限。在已經登陸以後,能夠按照我的的偏好使用umask命 令來改變文件建立的缺省權限。相應的改變直到退出該shell或使用另外的umask命令以前一直有效。通常來講,umask命令是在/etc /profile文件中設置的,每一個用戶在登陸時都會引用這個文件,因此若是但願改變全部用戶的umask,能夠在該文件中加入相應的條目。若是但願永久 性地設置本身的umask值,那麼就把它放在本身$HOME目錄下的.profile或.bash_profile文件中。ide

 

  B 如何計算umask值函數

 

  umask 命令容許你設定文件建立時的缺省模式,對應每一類用戶(文件屬主、同組用戶、其餘用戶)存在一個相應的umask值中的數字。對於文件來講,這一數字的最 大值分別是6。系統不容許你在建立一個文本文件時就賦予它執行權限,必須在建立後用chmod命令增長這一權限。目錄則容許設置執行權限,這樣針對目錄來 說,umask中各個數字最大能夠到7。post

 

  該命令的通常形式爲:學習

 

  umask nnnurl

 

  其中nnn爲umask置000-777。spa

 

  讓咱們來看一些例子。

 

  計算出你的umask值:

 

  能夠有幾種計算umask值的方法,經過設置umask值,能夠爲新建立的文件和目錄設置缺省權限。下表列出了與權限位相對應的umask值。

 

  在計算umask值時,能夠針對各種用戶分別在這張表中按照所須要的文件/目錄建立缺省權限查找對應的umask值。

 

  例如,umask值002 所對應的文件和目錄建立缺省權限分別爲6 6 4和7 7 5。

 

  還有另一種計算umask值的方法。咱們只要記住umask是從權限中「拿走」相應的位便可。

 

  umask值與權限

 

  umask 文件 目錄

 

  0 6 7

 

  1 6 6

 

  2 4 5

 

  3 4 4

 

  4 2 3

 

  5 2 2

 

  6 0 1

 

  7 0 0

 

  例如,對於umask值0 0 2,相應的文件和目錄缺省建立權限是什麼呢?

 

  第一步,咱們首先寫下具備所有權限的模式,即777 (全部用戶都具備讀、寫和執行權限)。

 

  第二步,在下面一行按照umask值寫下相應的位,在本例中是0 0 2。

 

  第三步,在接下來的一行中記下上面兩行中沒有匹配的位。這就是目錄的缺省建立權限。

 

  稍加練習就可以記住這種方法。

 

  第四步,對於文件來講,在建立時不能具備執行權限,只要拿掉相應的執行權限比特便可。

 

  這就是上面的例子, 其中u m a s k值爲0 0 2:

 

  1) 文件的最大權限 rwx rwx rwx (777)

 

  2) umask值爲0 0 2 --- --- -w-

 

  3) 目錄權限 rwx rwx r-x (775) 這就是目錄建立缺省權限

 

  4) 文件權限 rw- rw- r-- (664) 這就是文件建立缺省權限

 

  下面是另一個例子,假設此次u m a s k值爲0 2 2:

 

  1) 文件的最大權限 rwx rwx rwx (777)

 

  2 ) u m a s k值爲0 2 2 --- -w- -w-

 

  3) 目錄權限 rwx r-x r-x (755) 這就是目錄建立缺省權限

 

  4) 文件權限 rw- r-- r-- (644) 這就是文件建立缺省權限

 

  C 經常使用的umask值

 

  下表列出了一些umask值及它們所對應的目錄和文件權限。

 

  經常使用的umask值及對應的文件和目錄權限

 

  umask 值 目錄 文件

 

  0 22 7 5 5 6 4 4

 

  0 27 7 5 0 6 4 0

 

  0 02 7 7 5 6 6 4

 

  0 06 7 7 1 6 6 0

 

  0 07 7 7 0 6 6 0

 

  D umask命令

 

  若是想知道當前的umask 值,可使用umask命令:

 

  $umask

 

  若是想要改變umask值,只要使用umask命令設置一個新的值便可:

 

  $ umask 002

 

  確認一下系統是否已經接受了新的u m a s k值:

 

  $umask

 

  002

 

  $touch testfile

 

  $ls -l testfile

 

  rw- rw- r--

 

  在使用umask命令以前必定要弄清楚到底但願具備什麼樣的文件/目錄建立缺省權限。不然可能會獲得一些很是奇怪的結果;例如,若是將umask值設置爲6 0 0,那麼所建立的文件/目

 

  錄的缺省權限就是0 6 6!

相關文章
相關標籤/搜索