[nodejs] 현재 실행중인 시스템 유저명 알아내기
현재 nodejs 실행중인 유저를 알아내기 위한 것입니다.
같은 프로그램을 쉘에서 실행하기도 하고 웹서버를 통해서 실행하기도 합니다.
그런 경우 파일을 쓰게 되면 문제가 발생합니다.
import os from "os";
let osUser = os.userInfo().username;
if ( osUser == 'root' ) {
console.log('루트 유저: ', osUser);
}
else {
console.log('osUser: ', osUser);
}
발생되는 문제는 웹서버로 쓰면 웹서버 유저가 되지만
시스템에서 실행하면 시스템에서 실행한 유저로 파일이 저장 되는데요.
이때 시스템에서 실행한 유저가 웹서버유저와 다를 경우 웹서버에서 쓰기 같은것이 안됩니다.
물론 삭제도 안됩니다.
이런 경우 쉘에서 노드를 실행한 경우 소유자를 웹서버로 변경해줘야 하는데
이를 알아내는 방법중 하나 입니다.
또는 IP가 있는지 없는지를 기준으로 어디서 실행 되고 있는지 알아 내는 방법도 있습니다.
소유자 변경은 fs.shownSync(파일명, 유저id, 그룹id);
특이한것은 영문이 아니리 시스템에 있는 유저와 그룹의 id 숫자를 넣어야 합니다.