首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
函数参数与返回值
传递变长参数
defer 和追踪
内置函数
递归函数
将函数作为参数
闭包
应用闭包:将函数作为返回值
使用闭包调试
计算函数执行时间
通过内存缓存来提升性能
声明和初始化
切片
For-range 结构
切片重组(reslice)
切片的复制与追加
字符串、数组和切片的应用
声明、初始化和 make
测试键值对是否存在及删除元素
for-range 的配套用法
map 类型的切片
map 的排序
将 map 的键值对调
标准库概述
regexp 包
锁和 sync 包
精密计算和 big 包
自定义包和可见性
为自定义包使用 godoc
使用 go install 安装自定义包
自定义包的目录结构、go install 和 go test
通过 Git 打包和安装
Go 的外部包和项目
在 Go 程序中使用外部库
结构体定义
使用工厂方法创建结构体实例
使用自定义包中的结构体
带标签的结构体
匿名字段和内嵌结构体
方法
类型的 String() 方法和格式化描述符
垃圾回收和 SetFinalizer
当前位置:
首页>>
技术小册>>
go编程权威指南(二)
小册名称:go编程权威指南(二)
前面小节介绍了用户权限相关的知识,从这一小节开始我们将要开始学习文件权限相关的知识,如何给文件修改权限,之前小节介绍过 `ls` 命令展示出来的一些文件相关的信息,这里面就有和文件权限相关的信息。 在 Linux 系统中,有时候某些文件内容不能修改,只能拥有只读权限,某些文件需要读写权限,即可以读,又可以写,某些文件需要可执行权限,这个时候若文件的相关权限不正确,就可能导致业务出错,因此需要对文件权限进行修改。 1\. Linux 文件权限值 --------------- 在上述权限中的文件读、写、执行权限信息中,对应着二进制数值,对应关系如下表: | 权限展示值 | 二进制值 | 八进制值 | 描述 | | :-- | :-- | :-- | :-- | | `---` | 000 | 0 | 表示没有读、写、执行权限 | | `--x` | 001 | 1 | 表示有执行权限,没有读、写权限 | | `-w-` | 010 | 2 | 表示有写,没有读、执行权限 | | `-wx` | 011 | 3 | 表示有写、执行权限,没有读权限 | | `r--` | 100 | 4 | 表示有读权限,没有写、执行权限 | | `r-x` | 101 | 5 | 表示有读、执行权限,没有写权限 | | `rw-` | 110 | 6 | 表示有读、写权限,没有执行权限 | | `rwx` | 111 | 7 | 表示有读、写、执行权限 | 2\. umask 命令 ------------ 在 Linux 系统中创建一个新的文件或者目录的时候,它们都会有默认的访问权限,umask 命令则可以修改这些文件默认的访问权限。 - 用户创建一个文件的默认访问权限为 `rw-rw-rw-(八进制值666)` - 创建目录的默认权限 `rwxrwxrwx(八进制值777)` - 从权限默认值减去umask码值 ,就是文件或目录的最终权限值 。 ### 2.1 umask 命令查看默认权限去除值 使用 `umask` 命令可以查看一个默认的权限信息,命令如下: umask 如上所示,当前文件或目录权限相关的是默认去除值是 `0022`,其中第一位 `0` 表示的是一项特殊安全权限,暂且不讨论。 后面三位 `022` 则和普通权限 `rwx` 有关,其中后三位中的第一位 `0` 表示创建者/所有者相关的权限,表示从用户权限去掉 `0` 对应的权限 `---(不变)`,后三位中的第二位 `2` 表示用户组相关的权限,表示从用户组权限去掉 `2` 对应的权限`-w-(写权限)`,后三位中的第三位 `2` 表示和其他用户的权限有关,表示其他用户的权限去掉 `2` 对应的权限 `-w-(写权限)`。 所以创建 `文件` 的默认八进制值 `666(rw-rw-rw-)` 去掉 `022(----w--w-)` 对应的相关权限之后为 `644(rw-r--r--)`,创建 `目录` 的默认八进制值 `777(rwxrwxrwx)` 去掉 `022(----w--w-)` 对应的相关权限之后为 `755(rwxr-xr-x)`,下面通过示例来验证一下: umask touch testfile ls -l testfile mkdir testdir ls -l > **Tips**:`umask` 命令展示出来表示从原来的默认值去除的权限值,新建文件默认的权限值是 `666`,新建目录的权限值是 `777`,`umask` 命令展示的值是在这个基础之上去除的。 ### 2.2 umask 命令修改默认去除权限 若想要新建的文件有指定的初始默认权限,可以使用 `umask` 命令,命令如下: umask 226 umask 新建文件默认的权限值是 `666`,新建目录的权限值是 `777`,`226` 表示在这个基础上去除 `-w--w-rw-` 之后的权限。 3\. chmod 命令 ------------ ### 3.1 修改文件权限 新建一个文件 `newfile`,然后使用 `chmod` 命令修改文件权限,新建和修改文件权限命令如下: touch newfile ls -l newfile chmod 777 newfile ls -l newfile 3.2 修改目录权限 ---------- 使用 `chmod` 命令修改目录的权限,修改目录权限命令如下: ls -l chmod -R 755 study ls -l 3.3 chmod 命令限定权限 ---------------- `chmod` 命令可以修改已经存在的文件或目录的权限,可以分别修改它们用户的权限、用户组的权限、其他用户的权限,也可以修改上述全部的权限,下图表示 `chmod` 权限相关的操作:  下面以新增文件其他用户写权限为例,命令如下: ls -l testfile chmod o+w testfile ls -l testfile ### 3.4 chmod 权限作用对象 * `u` 表示用户; * `g` 表示用户组; * `o` 表示其他用户; * `a` 表示全部。 ### 3.5 权限操作相关符号 * `+` 表示在现有权限基础上增加权限; * `-` 表示在现有权限基础上移除权限; * `=` 表示在现有权限基础上设置成等号后的权限。 ### 3.6 权限设置值 * `r` 表示读权限; * `w` 表示写权限; * `x` 表示执行权限。 4\. 小结 ------ 本小节介绍了文件或目录权限相关的命令,新建的文件权限默认是 `rw-rw-rw-`,新建目录权限默认是 `rwxrwxrwx`,使用 `umask` 命令可以对新建的文件或目录的权限去除某些特定的权限。还介绍了 `chmod` 命令直接配合八进制权限值修改文件或目录的权限,也可以使用限定符在原来权限基础上增加、移除、设定某些权限。
上一篇:
Linux文件权限介绍
下一篇:
修改文件所属关系
该分类下的相关小册推荐:
Go 组件设计与实现
Go开发基础入门
深入浅出Go语言核心编程(五)
深入浅出Go语言核心编程(二)
GO面试指南
go编程权威指南(一)
Go-Web编程实战
go编程权威指南(三)
企业级Go应用开发从零开始
Go开发权威指南(下)
从零写一个基于go语言的Web框架
Go开发权威指南(上)