在这里插入图片描述
在这里插入图片描述

🔥@雾忱星: 个人主页
👀专栏:《C++学习之旅》《Linux学习指南》
💪学习阶段:C/C++、Linux
⏳“人理解迭代,神理解递归。



引言

  对于Linux小白而言,入门最易踩坑的就是“权限报错”——明明输对了指令,却提示无法执行、权限不足。
  其实核心原因很简单:没分清用户类型、没搞懂权限分配逻辑。本文专为小白梳理,从用户类型区分到权限实操,一步步拆解,帮你避开权限雷区,轻松上手Linux基础操作。


一、先分清:Linux的两种核心用户类型

  Linux用户分为两种权限差异极大,小白入门先分清,避免后续操作报错——所有权限分配、修改,都和账号类型直接相关。

1.1 两种用户类型详解

  • root 用户(超级用户): Linux 系统的“管理员”,拥有系统最高权限,能执行任何命令(创建/删除用户、修改任何文件权限、删除系统核心文件等),相当于 Windows 的“Administrator”。命令提示符为#
  • 普通用户: 系统的“普通使用者”,权限有限,只能操作自己创建的文件/目录,无法修改系统配置、无法修改其他用户的文件,也无法执行高危命令(比如删除系统文件)。命令提示符:$。

【root 创建普通用户】:指令adduser

#当前是root用户
[root@VM-0-6-centos ~]# pwd
/root
#==============
#指令创建普通用户
#==============
[root@VM-0-6-centos ~]# adduser tac
[root@VM-0-6-centos ~]# passwd tac
Changing password for user tac.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

注意: 在修改普通用户的密码是,在屏幕上是不回显的,一定要自己记住!!

1.2 重点:两种用户间的切换

  普通用户权限不足时(比如想修改其他用户的文件、创建新用户,后面说),需要切换到root用户,两种切换方法,建议优先掌握第一种。

【切换指令:】

  • su: 切换用户身份,不改变环境
  • su -: 切换用户+环境
  • sudo: 临时为普通用户提权,不切换用户

补充: 使用sudo,要保证目标用户在 “白名单” 中,需要管理员授权,也能够查看谁出了问题。

语法:su 用户名

#==========================================
#情景一:root切换普通用户--su 用户名(不需要密码)
#环境不变,仍是root目录下
#==========================================
[root@VM-0-6-centos ~]# whoami 
root
[root@VM-0-6-centos ~]# su tac
[tac@VM-0-6-centos root]$ whoami
tac
[tac@VM-0-6-centos root]$ pwd
/root

#===================================================
#情景二:一开始以普通用户登录,切换root-- su root(需要密码)
#环境不改变,仍为普通用户的家目录
#===================================================
[tac@VM-0-6-centos root]$ whoami
tac
[tac@VM-0-6-centos root]$ su root
Password: 
[root@VM-0-6-centos ~]# whoami 
root
[root@VM-0-6-centos ~]# pwd
/home/tac

语法su - 用户名

#==========================================
#情景一:root切换普通用户--su - 用户名(不需要密码)
#环境改变,是普通用户家目录下
#==========================================
[root@VM-0-6-centos ~]# whoami 
root
[root@VM-0-6-centos ~]# su - tac
[tac@VM-0-6-centos root]$ whoami
tac
[tac@VM-0-6-centos root]$ pwd
/home/tac

#===================================================
#情景二:一开始以普通用户登录,切换root-- su root(需要密码)
#环境改变,为root家目录
#===================================================
[tac@VM-0-6-centos root]$ whoami
tac
[tac@VM-0-6-centos root]$ su - root
Password: 
[root@VM-0-6-centos ~]# whoami 
root
[root@VM-0-6-centos ~]# pwd
/root

【查看用户类型】:指令whoami

[root@VM-0-6-centos ~]# whoami 
root

[tac@VM-0-6-centos root]$ whoami
tac

在这里插入图片描述


二、再搞懂:Linux 权限模型的三层结构

  Linux 是多用户、多任务操作系统,权限分配的核心是”访问者“——每个文件/目录都有对应的“所有者、所属组、其他用户”,权限就是给这三类主体分别分配的。

2.1 文件的三种访问角色

  • 所有者(u-User): 文件/目录的创建者,拥有最高优先级的权限(比如自己创建的文件,默认能读写)。

  • 所属组(g-group): 所有者所在的用户组,组内其他用户共享该组的权限(比如团队共享文件,可给组分配读写权限)。

  • 其他用户(o-Other): 既不是所有者,也不属于所属组的用户,权限最低(比如系统中其他无关用户)。

【查看文件信息】:

[root@VM-0-6-centos ~]# ll
total 20
drwxr-xr-x 4 root root 4096 Jan 20 13:54 B
drwxr-xr-x 3 root root 4096 Jan 20 13:28 lesson
-rw-r--r-- 1 root root  165 Jan 20 13:52 lesson.tgz
-rw-r--r-- 1 root root  372 Jan 20 15:17 temp.txt
-rw-r--r-- 1 root root 2900 Jan 19 21:38 test.txt
#---权限---  User Group  不显示other

2.2 Linux 三种权限标识详解

  Linux权限分为三种:读(r)、写(w)、执行(x),权限会分别分配给“所有者、所属组、其他用户”。

权限标识 权限含义 文件场景 目录场景
r(read) 读权限 查看文件内容(cat、more) 查看目录下的文件(ls)
w(write) 写权限 修改、删除文件内容(vim编辑器) 创建、删除目录(touch)
x(execute) 写权限 执行文件(shell脚本、可执行程序) 进入目录(cd)

补充:x 可执行,具有可执行权限 != 可以执行,可以执行 = 具有可执行权限 + 本身为一个二进制可执行文件

  在 Linux 中,规定将权限标识三个分为一组分配给访问者:

在这里插入图片描述
【整理理解】:权限 = 角色 + 目标事物的属性

  • 角色:
  • 属性: 文件权限 rwx,文件的属性

【文件类型】:在权限标识的最前面

d:文件夹 -:普通文件 p:管道文件 c:字符设备文件
l:软链接 b:块设备文件 s:套接口文件

三、重点实操:Linux 的权限修改

  在学习修改权限之前,必须先吃透权限的两种核心表达方式——字符法和数字法,这是后续使用指令修改权限的基础。每种表达方式都对应权限的实际作用,学会解读就能快速判断“谁能对文件/目录做什么操作”,再用指令修改就会得心应手。

3.1 必懂:权限的两种表达方式

  Linux 权限的核心就是“给拥有者、所属组、其他用户分配三种权限”,两种表达方式只是描述权限的不同形式,最终都对应相同的权限作用。

【方式一】:字符型

在前面已经展示过:

drwxr-xr-x 3 root root 4096 Jan 20 13:28 lesson
-rw-r--r-- 1 root root  165 Jan 20 13:52 lesson.tgz

字符法的常用组合(结合权限作用记忆)

rw-r--r-- 文件默认 所有者读写,其他人只读(保护文件)
-rw------- 目录默认 所有者全权限,其他人只读+执行(共享,不允许修改)
-rwxrwxrwx 危险组合 所有用户全权限
  # :所有者读写,其他人只读(保护文件不被误改)
drwxr-xr-x # 目录默认:所有者全权限,其他人只读+执行(方便共享查看,不允许修改)
rw-------  # 私人文件:只有所有者能读写,其他人无权限(安全,比如密码配置文件)
rwxrwxrwx  # 危险组合:所有用户都有全权限(任何人可修改、删除,不建议使用)

【方式二】:数字法

  核心特点:数字对应权限(r=4,w=2,x=1,也就是对应二进制数),三组权限分别计算总和,适合一次性修改所有用户权限(体现“批量分配”)。

  计算规则: 每组用户的权限,将对应数字相加,得到该组用户的权限数字。

【常用数字组合】:

数字法 字符型 应用对象 权限含义
644 rw-r--r-- 文件默认 所有者读写(6),其他人只读(4),保护文件安全
755 drwxr-xr-x 目录默认 所有者全权限(7),其他人读+执行(5),方便共享
700 rwx------ 私人目录 只有所有者有全权限(7),其他人无权限(0),极度安全
777 rwxrwxrwx 危险组合 所有用户全权限(7),任何人可修改删除,禁止用于重要文件/目录

  Linux 常用的三个权限修改指令:chmod(修改权限)、chown(修改所有者)、chgrp(修改所属组)。

3.2 指令修改权限

3.2.1【chmod】:修改文件/目录权限

  • 字符法:
    原理: 用字符指定“主体+权限操作”,格式: chmod [选项] [主体] ±=[权限] [文件/目录]
主体:u(拥有者)、g(所属组)、o(其他用户)、a(所有用户) 操作:+(添加权限)、-(删除权限)、=(覆盖权限)
#============
#查看原有权限
#============
[root@VM-0-6-centos ~]# ll
total 16
drwxr-xr-x 3 root root 4096 Jan 20 13:28 lesson

#========================
#chmod分别改变三种访问者的权限
#========================
[root@VM-0-6-centos ~]# chmod u-rwx lesson/
[root@VM-0-6-centos ~]# chmod g+w lesson/
[root@VM-0-6-centos ~]# chmod o-rx lesson/
[root@VM-0-6-centos ~]# ll
total 16
d---rwx--- 3 root root 4096 Jan 20 13:28 lesson

#
#chmod一次性改变所有用户权限
[root@VM-0-6-centos ~]# chmod a+rwx lesson/
[root@VM-0-6-centos ~]# ll
total 16
drwxrwxrwx 3 root root 4096 Jan 20 13:28 lesson
[root@VM-0-6-centos ~]# chmod a-rwx lesson/
[root@VM-0-6-centos ~]# ll
total 16
d--------- 3 root root 4096 Jan 20 13:28 lesson
  • 数字法:
    原理: r = 4、w = 2、x = 1,三组权限分别计算总和,格式: chmod [选项] [数字组合] [文件/目录]
#查看原有权限:000
[root@VM-0-6-centos ~]# ll
total 16
d--------- 3 root root 4096 Jan 20 13:28 lesson
#为所有用户加上读写权限
[root@VM-0-6-centos ~]# chmod 666 lesson/
[root@VM-0-6-centos ~]# ll
total 16
drw-rw-rw- 3 root root 4096 Jan 20 13:28 lesson
#重新设置:u改为只读、g改为只写、o改为只执行
[root@VM-0-6-centos ~]# chmod 421 lesson/
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 root root 4096 Jan 20 13:28 lesson

#===============
#-R:递归改变权限
#===============
[root@VM-0-6-centos ~]# pwd
/root
[root@VM-0-6-centos ~]# chmod -R 000 B
[root@VM-0-6-centos ~]# ll -R B
B:
total 4
d--------- 3 tac root 4096 Jan 15 10:06 b1

B/b1:
total 4
d--------- 2 tac root 4096 Jan 15 10:06 b2

B/b1/b2:
total 0

3.2.2【chown】:修改文件/目录的拥有者

用法: 只有root用户能修改所有者,格式: chown [选项] [新所有者] [文件/目录]

#======================
#修改单个文件/目录的拥有者
#======================
[root@VM-0-6-centos ~]# chown tac lesson/
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 tac  root 4096 Jan 20 13:28 lesson
[root@VM-0-6-centos ~]# chown root lesson/
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 root root 4096 Jan 20 13:28 lesson

#==================================
#-R:递归修改目录及子文件/文件夹的拥有者
#==================================
[root@VM-0-6-centos ~]# pwd
/root
#递归查看目录拥有者
[root@VM-0-6-centos ~]# ll -R B
B:
total 4
drwxr-xr-x 3 root root 4096 Jan 15 10:06 b1

B/b1:
total 4
drwxr-xr-x 2 root root 4096 Jan 15 10:06 b2

B/b1/b2:
total 0

#递归改变
[root@VM-0-6-centos ~]# chown -R tac B
[root@VM-0-6-centos ~]# ll -R B
B:
total 4
drwxr-xr-x 3 tac root 4096 Jan 15 10:06 b1

B/b1:
total 4
drwxr-xr-x 2 tac root 4096 Jan 15 10:06 b2

B/b1/b2:
total 0

3.2.3 chgrp:修改文件/目录的所属组

格式: chgrp 新所属组 文件/目录;和chown类似,目录需加-R递归修改

#单独修改所属组
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 root root 4096 Jan 20 13:28 lesson
[root@VM-0-6-centos ~]# chgrp tac lesson/
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 root tac  4096 Jan 20 13:28 lesson
[root@VM-0-6-centos ~]# chgrp root lesson/
[root@VM-0-6-centos ~]# ll
total 16
dr---w---x 3 root root 4096 Jan 20 13:28 lesson

#递归修改所属组
[root@VM-0-6-centos ~]# ll -R B
B:
total 4
d--------- 3 tac root 4096 Jan 15 10:06 b1

B/b1:
total 4
d--------- 2 tac root 4096 Jan 15 10:06 b2

B/b1/b2:
total 0
[root@VM-0-6-centos ~]# chgrp -R tac B
[root@VM-0-6-centos ~]# ll -R B
B:
total 4
d--------- 3 tac tac 4096 Jan 15 10:06 b1

B/b1:
total 4
d--------- 2 tac tac 4096 Jan 15 10:06 b2

B/b1/b2:
total 0

补充:关于三个指令的注意事项

  • 当使用chmod时,不管你的用户身份是什么,可以直接操作,因为相当于该你自己的东西。
  • 当使用chown/chgrp时,如果是root身份都可以直接操作,不受约束;当是普通用户时,想要改变拥有者/所属组(此时ug当前的普通用户)不能直接改变需要经目标用户的同意(当然,在 Linux 中只能sudo 提权)。

四、下一版本内容前瞻

  在这里现提出一个问题:
我们已经在 2.2小节知道了三种权限标识各自对于文件/目录的作用,但是对于一个普通用户(假设不属于一个目录中的文件的拥有则、所属组)可以删除一个目录里的一个与他毫无干系的文件这很奇怪,为什么可以随便动别人的东西?!!

  在下篇文章将会为您解答相关知识,敬请期待~~!


总结

🍓 我是晨非辰Tong!若这篇技术干货帮你打通了学习中的卡点:
👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长
❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量
⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用
💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑
🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解
技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标!

结语:

  本文围绕Linux用户类型与权限实操展开,从用户区分到权限解读,再到核心指令实操,聚焦实用操作。掌握本文内容,就能解决大部分Linux权限报错问题,轻松应对基础的用户管理与权限修改需求。
  记得动手实操巩固指令用法,下一篇我们将拆解权限实操中的隐藏疑问,继续解锁Linux入门技能~

在这里插入图片描述

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐