linux隐藏文件本质是名字以点开头的约定,非权限控制;需用chmod/chown设权限才能真正限制访问,如chmod 600 .netrc、umask 0077控制默认权限。

Linux里“隐藏文件”本质只是名字以点开头
Linux没有真正意义上的“隐藏属性”,所谓隐藏,只是shell和大多数GUI工具默认不显示.开头的文件或目录。这纯属约定,不是权限控制。
实操建议:
- 用
touch .config或mkdir .cache创建隐藏项,名字带前导点即可 -
ls默认不列它们,加-a参数才能看见:ls -a - 图形界面(如Nautilus、Dolphin)通常按
Ctrl+H切换显示/隐藏 - 注意:
.和..是特殊条目,永远存在,不能删除,也不算你“创建”的隐藏项
想阻止别人读写?得靠chmod和chown,不是靠“隐藏”
仅靠名字加点,完全挡不住有权限的用户——ls -a一跑全露馅,cat .env照读不误。真要限制访问,必须设对权限。
常见组合建议:
- 敏感配置文件(如
.netrc):运行chmod 600 .netrc,只允许所有者读写 - 私有脚本目录(如
.local/bin):先chmod 700 .local,再确保父目录(如$HOME)本身是755或更严(否则别人可能绕过) - 避免
chmod 777或chmod o+rwx——开放“others”权限等于白藏 - 检查所有权:
ls -ld .ssh应显示drwx------且owner是你自己;若被改成root或其他用户,用chown $USER:$USER .ssh拉回来
chmod数字权限容易记混?盯住三段+八进制
权限位分三组:user(u)、group(g)、others(o),每组用三位二进制表示(r=4, w=2, x=1),加起来就是0–7的数字。
快速判断法:
-
600→rw- --- ---→ 所有者可读写,其余人啥都不能干 -
700→rwx --- ---→ 所有者可读写执行(适合私有bin目录) -
644→rw- r-- r--→ 所有者读写,组和其他人只读(普通文件常用) - 别硬背,用
ls -l看符号,再对照man chmod里的表格反推数字
umask影响新建文件默认权限,不设好会“自动暴露”
你执行touch .secret,结果它生成出来是-rw-r--r--(644),而不是想要的600——大概率是umask太松了。
查当前值:umask(输出如0002);设严格值:umask 0077(让新文件默认权限为600/700)。
注意点:
- 临时生效:直接运行
umask 0077,退出终端就失效 - 永久生效:把
umask 0077加到~/.bashrc或~/.profile,然后source一下 - 系统级
/etc/login.defs里的UMASK也会影响,但普通用户优先走自己的shell配置 - 某些程序(如git clone)可能忽略umask,得单独
chmod补救
真正麻烦的从来不是“怎么藏”,而是藏完之后忘了权限是否真的卡死了——尤其当文件被脚本自动生成、或从其他机器scp过来时,ls -l多看一眼比什么都管用。











