-
权限的概念
-
权限的表示
-
设置权限
权限概述
权限的基本概念
定义:Linux权限是操作系统对用户/进程访问资源的精细化管控机制,通过 读(r=4)、写(w=2)、执行(x=1) 三种基础权限组合实现。
运维视角
读(r):查看文件内容(如cat
)、列出目录内容(如ls
)。 写(w):修改文件内容、删除/创建目录内文件。 执行(x):运行脚本/程序(文件)、进入目录(目录必备)。
注:一般给予目录读权限时,也将会给其执行权限,属于“套餐”组合 可读权限read=>r(简写),可写权限write=>w(简写),可执行权限excute==>x(简写)
为什么要设置权限
==数据的安全/服务的安全==
典型运维场景:
-
Web服务器安全:Nginx配置目录需
755
,但敏感文件(如nginx.conf
)应设为644
防止篡改。 -
日志管理:日志文件(如
/var/log/nginx/access.log
)需644
,确保日志轮转工具可写入。 -
自动化脚本:Shell脚本需
755
(可执行),但避免普通用户修改(chmod u=rwx,go=r
)。 -
数据备份:备份目录权限设为
750
,仅允许备份用户和组访问。
无权限管理的灾难案例:
# 错误:误设网站目录为777,导致被植入恶意脚本 chmod -R 777 /var/www/html # 攻击者可上传webshell,控制服务器
解析Linux权限标识
权限信息拆解(ls -l
输出)
-rwxr-xr-- 1 nginx nginx 1024 Jan 5 09:30 deploy.sh drwxr-x--- 2 root backup 4096 Jan 5 10:00 /backups
首字符(文件类型):
-
-
:普通文件(脚本、配置、日志等) -
d
:目录(运维核心操作对象) -
l
:符号链接(软连接, 硬链接)(如快捷方式/usr/bin/python3 -> python3.9
)
权限九宫格(rwxr-xr--):
-
属主(u):文件所有者(如
nginx
用户对deploy.sh
有rwx
权限) -
属组(g):同组用户(如
nginx
组成员可执行deploy.sh
) -
其他用户(o):非所有者且非组成员(仅能读
deploy.sh
)
属主,主人(User):
-
你亲手创建的文件,默认你就是主人。
-
就像你的手机,你拥有最高权限(可以随便下载App)。
属组,家人(Group):
-
你和室友同属一个“合租群”,群成员共享厨房权限。
-
比如你和同事同属“运维组”,组员能一起修改服务器脚本。
其他用户,陌生人(Others):
-
既不是主人,也不是群成员的路人。
-
就像你家Wi-Fi密码,陌生人默认不能连。
查看root文件夹
root用户(属主)应该也不具备w权限?任然可以操作?
特殊用户root
在Linux操作系统中,root拥有最高权限(针对所有文件),所以权限设置对root账号没有效果。
在Linux系统中,三大类用户也可以拥有简写形式 user属主(u)、 group属组(g)、 other其他人(o) a 所有人
权限管理
文件或文件夹权限设置(字母)
基本语法:ch = changemod 简单理解权限
chmod [选项] 权限设置 文件或目录的名称 选项说明: -R :递归设置,针对文件夹(目录)
重点 :字母设置rwx并不难,重点看三方面 第一个:确认要给哪个身份设置权限 u、g、o、ugo(a) 第二个:确认是添加权限(+)、删除权限(-)还是赋予权限(=) 第三个:确认给这个用户针对这个文件或文件夹设置什么样的权限,r、W、×
案例:给readme.txt文件的拥有者,增加一个可执行权限
# chmod u+x readme.txt
案例:把readme.txt文件的拥有者的可执行权限去除
# chmod u-x readme.txt
案例:为readme.txt中的所属组内用户赋予rw权限
# chmod g=rw readme.txt
案例:给shop目录及其内部的文件统一添加w可写权限
# chmod -R ugo+w shop 或 #chomd -R a+w shop
案例:给shop目录设置权限,要求拥有者rwx,组内用户r-x,其他用户r-x
# chmod-R u=rwx,g=r-x,o=r-x shop
文件或文件夹权限设置(数字)
经常会在技术网站上看到类似于 chmod 777 a.txt
这样的命令,这种形式称之为数字形式权限。
文件权限与数字的对应关系,我们会发现没有7这个数字
7(属主)7(属组)7(其他人): rwxrwxrwx
第一个数字7,代表文件拥有者权限
第二个数字7,代表文件所属组内用户权限
第三个数字7,代表其他用户权限
rwx=4+2+1=7
rw=4+2=6
rx=4+1=5
案例:给readme.txt设置权限,文件的拥有者rwx,组内用户rw,其他用户r
rwx = 7 rw = 6 r = 4 # chmod 764 readme.txt
案例:给shop文件夹设置777权限
# chmod -R 777 shop
练习题
使用root用户设置文件夹/root/shop的权限为:属主全部权限,属组拥有读和执行权限,其他用户没有权限,请使用数字权限的形式设置
mkdir -p /root/shop chmod 750 /root/shop
请置文件/root/readme.txt的权限,权限要求为:属主拥有全部权限,属组要求可以读写,其他用户只读,要求使用数字形式;
touch /root/readme.txt chmod 764 /root/readme.txt
touch /root/readme.txt chmod u=rwx,g=rw,o=r /root/readme.txt
请设置/root/email.doc权限,权限要求只有属主可以读写,除此之外任何人没有权限;
touch /root/email.doc chmod 500 /root/email.doc chmod u=rw,g-rwx,o-rwx /root/email.doc
场景1:你的个人笔记(隐私保护)
-
文件:
个人日记.txt
-
权限要求:只有你能看和改,家人和陌生人不能看
chmod 600 个人日记.txt # 相当于设置保险箱密码
场景2:团队共享工具箱(协作开发)
-
目录:
/团队工具
-
权限要求:主人(你)能增删工具,组员(同事)能用工具但不能乱改,陌生人不能用
chmod 750 /团队工具 # 类似给同事配钥匙,但只能开锁不能换锁
场景3:公共公告栏(网站目录)
-
目录:
/var/www/html
-
权限要求:主人(管理员)能更新内容,其他人只能看,不能贴小广告
chmod 755 /var/www/html # 类似公共场所,大家能看但不能乱涂改
错误1:家门大开(777权限)
chmod 777 重要文件 # 相当于把家门钥匙插在锁上
风险:黑客能随意植入病毒(像小偷直接进屋)
错误2:锁了门但没关窗(目录无执行权限)
chmod 644 /数据备份 # 虽然能看到文件夹,但打不开
表现:cd /数据备份
提示 "Permission denied"
修复:给目录加x权限(相当于给门把手装弹簧)
运维日常场景速查表
生活场景 | 对应Linux操作 | 命令示例 |
---|---|---|
私人保险箱 | 保护SSH密钥 | chmod 600 ~/.ssh/id_rsa |
共享会议室 | 团队脚本目录 | chmod 770 /opt/scripts |
小区快递柜 | 网站上传目录 | chmod 755 /var/www/uploads |
带密码的U盘 | 数据库配置文件 | chmod 640 /etc/mysql/my.cnf |
特殊权限说明
Linux中,如果要删除一个文件,不是看文件有没有对应的权限,而是看文件所在的目录
是否有写权限,如果有才可以删除(同时必须具备执行权限)。
/shell/readme.txt 我们想删除readme.txt文件,必须要对shell目录具有可写权限,否则文件无法删除