-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpamManager.js
More file actions
36 lines (31 loc) · 1.14 KB
/
Copy pathpamManager.js
File metadata and controls
36 lines (31 loc) · 1.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* dité: Process based shared web hosting
*
* pamManager.js
* Manage system based userName via PAM
*
* @author Putu Wiramaswara Widya <wiramaswara11@mhs.if.its.ac.id>
*/
var childProcess = require('child_process');
module.exports.createUserAndGroup = function(userName, callback) {
var uid = null;
var gid = null;
var userAddProcess = childProcess.spawn('adduser', ['--force-badname', '--disabled-password', '--gecos', "", userName]);
userAddProcess.on('exit', function(code) {
// Get UID
var idUidProcess = childProcess.spawn('id', ['-u', userName]);
idUidProcess.stdout.on('data', function(data) {
uid = data.toString().replace('\n', '');
});
idUidProcess.on('close', function() {
// Get GID
var idGidProcess = childProcess.spawn('id', ['-g', userName]);
idGidProcess.stdout.on('data', function(data) {
gid = data.toString().replace('\n', '');
});
idGidProcess.on('close', function() {
callback(null, parseInt(uid), parseInt(gid), '/home/' + userName);
});
});
});
};