GoLang 入門編: osパッケージ – Chmod, Chown編

パーミッションの変更

パーミッションの変更するには、Chmod関数を使用します。

func Chmod(string, uint32) Error

Chmod(ファイル名, パーミッション)のような形で使用します。

drwxr-xr-x  2 golang  golang   64 12 12 23:16 dir
-rwxr-xr-x  1 golang  golang    0 12 12 21:00 file
lrwxr-xr-x  1 golang  golang   24 12 12 23:23 symlink -> symlink_dir/symlink_file
drwxr-xr-x  3 golang  golang   96 12 12 23:16 symlink_dir
-rwxr-xr-x  1 golang  golang    0 12 12 23:15 symlink_dir/symlink_file

上記のパーミッションの状態で、下記のGoのプログラムを実行します。

package main
import (
     "os"
     "fmt"
 )
func main() {
     _ = os.Chmod("./file", 0777)
     _ = os.Chmod("./dir", 0777)
     _ = os.Chmod("./symlink", 0777)
     err := os.Chmod("./not_exist", 0777)
     fmt.Print(err)
 }

main.goというファイル名で作成したので、下記のように実行します。

go run main.go

実行後は下記のようにパーミッションが変更されています。

drwxrwxrwx  2 golang  golang   64 12 12 23:16 dir
-rwxrwxrwx  1 golang  golang    0 11 24 21:00 file
lrwxr-xr-x  1 golang  golang   24 12 12 23:23 symlink -> symlink_dir/symlink_file
drwxr-xr-x  3 golang  golang   96 12 12 23:16 symlink_dir
-rwxrwxrwx  1 golang  golang    0 12 12 23:15 symlink_dir/symlink_file

symlinkはsymlinkのターゲットのsymlink_fileのパーミッションが変更されます。
ファイルが存在しない場合は、下記のようなエラーが表示されます。

chmod ./not_exist: no such file or directory

所有者(uid)、所有グループ(gid)の変更

所有者(uid)、所有グループ(gid)を変更するには、Chown関数を使用します。

func Chown(string, int, int) Error

Chown(ファイル名, uid, gid)のような形で使用します。

drwxrwxrwx  2 golang  golang   64 12 12 23:16 dir
-rwxrwxrwx 1 golang golang 0 11 24 21:00 file
lrwxr-xr-x 1 golang golang 24 12 12 23:23 symlink -> symlink_dir/symlink_file
drwxr-xr-x 3 golang golang 96 12 12 23:16 symlink_dir
-rwxrwxrwx 1 golang golang 0 12 12 23:15 symlink_dir/symlink_file

上記のパーミッションの状態で、下記のGoのプログラムを実行します。

package main
import (
     "os"
     "fmt"
 )
func main() {
     _ = os.Chown("./file", 0, 0)
     _ = os.Chown("./dir", 0, 0)
     _ = os.Chown("./symlink", 0, 0)
     err := os.Chown("./not_exist", 0, 0)
         fmt.Print(err)
 }

main.goというファイル名で作成したので、下記のように実行します。

go run main.go

実行後は下記のように所有者(uid)、所有グループ(gid)が変更されています。

drwxrwxrwx  2 root    root     64 12 12 23:16 dir
-rwxrwxrwx  1 root    root      0 11 24 21:00 file
lrwxr-xr-x  1 golang  golang   24 12 12 23:23 symlink -> symlink_dir/symlink_file
drwxr-xr-x  3 golang  golang   96 12 12 23:16 symlink_dir
-rwxrwxrwx  1 root    root      0 12 12 23:15 symlink_dir/symlink_file

symlinkはsymlinkのターゲットのsymlink_fileのパーミッションが変更されます。
ファイルが存在しない場合は、下記のようなエラーが表示されます。

chown ./not_exist: no such file or directory
GoLang
ALBNote