43. 文件权限 - 符号 & 数字模式,指定用户 ID、指定组 ID

本文深入讲解了Linux系统中文件及目录的权限管理,包括模式位结构、字母模式、数字模式,以及特殊模式位如Setuid、Setgid和粘滞位的作用和设置方法。

开篇词

我们可以通过查看一个文件的模式位来确定其权限。
 

模式位结构

文件以及目录的模式位结构:

选项用途
r读权限
w写权限
x执行权限

目录和文件的权限

我们来看一下新建文件和目录的默认权限:

touch mode_bits_file
mkdir mode_bits_dir
ll | grep 'mode_bits*'

目录权限

正如我们在以下表格中所见,目录是:

  • 用户可读、可写以及可执行的,用户叫 root
  • 组可读、可执行的,root 组里的所有用户;
  • 其他人可读、可执行的,其他用户。
用户其他人
rwxr-xr-x

在没有可执行权限的情况下,我们无法访问目录。
在没有可写权限的情况下,我们无法对目录进行添加或删除文件的操作。

文件权限

正如我们在以下表格中所见,文件是:

  • 用户可读、可写以及可执行的,用户叫 root
  • 组可读的,root 组里的所有用户;
  • 其他人可读的,其他用户。
用户其他人
rw-r‑‑r‑‑

 

字母模式位

我们可以为用户、组、其他人以及任何在字母模式里的用户设置权限。

权限分配

我们可以将读、写、执行权限分配给文件所有者、文件所属组、其他人或任何一个通过加号等号操作符来分配权限的用户,或通过减号来将用户权限删除。

用户操作权限
ugoa+‑=rwx
用户

一共有四种用户:文件所有者、文件所属组、其他人、所有人:

用户用途
u文件所有者
g文件所属组
o任何其他用户
a所有用户,等价于 ugo
操作

一共有三种行为:追加、删除、分配:

操作用途
+追加权限至用户
-删除用户权限
=分配权限给用户
权限

一共有三种权限:分别为读、写、执行:

权限用途
r可读或可查看权限
w可写或可编辑权限
x可执行或可运行权限

权限复制

我们可以将加号之后的用户权限追加至加号之前的用户权限:

复制目标操作复制源
ugoa+ugoa

特殊模式位变更

设置用户与组编号模式位
用户操作复制源
uga+‑s
目录的影响

如果一个目录设置了组编号,则该目录内创建的文件属于该目录的组,但用户编号的设置并不见效。该目录内创建的自目录继承父目录所属的组并继承特殊模式位设置组编号。

程序或文件的影响

如果一个程序设置了用户编号,任何对其进行执行操作的人都将是其所有者。如果一个程序设置了组编号,那无论谁对其进行执行操作,运行时组始终是应用所属的组。

设置限制删除标志或粘滞位

如果我们不想其他用户对我们创建的文件做删除操作;则我们可以为其所处的目录权限添加一个叫粘滞位的特殊模式位

用户操作标志
o(可选)+‑=t

处在被标记目录中的文件只能被 root 用户、目录所有者以及文件所有者删除。

进行多重变更

我们可以使用逗号来将更改权限的多个行为区分开:

u+r,g+w,o-x    # 所有者可读,组可写,其他人可执行

 

数字模式

Linux 还给我们另一种更快的用户权限变更方式。我们可以指定一个范围内的数字以体现其所对应的权限。一个完整的数字模型有四个数字。

特殊模式位

第一个数字体现的是一个特殊模式位:

模式模式位
4000设置用户编号
2000设置组编号
1000限制删除标志或粘滞位

文件所有者

第二个数字体现的是文件的所有者:

模式模式位
0400所有者可读或可查看
0200所有者可写或可编辑
0100所有者可执行或可访问

通常只显示为 400、200 以及 100。

文件所处组

第三个数字体现的是文件的所属组:

模式模式位
0040所属组用户可读或可查看
0020所属组用户可写或可编辑
0010所属组用户可执行或可访问

通常只显示为 40、20 以及 10。

其他

第四个数字体现的是其他用户:

模式模式位
0004其他用户可读或可查看
0002其他用户可写或可编辑
0001其他用户可执行或可访问

通常只显示为 4、2 以及 1。

在使用时,通常不显示前置的零。下一篇,我将向你展示如何使用以上列出的绝大部分模式位。
 

我所撰写的英文版本

43. File Permissions - Symbolic & Numeric Modes, Setuid & Setgid
 

引用

参见

上一篇:

想看手册的其他内容?请访问该手册的所属专栏:《Linux 管理员手册:既简单又深刻

<think>好的,我现在需要帮助用户理解并执行命令 `./MediaServer -d &`。首先,我要分析这个命令的各个部分。用户可能是在运行一个为 MediaServer 的可执行文件,但不太清楚每个参数的作用以及整个命令的效果。 首先,分解命令结构。`./MediaServer` 表示当前目录下的 MediaServer 程序。在Linux中,执行当前目录下的可执行文件需要在前面加上 `./`,因为系统默认不会从当前目录搜索可执行文件,除非当前目录在PATH环境变量中。所以这里用户可能已经通过编译或者下载得到了这个程序,并需要运行它。 接下来是参数 `-d`。通常,`-d` 在命令行参数中可以代表不同的含义,比如调试模式(debug)、守护进程(daemon)、或者目录(directory)等。具体要看程序本身的定义。对于服务器类程序,`-d` 常见的是作为守护进程模式或者调试模式。例如,有些程序使用 `-d` 开启调试输出,而有些则用来作为后台运行。需要进一步确定用户程序的具体情况,但这里可能有两种情况:一种是作为守护进程运行,另一种是启用调试模式。 然后是 `&` 符号,这在Linux中表示将命令放入后台运行,这样用户可以在启动程序后继续使用终端,而不会阻塞。通常用于长时间运行的服务,比如服务器程序。 接下来,我需要考虑用户可能的疑问潜在的问题。用户可能想知道这个命令具体做了什么,是否安全,以及如何确认程序是否运行成功。此外,用户可能遇到权限问题,比如没有执行权限,或者程序依赖的库缺失,导致无法运行。或者,用户可能在后台运行程序后,不知道如何管理进程,比如查看日志、结束进程等。 因此,我的回答需要涵盖以下几点: 1. 解释命令各部分的作用:`./MediaServer` 运行当前目录下的程序,`-d` 参数的可能含义,`&` 放入后台。 2. 提醒用户可能需要的权限问题,比如可执行权限,建议使用 `chmod +x MediaServer`。 3. 说明如何验证程序是否在运行,使用 `ps` 或 `jobs` 命令。 4. 提到检查日志或输出,特别是如果程序在后台运行,输出可能被重定向或写入日志文件。 5. 安全注意事项,比如确保程序来源可靠,避免运行未知程序。 6. 进程管理的基本命令,如如何终止进程。 同时,用户可能不知道如何安装缺失的依赖库,或者如何解决运行时的错误,可能需要进一步指导,但根据当前问题,可能需要保持回答的简洁,并在必要时建议用户检查文档或寻求进一步帮助。 还需要考虑用户的使用场景,可能是在搭建媒体服务器,比如流媒体服务,因此程序可能是类似FFmpeg、Plex或其他自定义的媒体服务器。用户可能希望程序在后台持续运行,所以使用 `&` 是合理的。 潜在的问题包括: - 程序可能需要配置文件,用户是否已经正确配置? - 是否有端口冲突,比如程序需要使用的端口已被占用? - 用户是否有足够的权限绑定到所需端口(如80、443等需要root权限)? - 程序是否在后台正确运行,或者是否崩溃退出? 因此,在回答中需要提醒用户检查这些方面,或者指导他们如何验证程序的状态。 总结,回答的结构应该分步骤解释命令,说明每个部分的作用,给出验证方法,注意事项,以及常见问题解决方法。同时,使用中文清晰表达,避免技术术语过于晦涩,必要时举例说明。</think>执行命令 `./MediaServer -d &` 通常用于启动一个媒体服务器程序并在后台运行。以下是详细解析操作建议: --- ### **1. 命令解析** - **`./MediaServer`** 表示运行当前目录下的可执行文件 `MediaServer`。 - **注意**:如果文件没有可执行权限,需先通过 `chmod +x MediaServer` 添加权限- 如果文件不存在或路径错误,会提示 `No such file or directory`。 - **`-d` 参数** 可能是以下含义之一(具体需参考程序文档): - **调试模式**(Debug):输出详细日志,用于排查问题。 - **守护进程模式**(Daemon):以服务形式在后台运行(但此处已用 `&`,可能不需要此参数)。 - **指定配置**(如目录路径):需结合程序功能判断。 - **`&` 符号** 将进程放入后台运行,释放当前终端会话,允许继续输入其他命令。 --- ### **2. 操作步骤** #### **Step 1: 检查文件权限路径** ```bash # 确认文件存在 ls -l ./MediaServer # 添加可执行权限(若无) chmod +x ./MediaServer ``` #### **Step 2: 启动程序** ```bash ./MediaServer -d & ``` - 成功后,终端会输出进程ID(如 `[1] 12345`),表示程序在后台运行。 #### **Step 3: 验证是否运行** ```bash # 查看进程列表(按称过滤) ps aux | grep MediaServer # 或查看后台任务 jobs -l ``` #### **Step 4: 查看日志(如有)** - 若程序输出日志到文件(如 `logs/` 目录),检查日志内容: ```bash tail -f logs/media_server.log ``` - 若未重定向输出,日志可能直接打印到终端。可通过以下方式保存日志: ```bash ./MediaServer -d > server.log 2>&1 & ``` --- ### **3. 常见问题** #### **问题 1: 启动后进程立即退出** - **可能原因**: - 依赖库缺失:通过 `ldd ./MediaServer` 检查动态链接库。 - 配置文件错误:检查程序所需的配置文件(如 `config.ini`)。 - 端口冲突:使用 `netstat -tuln | grep <端口号>` 确认端口占用。 #### **问题 2: 无法绑定到端口(Permission denied)** - 若需绑定 1024 以下端口(如80、443),需以 `sudo` 运行: ```bash sudo ./MediaServer -d & ``` --- ### **4. 管理后台进程** - **终止进程**: ```bash # 找到进程ID(PID) ps aux | grep MediaServer # 终止进程 kill <PID> ``` - **将后台进程切换回前台**: ```bash fg %1 # 1 是 jobs 命令显示的编号 ``` --- ### **5. 安全建议** 1. **程序来源**:确保 `MediaServer` 来自可信渠道,避免恶意软件风险。 2. **防火墙配置**:若需对外提供服务,开放对应端口(如使用 `ufw` 或 `iptables`)。 3. **日志监控**:长期运行建议配置日志轮转(如 `logrotate`)。 --- 如需进一步调试或了解参数含义,建议查阅 `MediaServer` 的官方文档(或运行 `./MediaServer --help`)。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Snow Hide(雪诺海德)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值