8 進数表記を直接使用できます:
os.Mkdir("dirname", 0700)
許可ビット
+-----+---+--------------------------+
| rwx | 7 | Read, write and execute |
| rw- | 6 | Read, write |
| r-x | 5 | Read, and execute |
| r-- | 4 | Read, |
| -wx | 3 | Write and execute |
| -w- | 2 | Write |
| --x | 1 | Execute |
| --- | 0 | no permissions |
+------------------------------------+
+------------+------+-------+
| Permission | Octal| Field |
+------------+------+-------+
| rwx------ | 0700 | User |
| ---rwx--- | 0070 | Group |
| ------rwx | 0007 | Other |
+------------+------+-------+
Unix パーミッション入門
一般的な権限の使用法
0755 Web サーバーで一般的に使用されます。所有者は、読み取り、書き込み、実行ができます。他のすべてのユーザーは、ファイルを読み取って実行できますが、変更することはできません。
0777 誰もが読み書きおよび実行できます。 Web サーバーでは、ファイルやフォルダーに「777」権限を使用することはお勧めできません。これにより、誰でも悪意のあるコードをサーバーに追加できるようになります。
0644 所有者のみが読み書きできます。それ以外の人は読むことしかできません。誰もファイルを実行できません。
0655 所有者のみがファイルを読み書きできますが、ファイルを実行することはできません。それ以外のユーザーは読み取りと実行が可能ですが、ファイルを変更することはできません。
www.maketecheasier.com/file-permissions-what-does-chmod-777-means/
Linux でのディレクトリのアクセス許可
Linux のディレクトリにパーミッションを適用する場合、パーミッション ビットは通常のファイルとは異なる意味を持ちます。 (出典)
読み取りビット ユーザーは、ディレクトリに含まれるファイル名を読み取ることができます。
書き込みビット 実行ビットも設定されている場合、ユーザーはファイル名を{追加、名前変更、削除}できます。
実行ビット ユーザーはディレクトリに入り、内部のファイルにアクセスできます。
https://unix.stackexchange.com/a/21252
権限計算ツール
便利なパーミッション計算機。
@Daniel の回答での発言は実際には正しくありません。また、@SashaCrofter がコメントで正しく指摘しているように、10 進数について述べてから 8 進数を使用しています。
実際には、フォームは関係ありません 適切な Unix パーミッションを表している限り、パーミッション値は有効です。
POSIX ファイル システムの許可ビットは 3 つのビット (所有者、グループ、その他のアクセス用の 3 ビット、および修飾子 (スティッキー ビットなど) の 3 ビット) の 3 つのビットで構成されているため、8 進数を使用してそれぞれの として許可を表すのが通例です。数字 8 進数の は 3 ビット値を表します。
したがって、Go コードで 0700 を使用すると、先頭の 0 が取り除かれ、パーサーに 8 進数リテラルを認識していることを伝えるためだけに存在します。次の 3 文字は、所有者、グループ、およびその他のパーミッションをこの順序で表します。たとえば、ファイル システム オブジェクトをグループで読み取り可能および実行可能にするだけでなく、グループ スティッキー ビットも設定する必要がある場合は、02750 などを指定します。
ファイル システム オブジェクトが取得する実際のアクセス許可は、アクティブな umask
によってさらに調整されることに注意してください。 オブジェクトを作成するプロセスの。
これらのトピックをより理解するには、chmod
を読むことをお勧めします Unix ライクなオペレーティング システムに関するマニュアル ページと一般的な文献。
umask を 0 にリセットできます。これをメイン ファイルの最初に呼び出します
syscall.Umask(0)
例
_ = os.MkdirAll("/tmp/dirs/1", 0664)
syscall.Umask(0)
_ = os.MkdirAll("/tmp/dirs/2", 0664)
結果
/tmp/dirs$ stat -c '%A %a %n' *
drw-r--r-- 644 1
drw-rw-r-- 664 2