Linux文件权限
最近开发中与Linux系统打交道较多,对于文件权限理解缺失,整理后这里总结下
文件权限说明
当终端执行ll
命令等可以看到每个文件权限说明
比如drwx------ 7 lighthouse lighthouse 4096 Jul 12 12:00 lighthouse
开头的字母即权限说明,具体如下,大白话来理解即针对一个文件,该属性值明确了我,我们,他们的权限。
权限判断
有了该文件的明确权限属性值,放在业务逻辑里,假如我们如何想判断一个文件针对用户是否有权限该如何做呢?
获取用户所属UID,GID,比如这里我执行ID命令
id
,拿到当前登陆用户lighthouse的用户信息1
uid=1000(lighthouse) gid=1000(lighthouse) groups=1000(lighthouse)
获取文件所属uid,gid及文件权限信息,比如lighthouse文件夹
1
2
3
4
5
6
7显示uid,gid
ll -n
drwx------ 7 1000 1000 4096 Jul 16 15:21 lighthouse
显示owner,group名称
ll
drwx------ 7 lighthouse lighthouse 4096 Jul 12 12:00 lighthouse权限判断
- 如果用户uid===0,即为超级用户,直接拥有完整权限
- 如果用户uid===文件uid即属于owner,则根据owner具体的rwx确定是否有对应权限
- 如果用户不是owner而是属于同group,则根据group具体的rwx确定是否有对应权限
- 如果用户不属于同group,则根据other具体的rwx确定是否有对应权限
说明
- root用户是特殊的存在,且ID固定不变
- uid===0的超级用户可能不唯一
举个🌰
比如root用户即不是lighthouse文件夹的owner也不是同组,且文件夹本身对于others也没有任何权限开放,但实际上root完全可以进行读写执行,因此也就印证了上述权限判断logic。
写在最后
玩好Linux,加油。