[Golang]写文件的权限定义perm

 ioutil包中写文件的方法:

 

func WriteFile(filename string, data []byte, perm os.FileMode) error

 

关于权限的定义,可以参考golang源代码:\Go\src\os\types.go

 

perm是FileMode类型的:

 

type FileMode uint32

 

// The nine least-significant bits are the standard Unix rwxrwxrwx permissions.

const (

    ...

    ModePerm FileMode = 0777   // Unix permission bits

)

 

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)

      ...

)

 

一般都文件属性标识如下: 

-rwxrwxrwx

第1位:文件属性,一般常用的是"-",表示是普通文件;"d"表示是一个目录。

第2~4位:文件所有者的权限rwx (可读/可写/可执行)。

第5~7位:文件所属用户组的权限rwx (可读/可写/可执行)。

第8~10位:其他人的权限rwx (可读/可写/可执行)。

 

在golang中,可以使用os.FileMode(perm).String()来查看权限标识:

os.FileMode(0777).String()    //返回 -rwxrwxrwx

os.FileMode(0666).String()   //返回 -rw-rw-rw-

os.FileMode(0644).String()   //返回 -rw-r--r--

 

0777表示:创建了一个普通文件,所有人拥有所有的读、写、执行权限

0666表示:创建了一个普通文件,所有人拥有对该文件的读、写权限,但是都不可执行

0644表示:创建了一个普通文件,文件所有者对该文件有读写权限,用户组和其他人只有读权限,都没有执行权限

 

注意,golang中创建文件指定权限时,只能以"0XXX"的形式,不能省掉前面的"0",否则指定的权限不是预期的。如:

os.FileMode(777).String()   //返回 -r----x--x

os.FileMode(666).String()   //返回 --w--wx-w-

os.FileMode(644).String()   //返回 --w----r--

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值