UID、GID、および 8 進数のアクセス許可を使用して Go で os.FileMode をインスタンス化する方法は?

Linda Hamilton
リリース: 2024-11-22 10:28:10
オリジナル
932 人が閲覧しました

How to Instantiate os.FileMode in Go with UID, GID, and Octal Permissions?

os.FileMode を適切にインスタンス化する方法

Go では、os.FileMode 型はファイルのアクセス許可を指定するファイル モード ビットを表します。いくつかの例とチュートリアルでファイルの作成が示されていますが、多くは os.FileMode の適切なインスタンス化をバイパスし、代わりにアクセス許可ビットの設定に直接依存しています。

チャレンジ

メソッドを探します提供された UID、GID、および 8 進数で表される権限の値を利用して、os.FileMode を正しくインスタンス化します。

解決策

事前定義された定数に依存する代わりに、以下を使用できます。

const (
    OS_READ = 04
    OS_WRITE = 02
    OS_EX = 01
    OS_USER_SHIFT = 6
    OS_GROUP_SHIFT = 3
    OS_OTH_SHIFT = 0

    OS_USER_R = OS_READ << OS_USER_SHIFT
    OS_USER_W = OS_WRITE << OS_USER_SHIFT
    OS_USER_X = OS_EX << OS_USER_SHIFT
    OS_USER_RW = OS_USER_R | OS_USER_W
    OS_USER_RWX = OS_USER_RW | OS_USER_X

    OS_GROUP_R = OS_READ << OS_GROUP_SHIFT
    OS_GROUP_W = OS_WRITE << OS_GROUP_SHIFT
    OS_GROUP_X = OS_EX << OS_GROUP_SHIFT
    OS_GROUP_RW = OS_GROUP_R | OS_GROUP_W
    OS_GROUP_RWX = OS_GROUP_RW | OS_GROUP_X

    OS_OTH_R = OS_READ << OS_OTH_SHIFT
    OS_OTH_W = OS_WRITE << OS_OTH_SHIFT
    OS_OTH_X = OS_EX << OS_OTH_SHIFT
    OS_OTH_RW = OS_OTH_R | OS_OTH_W
    OS_OTH_RWX = OS_OTH_RW | OS_OTH_X

    OS_ALL_R = OS_USER_R | OS_GROUP_R | OS_OTH_R
    OS_ALL_W = OS_USER_W | OS_GROUP_W | OS_OTH_W
    OS_ALL_X = OS_USER_X | OS_GROUP_X | OS_OTH_X
    OS_ALL_RW = OS_ALL_R | OS_ALL_W
    OS_ALL_RWX = OS_ALL_RW | OS_GROUP_X
)
ログイン後にコピー

これらの定数を使用すると、アクセス許可を次のことができます。明示的に指定できます:

dir_file_mode := os.ModeDir | (OS_USER_RWX | OS_ALL_R)
os.MkdirAll(dir_str, dir_file_mode)
ログイン後にコピー

このメソッドにより、ファイルのアクセス許可を正確に制御できるようになり、許可ビットを手動で設定する必要があります。

以上がUID、GID、および 8 進数のアクセス許可を使用して Go で os.FileMode をインスタンス化する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート