【Linux】权限相关指令
2026/5/11 6:54:01 网站建设 项目流程

1.将命令翻译后交给核心执行

2.将核心执行的结果翻译并返回给我们

形象理解shell

假如小y过年回家打算相亲了,打算小y并不擅长与异性交流,这时候就拜托了媒人王姨作为中间人,帮忙小y和异性之前传话。这时候王姨就是“外壳程序”shell。

为什么要有shell?

1.方便用户使用

2.作为外壳程序,保护核心

补充

权限概念

Linux中权限分为两种:root账号、普通账号

root账号:为超级权限账号,不受任何权限限制 普通账号:受到权限限制,在Linux中只能做有限的事

su命令:su 用户名

功能:切换账号

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:/$ whoami hyc #切换root账号执行su即可 hyc@hcss-ecs-4ce7:/$ su #输入root账号密码 Password: root@hcss-ecs-4ce7:/# whoami root #切换普通账号:su 用户名(不需要密码) root@hcss-ecs-4ce7:/# su hyc hyc@hcss-ecs-4ce7:/$ whoami hyc

补充:普通用户 -> root账号,除了su可以实现,su -也可以实现。但是区别是?

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:/$ pwd / hyc@hcss-ecs-4ce7:/$ su Password: root@hcss-ecs-4ce7:/# whoami root root@hcss-ecs-4ce7:/# pwd / hyc@hcss-ecs-4ce7:/$ pwd / hyc@hcss-ecs-4ce7:/$ su - Password: root@hcss-ecs-4ce7:~# whoami root root@hcss-ecs-4ce7:~# pwd /root #我们可以看到su、su-,都成功的切换到了root。 #不同的是su切换账号并不会改变之前所处路径,既su不会改变位置 #而su-会改变位置,之前是/下,切换之后在/root下
sudo:短暂的指令提权

如果我们需要使用root权限来执行一些指令,但是却没有root密码怎么办?

在指令最前面加上sudo,就可以使用root权限执行命令

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:~$ sudo ls [sudo] password for hyc:

这样确实方便,但是有一个问题:那岂不是人人都可以使用root权限了?这不乱套了?

Linux设计者当然考虑到了这个问题,普通用户如果想要使用sudo进行指令提权。必须要root账号给予普通账号提权权限才行。所以并不是什么普通账号都可以进行提权

没有提权权限的账户,就会显示以下报错

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:~$ sudo ls [sudo] password for hyc: hyc is not in the sudoers file. This incident will be reported.

总结:

普通 -> root:su(不会改变位置) su-(会改变位置:默认切换至家目录) root -> 普通:su 用户名 sodu : 指令提权

权限管理

权限的本质是:能做或者不能做什么事情(控制用户行为,防止错误操作)

理解:

1.权限限制的是人

2.权限要求目标必须具备对应属性:权限:角色+目标属性(权限)

属性

对于Linux中的属性来说主要为三个:读、写、执行

读:r

写:w

执行:x

之前我们说过第一个字母代表文件属性,而后面的一串字符则代表该文件的权限。

r:对文件来说,代表可以读取文件内容;对目录来说,代表可以浏览目录内容 w:对文件来说,代表可以修改文件内容;对目录来说,代表可以删除目录中的内容 x:对文件来说,代表可以执行该文件;对目录来说,代表可以进入该目录

但是为什么这里有多个wrx呢?这就涉及到角色的问题。

角色

上面我们说了权限=角色+对应属性。

属性代表相应的角色拥有什么权限,那么我们是如何分辨角色呢?如何知道角色对应所拥有的权限呢?

首先我们可以通过命令行得知我们当前的角色、或者使用whoami指令

然后根据当前用户,来判断其说拥有的权限

解释:

我们当前用户是root,对于第一个目录来说,我们就是其拥有者。所对应拥有的权限则是rwx

而什么是所属组?什么是other呢?

所属组就是当前角色不是拥有者,但是与拥有者在同一个队伍中。这时候就会匹配所属组权限,这时候这个角色就是所属者。

所属组的存在是为了更精细化的权限管理。举例:a组和b组都在同一台Linux机器上开发项目,a组项目代码需要公开出来让a组全体成员都能看见,但是不希望b组看见。这时候就只需要将a组全体成员纳入所属组中,然后将other权限关闭,就可以实现。(现在很少用到了,了解即可)

other就是既不属于拥有者,也不属于所属者的角色。这时候就会匹配other权限。

如何描述文件权限信息?

代码语言:javascript

AI代码解释

-rw-r--r-- 1 root root 22902 May 18 11:51 new.txt

对于new.txt这个文件来说权限的描述应该为:拥有者权限为rw,所属组权限为r,other权限为r。

文件权限表示方法

1.字符表示法

3个字母为一组,分别为:r、w、x,如没有对应权限则用 " - "表示。其顺序是固定的不可交换

2.8进制表示法

chmod指令

语法:chmod 参数 权限 文件名

功能:改变文件权限(只有root或者文件拥有者才有资格修改权限)

选项:

-R:递归的将目录下的文件权限全部修改

参数:

u:拥有者 g:所属组 o:other a:有所用户

实际操作展示 :

代码语言:javascript

AI代码解释

root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #关闭u的w权限 root@hcss-ecs-4ce7:~# chmod u-w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -r--r--r-- 1 root root 22902 May 18 11:51 new.txt #开放u的w权限 root@hcss-ecs-4ce7:~# chmod u+w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #关闭u的多条权限 root@hcss-ecs-4ce7:~# chmod u-rw new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new ----r--r-- 1 root root 22902 May 18 11:51 new.txt #开放u的多条权限 root@hcss-ecs-4ce7:~# chmod u+rw new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #开放g的w权限 root@hcss-ecs-4ce7:~# chmod g+w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-rw-r-- 1 root root 22902 May 18 11:51 new.txt #关闭g的w权限 root@hcss-ecs-4ce7:~# chmod g-w new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #以此类推,其他的权限操作类似

另外也可以通过八进制来实现多个用户权限的修改:

代码语言:javascript

AI代码解释

root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-r--r-- 1 root root 22902 May 18 11:51 new.txt #通过3个8进制数字实现,对多个用户权限修改 root@hcss-ecs-4ce7:~# chmod 000 new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new ---------- 1 root root 22902 May 18 11:51 new.txt root@hcss-ecs-4ce7:~# chmod 663 new.txt root@hcss-ecs-4ce7:~# ls -l total 28 drwxr-xr-x 5 root root 4096 May 20 13:58 new -rw-rw--wx 1 root root 22902 May 18 11:51 new.txt
修改权限注意事项

1.任何人都可以修改文件权限吗?

只有root和文件拥有者才能修改权限!

2.如果在进行相应操作时没有权限会怎么样?

系统会拒绝我们的指令请求

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:~$ ls -l total 0 -rw-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ chmod u-r new.txt hyc@hcss-ecs-4ce7:~$ ls -l total 0 --w-rw-r-- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ cat new.txt cat: new.txt: Permission denied

3.确定权限信息时,系统会先确认谁?

先确认拥有者权限,再确认所属组,最后是other。权限只会确定一次,不会多次确定,第一次匹配上的权限既为我们当前角色所拥有的权限。

4.root账号权限?

拥有最高权限,不受一切权限的限制。所有设定的限制只针对普通账号有用。

5.可执行权限?

我们之前所讲的例子中都没有可执行样例,其实可执行程序是.exe文件。普通文件一般没有x权限,当然即使拥有x权限也无法执行,因为其本身就不是可执行文件。

chown与chgrp指令

语法:chown 用户名 文件名

功能:改变文件或目录的拥有者

选项:-R 递归的修改目录中所有文件的拥有者

语法:chgrp 所属组名 文件名

功能:修改文件或目录的所属组

选项:-R递归修改目录中所有文件的所属组

使用chown修改拥有者、chgrp修改所属组出现问题?

代码语言:javascript

AI代码解释

hyc@hcss-ecs-4ce7:~$ ls -l total 0 -rw-rw-rw- 1 hyc hyc 0 May 24 23:07 new.txt hyc@hcss-ecs-4ce7:~$ chown root new.txt chown: changing ownership of 'new.txt': Operation not permitted hyc@hcss-ecs-4ce7:~$ chgrp root new.txt chgrp: changing group of 'new.txt': Operation not permitted

原因:系统并不支持随意的将文件的拥有者或所属组修改,这一操作只有root权限才能被允许。所以在要在这句指令前加上sodu,或者切换为root账号。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询