【发布时间】:2015-02-16 14:27:20
【问题描述】:
我正在尝试使用 node.js mkdirp 在另一个用户区创建目录。
换句话说,我有用户 foo 和 bar。我希望 mkdirp 以用户 foo 的身份运行,但在 bar 区域创建一个目录。
从之前的 SO 帖子中,经过大量试验,看来这是无法做到的。我尝试通过 usermod 将两个 bar 放入 foo 的组,将 foo 放入 bar 的组,并广泛使用 setfacl。
这对我来说有点奇怪,考虑到我能够 su foo; 并在 bar 的目录中创建目录、触摸、删除等。
我什至尝试过使用常规的 fs.mkdir 命令,但也有同样的问题(可能并不奇怪)——代码如下。
当节点程序第一次启动时,我使用 setuid/setgid 将运行权限从用户“root”降级为用户“foo”。
我的问题:是否有可能以某种方式保留 root 权限,但将 root 权限限制得足够长,只为了运行 mkdirp 命令而没有别的?
感谢大家的时间和考虑。我的实验代码如下:
fs = require('fs') ;
process.setgid(556); // foos groupid
process.setuid(560); // foos userid
fs.mkdir('/test1/test2/testTester/', 0770, function(err){
if (err) console.error(err) else console.log('works!');
});
id foo;
uid=560(foo) gid=556(foo) groups=556(foo),512(bar)
标识栏;
uid=515(bar) gid=512(bar) groups=512(bar)
【问题讨论】: