系统超级用户,权限不受限制(类似 Windows 管理员)。
必须设置密码,建议与普通用户密码不同。
通过 adduser
或 useradd
创建(CentOS 默认推荐 useradd
),操作受权限限制。
必须设置密码,不同用户应使用不同密码。
方法一:仅切换身份(保留当前环境)
su
输入 root 密码(输入时无回显)。
切换后仍在原工作目录,环境变量不变。
退出:exit
或 Ctrl+D
方法二:完全登录 root(加载 root 环境)
su - # 或 su - root
输入 root 密码。
切换后进入 root 的家目录(/root
),并加载 root 的环境配置。
退出:exit
或 Ctrl+D
su 目标用户名
# 例如切换到用户 lynn
su lynn
输入 目标用户的密码(非当前用户密码)。
切换后保留当前目录和环境变量。
退出:exit
或 Ctrl+D
sudo
命令用途:普通用户临时以 root 权限执行单条命令。
sudo 需要提权的命令
# 示例:安装软件(CentOS 使用 yum/dnf)
sudo yum install nginx
输入密码:需输入 当前普通用户的密码(非 root 密码)。
权限限制:
新创建的普通用户默认无法使用 sudo
。
需由 root 用户编辑 /etc/sudoers
文件授权(后续学习配置)。
Linux 通过 用户身份 判断权限,分为三类身份:
拥有者(Owner):文件/目录的创建者。
所属组(Group):文件/目录所属的用户组(一组用户的集合,用于共享权限,无需成员单独授权)。
其他人(Others):既不是拥有者,也不在所属组中的用户。
示例理解所属组的作用
假设公司有三个部门:开发组(dev
)、测试组(test
)。
若文件属于
dev
组,则所有开发组成员自动拥有该文件的组权限。无需为每个开发组成员单独配置权限,只需管理组权限即可。
通过 ls -l
查看文件属性:
# 查看文件详细信息(CentOS 示例)
ls -l myfile.txt
# 输出示例:
-rw-r--r--. 1 alice dev 1024 Jan 1 10:00 myfile.txt
文件类型
首字符表示文件类型:
-
:普通文件(文本、程序、图片等)。
d
:目录文件。
b
:块设备文件(如磁盘 /dev/sda
)。
c
:字符设备文件(如键盘 /dev/tty
)。
l
:软链接(快捷方式)。
p
:管道文件(进程间通信)。
权限位
后续 9 个字符表示权限,分三组(每组 3 位):
前 3 位:拥有者权限(u
)。
中间 3 位:所属组权限(g
)。
后 3 位:其他人权限(o
)。
符号 | 含义 | 示例说明 |
---|---|---|
r |
可读(Read) | 查看文件内容或列出目录内容。 |
w |
可写(Write) | 修改文件内容或在目录中创建/删除文件。 |
x |
可执行(Execute) | 运行程序或进入目录。 |
- |
无权限 | 对应位置权限被禁用。 |
关于文件后缀的说明
Linux 不依赖后缀识别文件类型,但部分程序会依赖后缀(如 .sh
脚本、.c
源码)。
示例:gcc
编译器默认编译 .c
文件为代码,.o
文件为目标文件。
root 用户的特殊性
不受权限约束:root 可无视所有权限限制,直接操作任何文件。
1.查看文件权限
ls -l /etc/passwd
# 输出示例:
-rw-r--r--. 1 root root 2550 Jan 1 09:00 /etc/passwd
解读:
文件类型:普通文件(-
)。
拥有者(root)权限:rw-
(可读可写)。
所属组(root)权限:r--
(仅可读)。
其他人权限:r--
(仅可读)。
2.尝试越权操作(普通用户)
# 普通用户尝试删除 /etc/passwd(无权限)
rm /etc/passwd
# 输出:rm: cannot remove '/etc/passwd': Permission denied
谁能修改权限
文件拥有者 或 root 用户。
普通用户需通过 sudo
提权操作(需已配置 sudo 权限)。
chmod
命令身份标识:
u
(拥有者)、g
(所属组)、o
(其他人)、a
(所有人)。
操作符:
+
(添加权限)、-
(移除权限)、=
(直接设置权限)。
权限类型:
r
(读)、w
(写)、x
(执行)。
命令示例 | 作用说明 |
---|---|
chmod u+w test.c |
为拥有者添加写权限。 |
chmod u+x test.c |
为拥有者添加执行权限(适用于脚本/程序)。 |
chmod u-rw test.c |
移除拥有者的读、写权限。 |
chmod g+rx test.c |
为所属组添加读和执行权限。 |
chmod o+rw test.c |
为其他人添加读、写权限。 |
chmod u-rwx,g+rwx,o+rw test.c |
同时修改多类身份权限(逗号分隔)。 |
权限对应数字:
r=4
,w=2
,x=1
,无权限=0。
计算方式:
每组权限相加(拥有者、所属组、其他人各占三位)。
权限组合 | 八进制值 | 示例命令 | 权限说明 |
---|---|---|---|
rwx |
7 (4+2+1) | chmod 700 test.txt |
拥有者:全部权限;组和其他人:无权限。 |
rw- |
6 (4+2) | chmod 760 test.txt |
拥有者:rwx ;组:rw- ;其他人:无权限。 |
r-- |
4 | chmod 444 test.txt |
所有人仅可读。 |
--- |
0 | chmod 000 test.txt |
所有人无任何权限(root 仍可操作)。 |
示例验证
# 创建测试文件
touch test.txt
# 设置权限为 rwxrw----(八进制 760)
chmod 760 test.txt
# 查看权限
ls -l test.txt
# 输出:-rwxrw----. 1 user group 0 Jan 1 10:00 test.txt
chown
语法:
chown 新拥有者 文件名
示例:
# 普通用户需使用 sudo(需权限)
sudo chown lynn test.txt # 将拥有者改为 lynn
sudo chown lynn:dev test.txt # 同时修改拥有者和所属组为 lynn:dev
chgrp
语法:
chgrp 新组名 文件名
示例:
# 普通用户需满足以下条件之一:
# 1. 自己是目标组成员
# 2. 使用 sudo 提权
sudo chgrp dev test.txt # 将所属组改为 dev
普通用户无法直接修改其他用户的文件权限(需 sudo
)。
若文件拥有者仅有读权限(如 r--
),即使所属组有写权限,拥有者也无法写入文件。
# 示例:拥有者仅有读权限
chmod u=r test.txt
# 尝试写入(失败)
echo "test" >> test.txt # 提示 Permission denied
为什么新建文件的默认权限是 664(文件)和 775(目录)?
普通文件起始权限为 666
(rw-rw-rw-
)。
目录文件起始权限为 777
(rwxrwxrwx
)。
作用:屏蔽默认权限中的部分权限(umask
中标记的权限会被移除)。
计算方式:最终权限 = 起始权限 & (~umask)
。
CentOS 默认 umask 值:0022
(普通用户)或 0002
(root 用户)。
文件类型 | 起始权限 | umask | 最终权限 | 权限解释 |
---|---|---|---|---|
普通文件 | 666 | 0022 | 644 | rw-r--r-- |
目录文件 | 777 | 0022 | 755 | rwxr-xr-x |
# 临时设置 umask 为 000(开放所有权限)
umask 000
touch test1.txt # 权限变为 666(rw-rw-rw-)
mkdir test_dir # 权限变为 777(rwxrwxrwx)
# 恢复默认 umask(0022)
umask 0022
权限 | 对目录的影响 |
---|---|
r |
允许 列出目录内容(如 ls 命令),但无法查看文件内容或进入目录。 |
w |
允许在目录中 创建、删除、重命名文件(需配合 x 权限)。 |
x |
允许 进入目录(cd )并访问目录内文件(需文件自身权限支持)。 |
示例验证
# 创建目录并移除 x 权限
mkdir mydir
chmod -x mydir
# 尝试进入目录(失败)
cd mydir # 提示:Permission denied
# 恢复 x 权限
chmod +x mydir
场景:多个用户需要共享目录,但需防止互相删除文件。
传统方案:
# 创建共享目录并开放权限
sudo mkdir /shared
sudo chmod 777 /shared
问题:任何用户可删除他人文件(目录 w
权限允许删除操作)。
作用:
允许所有用户在目录中创建文件。
仅文件拥有者或 root 可删除/重命名文件。
设置方法:
# 为目录添加粘滞位(需 root 权限)
sudo chmod +t /shared
# 或指定八进制模式(1777)
sudo chmod 1777 /shared
权限标识:
粘滞位显示为 t
(若目录有 x
权限)或 T
(无 x
权限)。
ls -ld /shared
# 输出:drwxrwxrwt. 2 root root 4096 Jan 1 10:00 /shared
# 用户 alice 创建文件
su - alice
touch /shared/alice.txt
# 用户 bob 尝试删除(失败)
su - bob
rm /shared/alice.txt # 提示:Operation not permitted
# root 可强制删除
sudo rm /shared/alice.txt