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来查看。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读