ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux 权限别死记!一文搞懂 rwx、数字权限、目录权限坑点

Linux 权限别死记!一文搞懂 rwx、数字权限、目录权限坑点 这几天是国庆我久违的睡了一个大觉目录一、 root与普通用户的区分二、Linux的权限管理2.1 三种基本权限2.2 权限的两种表示法符号和数字三、权限的修改与验证四、三个关于权限的问题4.1 进入一个目录需要哪些权限4.2 读文件需要什么权限4.3 写入或删除文件需要哪些权限一、 root与普通用户的区分书接上回一般来说普通用户是无法直接使用sudo命令的因为如果所有普通用户都能提权那么显然安全性是不够的但是为什么在我的演示中却可以直接sudo呢这是因为当前用户加入了 sudo 用户组在 sudoers 授权名单里验证当前用户是否在sudo用户组的方法是直接输入groups命令ubuntuVM-0-4-ubuntu:~$ groups ubuntu adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev #如果在用户组会显示这条 ubuntuVM-0-4-ubuntu:~$如果说不在安全组则会显示rootVM-0-4-ubuntu:/home/ubuntu# su testuser $ groups testuser $ sudo ls /root [sudo] password for testuser: testuser is not in the sudoers file. This incident will be reported. $二、Linux的权限管理2.1 三种基本权限Linux 文件 / 目录权限分为三类角色所有者 (useru)文件属于谁所属组 (groupg)同组用户其他用户 (othero)剩下所有人每组 3 种权限r w x字符名称对文件含义对目录含义r读可以查看文件内容可以列出目录里面的文件lsw写修改、覆盖文件内容在目录里新建 / 删除 / 重命名文件x执行可以运行这个程序脚本可以进入这个目录cd⚠️ 超级易错点 目录没有 x 权限就算有 r也 ls 看不到详情cd 进不去目录有 w 权限可以删里面的文件和文件本身权限无关目录有 w 权限可以删里面的文件和文件本身权限无关通过ls -l可以查看文件的身份ubuntuVM-0-4-ubuntu:~$ ls -l temp.txt -rw-rw-r-- 1 ubuntu ubuntu 20901 Sep 28 13:40 temp.txt #所有者ubuntu 所属组ubuntu 文件大小20901 #-rw-rw-r--权限 除第一位后九位每三位为一组对应所有者所属组其他用户 rw-表示只有读写没执行r--表示只有读 #-表示普通文件但是具有可执行权限不代表可执行可执行还需要包括文件本身是一个二进制可执行文件但是为什么要有所属组呢原因所属组group就是用来批量管理权限的不用给每一个用户单独设置权限。假设场景实验室有 4 个同学都要操作同一套代码文件用户 A、B、C、D都需要读写这个项目文件夹 如果没有组你要对文件给 4 个人一个个单独授权人一多管理爆炸。 有用户组创建一个组code_group把 A、B、C、D 全部加入这个组文件设置组权限 rw-只要这一条组里所有人都拥有读写权限。 后续加人只需要把用户加到组里删人直接移出组不用改文件权限。2.2 权限的两种表示法符号和数字符号表示法适合单独增删某一项权限不用计算。格式对象 操作符 权限对象ugoa(all全部 ugo)操作符增加权限-移除权限直接设置权限覆盖原有chmod ux test.txt # u(所有者) 加上 x执行权限 chmod g-w test.txt # g(所属组) - 去掉 w写权限 chmod or test.txt # o(其他人) 设置为只读覆盖旧权限 chmod ar test.txt # a所有人增加读权限 chmod urw,gr,o--- test.txt # 一次性设置u g o权限chomd 作用修改文件 / 目录的访问权限数字表示法这里用到的是八进制因为1247是八进制的最小数可以刚好完全表示所有组合规则r4w2x1- 0每组权限相加得到一个数字每一组u/g/o单独求和组合成 3 位数字u g o常用组合rw- 420 6r-x 401 5rwx 421 7r-- 400 4--- 0ubuntuVM-0-4-ubuntu:~$ chmod 600 temp.txt ubuntuVM-0-4-ubuntu:~$ ls -l temp.txt -rw------- 1 ubuntu ubuntu 20901 Sep 28 13:40 temp.txt #权限被改成只允许拥有者读写了身份匹配当用户访问一个文件 / 目录时系统按顺序匹配身份匹配到就停止判断不会继续往下看优先级顺序1. 是否是文件所有者 (u) → 2. 是否属于文件所属组 (g) → 3. 其他用户 (o)三、权限的修改与验证上文我们学习了权限的身份与表示法接下来学习三个指令chmod , chown , chgrp 进行权限的修改示例chomd 修改单个文件权限ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l total 12 -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 b.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 c.txt ubuntuVM-0-4-ubuntu:~/text_dir$ chmod ux a.txt #给user加上权限 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l total 12 -rwxrw-r-- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 b.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 c.txt ubuntuVM-0-4-ubuntu:~/text_dir$ chmod u-r a.txt #给user去掉r权限 ubuntuVM-0-4-ubuntu:~/text_dir$ chmod o-r a.txt #给other加上read权限 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l total 12 --wxrw---- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txt #现在user和other都没r权限了 -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 b.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 c.txt ubuntuVM-0-4-ubuntu:~/text_dir$ chmod a-r a.txt #a代表all给所有去掉r权限 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l total 12 --wx-w---- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 b.txt -rw-rw-r-- 1 ubuntu ubuntu 5 Sep 28 23:23 c.txt ubuntuVM-0-4-ubuntu:~/text_dir$ chmod ar a.txt #给所有加上r权限 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txtchown与chgrpchown 修改文件/目录的所有者示例这里的用户sha是我临时创建的命令是useradd shaubuntuVM-0-4-ubuntu:~/text_dir$ chown sha a.txt chown: changing ownership of a.txt: Operation not permitted #普通用户不能直接改需sudo或root ubuntuVM-0-4-ubuntu:~/text_dir$ sudo chown sha a.txt #更改用户名 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 sha ubuntu 5 Sep 28 23:22 a.txt ubuntuVM-0-4-ubuntu:~/text_dir$ sudo chown ubuntu a.txt ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 ubuntu ubuntu 5 Sep 28 23:22 a.txt ubuntuVM-0-4-ubuntu:~/text_dir$ sudo chown sha:sha a.txt #更改用户名及所属组用:连接 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 sha sha 5 Sep 28 23:22 a.txt ubuntuVM-0-4-ubuntu:~/text_dir$ sudo chown :ubuntu a.txt #只更改所属组 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 sha ubuntu 5 Sep 28 23:22 a.txt ubuntuVM-0-4-ubuntu:~/text_dir$chgrp 修改文件/目录的所属组需要root权限或文件所有者ubuntuVM-0-4-ubuntu:~/text_dir$ sudo chgrp sha a.txt #只能修改所属组 ubuntuVM-0-4-ubuntu:~/text_dir$ ls -l a.txt -rwxrw-r-- 1 sha sha 5 Sep 28 23:22 a.txt四、三个关于权限的问题x 权限最重要✅ 有 x可以cd进入目录可以访问目录里面文件的元信息权限、属主可以读取里面文件内容前提是文件本身有权限 ❌ 没有 x完全 cd 不进去就算给 r 也不行r 权限✅ 有 r可以列出目录内文件名ls ❌ 没有 rls看不到里面文件但是如果知道文件名依然可以访问文件只要有 xw 权限✅ 有 w可以在目录里新建、删除、重命名文件不是改文件内容是操作目录里的条目4.1 进入一个目录需要哪些权限示例1去除x权限ubuntuVM-0-4-ubuntu:~$ ls -ld text_dir drwxrwxr-x 2 ubuntu ubuntu 4096 Sep 28 23:23 text_dir ubuntuVM-0-4-ubuntu:~$ chmod u-x text_dir #关掉x权限后进不去了 ubuntuVM-0-4-ubuntu:~$ ls -ld text_dir drw-rwxr-x 2 ubuntu ubuntu 4096 Sep 28 23:23 text_dir ubuntuVM-0-4-ubuntu:~$ cd text_dir -bash: cd: text_dir: Permission denied ubuntuVM-0-4-ubuntu:~$ ls text_dir ls: cannot access text_dir/b.txt: Permission denied ls: cannot access text_dir/c.txt: Permission denied ls: cannot access text_dir/a.txt: Permission denied a.txt b.txt c.txt #没有x后可以看到文件名但是看不到属性 ubuntuVM-0-4-ubuntu:~$ touch d.txt /text_dir touch: cannot touch /text_dir: Permission denied #文件也无法新建4.2 读文件需要什么权限示例2去除r权限ubuntuVM-0-4-ubuntu:~$ chmod ux text_dir ubuntuVM-0-4-ubuntu:~$ ls -ld text_dir drwxrwxr-x 2 ubuntu ubuntu 4096 Sep 28 23:23 text_dir ubuntuVM-0-4-ubuntu:~$ chmod u-r text_dir ubuntuVM-0-4-ubuntu:~$ cd text_dir ubuntuVM-0-4-ubuntu:~/text_dir$ #没有r权限可以进 ubuntuVM-0-4-ubuntu:~$ ls text_dir ls: cannot open directory text_dir: Permission denied #但是不能列举目录中的文件 ubuntuVM-0-4-ubuntu:~$4.3 写入或删除文件需要哪些权限示例3去除w权限buntuVM-0-4-ubuntu:~$ touch text_dir/e.txt ubuntuVM-0-4-ubuntu:~$ ls -ld text_dir drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 3 13:23 text_dir ubuntuVM-0-4-ubuntu:~$ chmod u-w text_dir ubuntuVM-0-4-ubuntu:~$ touch text_dir/f.txt touch: cannot touch text_dir/f.txt: Permission denied #没有w权限后不能再写入或删除文件 ubuntuVM-0-4-ubuntu:~$上述为本期全部内容感谢你能够看到这里~
返回列表