linux中的nobody

最近在工作中遇到nobody用户的问题。关于nobody的介绍,可以看这篇文章。

https://blog.csdn.net/weixin_37569048/article/details/83030167?ops_request_misc=&request_id=&biz_id=102&utm_term=nobody&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-1-83030167

对于服务器来说一般请求发过来以后,apach要执行代码都是通过这个nobody用户权限来执行,我们在调试程序的时候需要使用nobody用户来调试,我们可以使用su命令来实现。

举个例子:

下面的代码是读取一个名叫test的文件,然后关闭。如果这文件不存在时创建这个文件。

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>

int main(int argc, char* argv[])
{
        int fd = open("test", O_RDONLY|O_CREAT);
        if (fd < 0){
                perror("open\n");
                return -1;
        }
        if (close(fd) < 0){
                perror("close\n");
                return -1;
        }
        return 0;
}

编译gcc openfile.c -g -o openfile得到可执行文件openfile

现在我们使用nobody用户来执行:

su -c "./openfile" -s /bin/bash nobody

原因是最开始我们没有创建test这个文件,于是这段代码就要创建test,创建的权限是看该文件夹是否有写的权限,应为对于nobody这个others来说没有写权限。

我觉得就读文件来说nobody的权限低这种说法是不准确的,这个还是要看文件对others设置具体权限是什么。将nobody这个文件夹权限改成777。再试一次。

执行成功了,创建了一个所欲nobody的文件test。这就是我们可能看到的nobody文件的由来,比如服务器的session文件。

su的使用和具体参数含义可以通过man su来查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值