1,454 瀏覽數

預設的權限

當我們在建立檔案/目錄時會有預設的權限,檔案為 666-umask,目錄權限為 777-umask, 所以可以看到預設的權限與 umask 是相關,而這系統預設 mask 又會依據不同的使用者而有所不同.

  • 非特權的使用者其 umask 為 002
  • root (特權使用者) 的 umask 為022,
  • 使用者的 GID 與 UID 不同時的umask為022.

我們先來看看 umask 的定義,其定義在 /etc/bashrc

[root@benjr ~]# cat /etc/bashrc
if [ "`id -gn`" = "`id -un`" -a `id -u` -gt 99 ];then
umask 002
else
umask 022
fi

可以看到上面定義了當 uid=gid 或 uid 大於 99 時(一般使用者從 uid 從 500 開始起跳) 其 umask 預設為 002.其他的則為 022

  • 一般使用者 檔案/目錄 預設的權限
    user1 登入系統

    [user1@benjr user1]$ touch f1
    [user1@benjr user1]$ mkdir d1
    [user1@benjr user1]$ ll
    total 4
    drwxrwxr-x    2 user1    user1        4096 Oct 28 18:10 d1
    -rw-rw-r–    1 user1    user1           0 Oct 28 18:10 f1
    

    檔案 f1 預設權限為 666-002=664 (-rw-rw-r–)
    目錄 testdir 預設權限為 777-002=775 (drwxrwxr-x)

    這裡並非真的使用減法,而是用遮罩的方式來求得
    例如有位使用者自己設定了 umask 為 033 此時就可以看出來,預設權限的算法的確不是用減法
    user1 登入系統

    [user1@benjr user1]$ umask 033
    [user1@benjr user1]$ touch f1
    [user1@benjr user1]$ ll
    total 0
    -rw-r–r–    1 user1    user1           0 Oct 25 12:16 f1
    

    File        666     – r w –  r  w  –  r  w  –
    umask   033     – –  –  –  –  w x  –  w  x
    —————————-
    – r w –  r   –  –  r   –   –    = 644
    並非用減法算出的 666-033 = 633 而是 644

  • root 檔案/目錄預設的權限
    root 登入系統

    [root@benjr ~]# touch testfile
    [root@benjr ~]# mkdir testdir
    [root@benjr ~]# ll
    total 4
    drwxr-xr-x    2 user1    user1        4096 Oct 28 18:10 testdir
    -rw-r–r–    1 user1    user1           0 Oct 28 18:10 testfile
    

    檔案 testfile 預設權限為 666-022=644 (-rw-r–r–)
    目錄 testdir 預設權限為 777-022=755 (drwxr-xr-x)

  • 使用者的 GID 與 UID 不同時的umask
    root 登入系統

    [root@benjr ~]# adduser user1
    [root@benjr ~]# adduser user2
    [root@benjr ~]# passwd user1
    [root@benjr ~]# passwd user2
    [root@benjr ~]# vi /etc/passwd
    user1:x:500:501::/home/user1:/bin/bash
    user2:x:501:501::/home/user1:/bin/bash
    

    把 user1 的的 uid 設定為 500 (user1) 而 gid 設定為 501(user2).檢查一下 user1 屬於哪一個 group 以及 user.

    [root@benjr ~]# id -gn user1
    user2
    [root@benjr ~]# id -un user1
    user1
    

    user1 登入系統

    
    [user1@benjr user1]# touch file1
    [user1@benjr user1]# ll file1
    -rw-w–w–   1  user1  user2      0   Mar   16   22:53 file1
    

    umask 為 022 而非,非特權使用者的 002

網友的想法

  1. 自動參照通知: Linux – File | Benjr.tw

發表迴響