3월 1주차. Node.js에서 리눅스 명령어 사용하기

변현섭·2024년 3월 8일
0

다우데이타 인턴십

목록 보기
8/17
post-thumbnail

1. Node.js에서 리눅스 명령어 사용하기

Nubo 솔루션에는 유저가 새롭게 생성될 경우, 해당 유저의 디렉토리를 자동 생성하는 기능이 존재한다. 따라서, 유저가 삭제될 때 자동 생성된 디렉토리를 자동으로 지우기 위해 리눅스의 rm -r 커맨드를 사용해야 한다. exec 커맨드를 이용하여 이와 같은 기능을 구현할 수 있다.

const deleteUserFolder = async (user) => {
  const folderPath = process.env.NUBO_USER_FOLDER_PATH; 
  const checkFolderExistCommand = `ls ${folderPath}/${user}`;
  const deleteCommand = `sudo rm -rf ${folderPath}/${user}`;

  exec(checkFolderExistCommand, (err, out, stderr) => { // 1. user 이름의 폴더 찾기 

    if (err) { // 디렉토리가 존재하지 않을 때
      logger.info(`${folderPath}/${user}에 해당하는 폴더가 존재하지 않음`);
    } else {
      exec(deleteCommand, (err, out, stderr) => { // 디렉토리 삭제
        if (err) {
         throw new DeleteFolderError();
        } else {
          logger.info(`${user} 폴더 삭제 완료`);
        }
      });
    }
  });

  return user;

};

2. Ubuntu에서 비밀번호 입력 없이 sudo 사용하기

하지만 알다시피 rm 커맨드에는 일반적으로 sudo 권한이 요구된다. 꼭 rm 커맨드가 아니더라도 sudo가 필요한 리눅스 커맨드를 사용해야 할 수 있다. sudo 명령어가 최초 실행될 경우 기본 값으로 패스워드를 입력받기 때문에, 비밀번호를 이미 입력해둔 경우가 아니라면, sudo 명령이 바로 실행되지 않는다. 이와 같은 상황에서 비밀번호 입력 없이 sudo를 사용할 수 있도록 설정하는 작업을 고려해볼 수 있다. sudo 명령어를 비밀번호 없이 사용하고 싶다면 아래의 명령을 입력하면 된다.

whoami # 사용자명 확인
echo "{사용자명} ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/{사용자명}
profile
LG전자 Connected Service 1 Unit 연구원 변현섭입니다.

0개의 댓글