2012-03-02 8 views
2

私は、ファイルがchmod 644の権限で作成されたときにデフォルトでそれを理解しています。それを変更して、特定のフォルダに作成されたファイルはデフォルトで664になりますか?unix - chmodデフォルトの将来のファイルアクセス権

+3

デフォルトでは、ファイルが '644'パーミッションで作成されているのは間違いです。既定のアクセス許可は、作成プロセスの[umask](http://en.wikipedia.org/wiki/Umask)設定によって決まります。 umaskは '022'で、これは' 644'パーミッションでファイルを作成するのが最も一般的です。 –

答えて

1

ありませんが、あなたは新しく作成されたファイルやディレクトリのデフォルト・グループは、親フォルダのグループに設定することができます - はおそらく回避策問題: chmod g+s <parent-directory><parent-directory>で作成されるすべてのものは、デフォルトで<parent-directory>のグループ所有権を持ちます。

4

POSIXシステムでファイル作成モードを制御するユーティリティは、umaskと呼ばれます。私は、フォルダごとにファイル作成マスクを適用できるとは思いません。しかし、umaskをスクリプトの中で使うことができます。サブシェルで定義されたマスクは、通常のumask(0002)の設定には影響しません。

chdir() { 
    local action="$1"; shift 
    case "$action" in 
     # popd needs special care not to pass empty string instead of no args 
     popd) [[ $# -eq 0 ]] && builtin popd || builtin popd "$*" ;; 
     cd|pushd) builtin $action "$*" ;; 
     *) return ;; 
    esac 
    # 
    # now do stuff in the new pwd 
    # 
    SPECIAL_DIRS="/tmp/blah1 /tmp/blah2" 
    DEFAULT_MASK="0002" 
    for dir in $SPECIAL_DIRS 
    do 
     if [[ "$PWD" == "$dir" ]] 
     then 
      umask 0007 
      echo "[*] special mask settings applied - $(umask -S)" 
     else 
      umask $DEFAULT_MASK 
     fi 
    done 
    # 
    # 
} 
alias cd='chdir cd' 
alias pushd='chdir pushd' 
alias popd='chdir popd 
:あなたは特別なディレクトリ内INGの cdは、あなたがbashのスクリプトあなたに以下を追加することができたときに自動的にマスクの設定を変更したい場合は

は(私はthis SOポストからchdir()機能にヒントを取りました)

ご覧のとおり、/tmp/blah1/tmp/blah2を特別なディレクトリとして定義しました。今私がcd /tmp/blah1を普通のbashから入手すると、私のumaskの設定がそれに応じて変更されます。

[22:45:43] [email protected]:[~]$ cd /tmp/blah1 
[*] special mask settings applied - u=rwx,g=rwx,o= 
[22:45:49] [email protected]:[/tmp/blah1]$ cd /tmp/blah2 
[*] special mask settings applied - u=rwx,g=rwx,o= 
[22:46:03] [email protected]:[/tmp/blah2]$