當我們在建立檔案/目錄時會有預設的權限,檔案為 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
One thought on “Linux – 預設的權限”