linux系统下文件的默认权限以及隐藏属性的作用

文件默认权限

当我们创建一个文件时,这个文件默认就会被设置默认权限。

# touch 1.txt# ls -l 1.txt -rw-r--r-- 1 root root 0 Sep 13 14:48 1.txt# mkdir abc# ll -d abcdrwxr-xr-x 2 root root 4096 Sep 13 14:51 abc

可以看到,新创建的文件权限为644,目录权限为755。那么这个644是怎么来的呢?原来系统会给新创建的文件默认权限,这个默认权限可以通过umask来查看。

# umask0022# umask -Su=rwx,g=rx,o=rx

通过umask -S查看的权限即为新创建目录的默认权限,如果新创建的文件类型是文件的话,则需要减去x权限,所以新文件的默认权限是644(rw-r-xr-x)

我们还可以通过umask来修改文件的默认权限

umask 770

文件隐藏属性

不知道大家用过宝塔没,当我们通过宝塔新建一个站点的时候,宝塔默认会在网站的根目录下创建一个.user.ini文件。这个文件很奇怪,即使你是root用户,想要删除它也办不到。会出现下面的提示信息:

# rm -f .user.ini rm: cannot remove ‘.user.ini’: Operation not permitted

这里我们要讲下另一个概念,文件的隐藏属性,为什么叫隐藏属性呢?因为你通过ls -l是看不出这个文件有什么不一样的。

# ll .user.ini -rw-r--r-- 1 root root 51 Sep  5 18:48 .user.ini

想要看出蹊跷,就需要使用lsattr来查看

# lsattr .user.ini ----i--------e-- .user.ini

这里,我们需要记住几个字符的含义:

i表示系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

a表示系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

所以,如果我们想要删除这个文件就需要修改它的隐藏属性。通过chattr可以做到。

# chattr -i .user.ini # rm -f .user.ini  <===删除成功了

以上就是linux系统下文件的默认权限以及隐藏属性的作用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/164154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年10月31日 22:10:13
下一篇 2025年10月31日 22:14:58

相关推荐

  • Go语言中配置网络接口:使用netlink库实践

    go语言标准库提供了网络接口信息查询功能,但若要进行配置修改,如ip地址分配,则需借助第三方`netlink`库。本文将详细介绍如何利用`netlink`在go中实现网络接口的编程化配置,包括获取接口、构造ip配置及添加ip地址,并提供实用代码示例和注意事项。 引言:Go语言与网络接口管理 在Go语…

    2025年12月16日
    000
  • Go语言版本升级:编译依赖冲突与解决方案

    本文探讨go语言版本升级后可能遇到的编译依赖冲突问题,特别是`object is [go1.x.x] expected [go1.y.y]`错误。教程详细介绍了如何通过确保`goroot`与`path`一致、使用`go install -a`强制重建所有包,以及利用`go clean -i`清理旧的…

    2025年12月16日
    000
  • Golang交叉编译环境搭建与调试方法

    Go语言支持跨平台交叉编译,通过设置GOOS和GOARCH环境变量可生成目标平台可执行文件。例如在macOS上编译Linux ARM64程序:GOOS=linux GOARCH=arm64 go build -o myapp main.go。常见组合包括Windows 64位(GOOS=window…

    2025年12月16日
    000
  • 如何在Golang中安装gRPC开发工具

    首先安装protoc编译器并配置环境变量,再通过go install安装protoc-gen-go和protoc-gen-go-grpc插件,确保$GOPATH/bin加入PATH,最后使用protoc命令生成gRPC代码。 要在Golang中安装gRPC开发工具,你需要先确保Go环境已正确配置,然…

    2025年12月16日
    000
  • 如何在Golang中安装并配置Protobuf

    安装protoc编译器并配置PATH,通过go install安装protoc-gen-go插件,编写.proto文件后使用protoc –go_out=.生成Go代码,注意GOPROXY和PATH设置,推荐使用Go Modules和新版google.golang.org/protobu…

    2025年12月16日
    000
  • Go语言实现程序暂停功能:两种方法详解

    本文详细介绍了在go语言中实现程序暂停功能的两种主要方法。首先,通过读取标准输入流等待用户按下回车键,这是一种简单易行的实现方式。其次,为了实现“按任意键继续”的效果,文章深入探讨了如何利用`golang.org/x/term`库将终端设置为“原始模式”(raw mode)来捕获单个字符输入。同时,…

    2025年12月16日
    000
  • GNU Make高级技巧:动态规则生成与多平台构建

    本文深入探讨gnu make中处理复杂构建场景的策略,特别是针对多平台交叉编译的需求。我们将分析简单扩展变量(`:=`)与自动变量(`$@`)在规则定义中的行为差异,揭示常见陷阱。进而,文章将详细介绍如何利用`define`定义多行函数、`foreach`进行迭代以及`eval`动态生成makefi…

    2025年12月16日
    000
  • Go语言中返回字节切片哈希值的函数测试实践

    本教程探讨go语言中测试返回md5哈希(`[]byte`类型)的函数时常见的陷阱。许多开发者在比较原始字节哈希与十六进制字符串表示时会遇到问题。我们将深入分析这种类型不匹配的原因,并提供使用`fmt.sprintf`将原始字节哈希转换为十六进制字符串进行正确比较的专业方法,确保测试的准确性和可靠性。…

    2025年12月16日
    000
  • Revel框架静态文件加载异常排查与解决

    本教程旨在解决revel框架中静态文件(如图片、%ignore_a_1%、js)加载异常的问题,例如显示旧版本或截断文件。核心原因常与`gopath`配置不当、开发环境与`gopath`不一致,或`gopath`内存在重复文件有关。文章将提供详细的诊断步骤,包括检查`gopath`、排查文件副本,并…

    2025年12月16日
    000
  • Go语言中MD5哈希结果的正确测试方法

    本文旨在解决go语言中测试md5哈希函数时常见的错误:直接比较原始字节切片与十六进制字符串。核心内容是讲解如何通过`fmt.sprintf`将哈希的原始字节切片格式化为十六进制字符串,从而与预期的十六进制字符串进行正确比较,确保测试的准确性与可靠性。 在Go语言中进行单元测试是保证代码质量的重要环节…

    2025年12月16日
    000
  • 解决Revel框架静态文件加载异常:GOPATH与文件路径排查指南

    本文旨在解决revel框架中静态文件加载异常,如文件版本过旧或内容不完整的问题。核心内容包括诊断gopath配置不当、文件路径冲突等常见原因,并提供使用`strace`等工具进行精确排查的方法,确保revel正确地加载和提供静态资源。 在Revel框架开发过程中,开发者有时会遇到静态文件(如CSS、…

    2025年12月16日
    000
  • 使用Go语言调用Windows API获取系统字体目录的专业教程

    本文详细介绍了如何在go语言中利用`syscall`包调用windows api函数`shgetknownfolderpath`来准确获取系统字体目录。教程涵盖了`guid`结构定义、api函数封装、`syscall.syscall6`的使用、内存管理(`cotaskmemfree`)以及`pwst…

    2025年12月16日
    000
  • Go 版本升级后依赖编译错误解决方案

    本文旨在解决 Go 语言版本升级(如从 1.1.1 到 1.1.2)后,由于依赖包编译缓存导致的项目编译错误。我们将深入探讨错误原因,并提供包括 `go clean -i` 和 `go install -a` 在内的有效清理和重建策略,确保您的 Go 项目在升级后能顺利编译运行。同时,文章也将强调 …

    2025年12月16日
    000
  • Go语言中函数返回[]byte哈希值的正确测试方法

    go语言中测试返回`[]byte`哈希值的函数时,常见的错误是将原始字节切片与十六进制字符串转换而来的字节切片进行比较。本文将深入探讨这一问题,并提供使用`fmt.sprintf`将原始哈希值格式化为十六进制字符串进行对比的正确方法,确保测试的准确性和可靠性,同时强调理解数据类型差异的重要性。 理解…

    2025年12月16日
    000
  • Golang如何处理文件读写权限冲突

    答案:Go通过系统调用实现文件锁应对读写冲突,使用unix.Flock加共享锁或独占锁协调多进程访问,确保写操作互斥、读操作并发,并需defer释放锁、避免长时持锁,推荐原子重命名减少锁依赖。 在Go语言中处理文件读写权限冲突,核心在于理解操作系统层面的文件锁机制和正确使用Go提供的系统调用。文件权…

    2025年12月16日
    000
  • 如何在Go程序中实现暂停功能

    本文详细介绍了在go语言程序中实现暂停功能的多种方法,包括通过标准输入等待用户按回车键继续、利用`golang.org/x/term`库实现“按任意键继续”的无回车暂停,以及讨论了通过调用外部系统命令的局限性与适用场景。旨在为开发者提供清晰、实用的go程序暂停解决方案。 在开发命令行(CLI)应用程…

    2025年12月16日
    000
  • 获取 Go 中系统文件夹路径的教程

    本文旨在介绍如何在 Go 语言中跨平台地获取系统文件夹路径,例如临时文件夹。尽管早期 Go 语言在这方面有所欠缺,但现在 `os` 包提供了相关函数,使得获取临时目录等系统路径变得简单易行。本文将详细介绍如何使用 `os.TempDir()` 函数以及其他可能的方法,帮助开发者更好地管理文件和目录。…

    2025年12月16日
    000
  • Golang如何在Linux中配置Go workspace

    Go语言从1.11起推荐使用Go Modules,GOPATH模式主要用于旧项目;配置GOPATH需设置环境变量并创建src、pkg、bin目录结构,现代开发建议使用go mod init初始化项目。 Go 语言从 1.11 版本开始引入了 Go Modules,因此传统的 GOPATH 工作区模式…

    2025年12月16日
    000
  • Go 服务部署策略:跨平台编译与自动化实践

    本文探讨了go语言服务的部署策略,重点介绍了其强大的跨平台编译能力,允许开发者在不同操作系统和架构上生成可执行文件,从而避免在生产环境进行编译。文章还强调了通过go语言或现有工具(如capistrano)进行自动化部署的重要性,并鼓励利用go社区资源获取最新实践和工具。 Go语言因其高性能和并发特性…

    2025年12月16日
    000
  • Go语言中获取跨平台系统临时目录路径

    本文详细介绍了如何在go语言中跨平台地获取操作系统定义的临时文件目录路径。通过利用标准库`os`包中的`tempdir()`函数,开发者可以轻松地在不同操作系统(如windows、linux和macos)上统一管理和定位临时文件存储位置,从而避免了平台差异带来的兼容性问题。 Go语言中的跨平台目录路…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信