HTTP服务器server程序-u参数分析—StateThreads示例程序介绍

本文主要介绍 HTTP服务器 server 程序的一些常用选项,以及它是如何实现的。

1, -u 指定进程所属的用户

server 程序可以通过 -u 选项指定进程所属的用户,命令如下:

bash 复制代码
sudo ./server -u nobody -l ./log -p 5 -b 192.168.0.109:8888

ps -aux | grep server

可以看到,server 进程的用户都变成了 nobody,把 HTTP 的进程设置为低权限的用户 nobody 在生产环境可以提供安全性。

-u 参数的功能其实是通过 change_user() 函数实现的,这个函数挺精简的,有需要可以拿出来用。

scss 复制代码
static void change_user(void) {
    struct passwd *pw;

    if ((pw = getpwnam(username)) == NULL)
        err_quit(errfd, "ERROR: can't find user '%s': getpwnam failed", username);

    if (setgid(pw->pw_gid) < 0)
        err_sys_quit(errfd, "ERROR: can't change group id: setgid");
    if (setuid(pw->pw_uid) < 0)
        err_sys_quit(errfd, "ERROR: can't change user id: setuid");

    err_report(errfd, "INFO: changed process user id to '%s'", username);
}

本文是《 SRS原理 》一书中的文章,如需观看更多内容,请购买本书。

相关推荐
Bigger5 天前
我写了一个AI图像视频生成工具,免费API+本地部署,分享给大家
人工智能·图像识别·音视频开发
ltlovezh14 天前
ROI 编码学习指南:Android 与 FFmpeg 的真实实现边界
android·ffmpeg·音视频开发
iOStanhaitao15 天前
23.视频播放器项目实战-音视频播放
音视频开发
iOStanhaitao16 天前
6.第一个c++安卓程序编译运行
音视频开发
音视频牛哥23 天前
不只是等待 IDR:SmartMediaKit 播放器对 H.264 GDR 码流的完整适配实践
音视频开发·视频编码·直播
三木彤1 个月前
语音转文本python
音视频开发
鹧鸪晏1 个月前
Android GLSurfaceView 完全指南
android·音视频开发
ltlovezh1 个月前
AAC 元数据:ADTS 与 ASC 的区别、转换和常见坑
后端·ffmpeg·音视频开发
MonkeyKing1 个月前
iOS 音频实战:边播边缓存、预加载与断点续播完整实现
音视频开发
11年老程序猿在线搬砖1 个月前
2026年语聊APP开发费用深度拆解:从MVP到百万并发的预算清单
音视频开发·创业·技术选型·社交app开发·语聊app·开发费用