Linux 文件与权限
Linux 文件与权限
这篇笔记把 Linux 里最常见的文件类型、权限、链接和常用命令整理在一起。
文件类型(ls -l 第一列)
d:目录(directory),存放“名字 -> inode”的映射-:普通文件(regular file)s:套接字文件(socket)p:管道文件(pipe)或命名管道文件(named pipe)l:符号链接文件(symbolic link)b:面向块的设备文件(block-oriented device file)c:面向字符的设备文件(character-oriented device file)
文件权限
三类人
u:拥有者g:拥有者所在群组o:其他人
三种权限位
r:读,目录里可以查看有什么文件w:写,目录里可以创建、删除、重命名文件x:执行,文件可以执行;目录可以进入并访问目录内容
特殊权限位
除了 rwx,还有三个常见特殊位:
setuid(suid):对可执行文件,运行时使用文件所有者的有效 UIDsetgid(sgid):对可执行文件,运行时使用文件所属组的有效 GID;对目录,新建文件继承该目录的组sticky bit:目录里的文件通常只能由文件所有者或root删除,常见于公共目录
常见八进制表示:
4xxx:setuid2xxx:setgid1xxx:sticky bit
硬链接和软链接
硬链接
硬链接就是给同一个 inode 再起一个名字。
特点:
- 不是复制文件
- 两个名字指向同一份数据
- 删除一个名字,数据还在
- 只有所有硬链接都删掉,数据才真正消失
- 一般不能跨文件系统
- 通常不能给目录建硬链接
例子:
ln a.txt b.txt
这里 a.txt 和 b.txt 是硬链接。
软链接
软链接也叫符号链接,就是一个“指向目标路径的指针”。
特点:
- 像快捷方式
- 自己有独立 inode
- 里面存的是目标路径
- 可以跨文件系统
- 可以链接目录
- 如果目标删了,软链接就断了,变成“坏链接”
例子:
ln -s a.txt link.txt
link.txt 就是软链接。
常用命令
ls -l:看权限stat file:看 inode、权限、时间file file:看文件类型描述touch file:创建或更新时间戳,不存在则创建文件cp:复制mv:移动/重命名rm:删除mkdir:建目录ln:建链接find:查找文件
chmod
chmod [选项] 模式 文件
数字模式
- 三个八进制数字分别表示拥有者、拥有者所在群组、其他人
4、2、1分别表示读、写、执行权限- 四个八进制数字表示特殊权限:
4xxx:setuid2xxx:setgid1xxx:sticky bit
例如:
755=rwxr-xr-x644=rw-r--r--
符号模式
u:拥有者g:拥有者群组o:其他人a:所有人r:读w:写x:执行X:条件执行,目录和已有执行位的文件才加
选项:
-R:递归
例子:
chmod 755 file
chmod 644 file
chmod u+x file
chmod -R 755 dir/
chown
chown [选项] 用户[:组] 文件
说明:
- 冒号
:前面不写用户时,表示只改组 - 例如
chown :staff file只改组
umask
umask 表示创建目录和文件时权限会被减多少。
- 文件默认基准是
666 - 目录默认基准是
777 - 如果
umask = 002- 文件权限就是
664 - 目录权限就是
775
- 文件权限就是
小结
inode才是 Linux 文件系统里的关键对象- 硬链接是同一个 inode 的多个名字
- 软链接是指向路径的指针
chmod管权限,chown管属主属组,umask影响新建文件默认权限