Linux 文件基本属性

在 Linux 中执行 ls -l,会看到一串像 -rw-r--r-- 的字符,它们描述文件的类型与访问权限,是多用户系统安全的核心。看懂并能修改这些属性,是文件管理的必修内容。

看懂 ls -l 的输出

ls -l 权限位解读 先看一个完整示例:

ls -l /etc/hostname
# 输出:-rw-r--r-- 1 root root 17 8月  5 10:20 /etc/hostname

从左到右依次为:类型与权限(10 个字符) | 链接数 | 属主 | 属组 | 大小 | 修改时间 | 文件名

文件类型与权限位

第一个字符表示类型:- 普通文件、d 目录、l 软链接、b/c 块/字符设备。后面九个字符每三位一组,依次代表**属主(u)、属组(g)、其他用户(o)**的权限:

权限位对文件对目录
r 读可查看内容可列出目录内容
w 写可修改内容可新增/删除其中文件
x 执行可作为程序运行可进入该目录(cd)

因此 -rw-r--r-- 表示:普通文件,属主可读写,属组可读,其他用户只可读。

用 chmod 修改权限

数字法:r=4、w=2、x=1,三组分别求和。755 即 rwxr-xr-x:

chmod 755 script.sh      # 属主全权限,属组与他人可读可执行
ls -l script.sh
# 输出:-rwxr-xr-x 1 root root 0 8月  5 10:30 script.sh

符号法:用 u/g/o/a 与 + - = 组合,更直观:

chmod u+x script.sh      # 给属主加执行权限
chmod g-w script.sh      # 去掉属组的写权限
chmod a+r script.sh      # 所有用户都加读权限
chmod u=rwx,go=rx file   # 属主 rwx,属组与他人 rx

修改属主与属组

文件归属用 chown 修改;只改属组也可用 chgrp:

chown zhangsan:dev app.log   # 属主改为 zhangsan,属组改为 dev
chown zhangsan app.log       # 只修改属主
chgrp dev app.log            # 只修改属组

目录权限的特殊性

目录权限决定能否列出、进入或删除其中的文件:

mkdir /tmp/demo && touch /tmp/demo/a.txt
chmod 755 /tmp/demo       # 其他人可读可进入
ls /tmp/demo
# 输出:a.txt
chmod 000 /tmp/demo       # 收回所有人的全部权限
ls /tmp/demo
# 输出:ls: cannot open directory '/tmp/demo': Permission denied

默认权限与 umask

新建文件的默认权限由 umask 决定,常见的 0022 使文件默认为 644、目录为 755:

umask
# 输出:0022
touch new.txt && ls -l new.txt
# 输出:-rw-r--r-- 1 root root 0 ... new.txt

小结:ls -l 首段十个字符浓缩了文件类型与"属主/属组/其他"三级权限。用 chmod(数字法或符号法)改权限、chown/chgrp 改归属,再结合 umask 理解默认值,Linux 权限管理就基本掌握了。

笔记加载中…