passwd 명령어: 사용자 패스워드 변경

passwd 명령어를 별도의 인자를 추가하지 않고 실행하면 현재 로그인사용자의 패스워드를 변경합니다.

$ passwd
Changing password for testacc
Current password: <1>
New password: <2>
Retype new password: <3>
passwd: password updated successfully

 

<1> 현재 패스워드를 입력합니다.

<2> 변경할 패스워드를 입력합니다.

<3> 변경할 패스워드를 다시한번 입력합니다.

 

 

chage 명령어: 사용자 패스워드 정책 조회

사용법 : chage -l <계정>

$ chage -l testacc

Last password change                                    : Apr 17, 2025
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

 

원격지에 포트가 열려있는지 확인해야하는데 Telnet이 설치가 안되어있는 경우가 있습니다. 이때 Telnet이 아닌 다른 방법으로 확인하는 방법입니다.

 

 

 

Windows PowerShell 이용

 

명령어 : Test-NetConnection -ComputerName 123.123.123.11 -Port 22

 

curl 이용

 

명령어 : curl -v telnet://123.123.123.123:8888

 

eval은 JavaScript 코드에서 문자열을 실행할 수 있는 기능을 제공하지만, 보안상 위험과 디버깅 어려움, 성능 저하 등의 이유로 사용을 피하는 것이 좋습니다. 대신 new Function()을 사용하여 문자열을 함수로 실행하는 방법을 사용하면 보다 안전하게 코드를 실행할 수 있습니다. 이 문서는 eval을 new Function()으로 변경하는 방법을 안내합니다.


eval 사용 예시

let x = 10;
let code = "x + 5";
let result = eval(code);
console.log(result);  // 15

위 예시에서 eval은 문자열로 제공된 JavaScript 코드를 실행하여 결과를 반환합니다. 그러나 eval은 다양한 보안 위험을 초래할 수 있습니다.


new Function() 사용 예시

new Function()은 문자열을 함수로 감싸서 실행하는 방법입니다. eval보다 상대적으로 더 안전한 방법으로 코드 실행을 제공합니다. new Function()은 다음과 같이 사용할 수 있습니다.

let x = 10;
let code = "x + 5";
let func = new Function('return ' + code);
let result = func();
console.log(result);  // 15

new Function()은 실행할 코드 문자열을 함수로 감싸며, 이 경우에는 return을 명시적으로 추가해야 합니다.


eval을 new Function()으로 변경하는 단계

단계 1: eval로 실행하려는 코드 문자열 추출

먼저 eval에서 사용되는 코드 문자열을 new Function()에서 사용할 수 있는 형태로 변환합니다. 예를 들어, eval에서 x + 5처럼 계산하는 코드가 있다면, 이 코드 문자열을 그대로 new Function()으로 넘길 수 있습니다.

단계 2: eval에서 실행되는 코드에 return 추가

new Function()은 실행하는 코드에서 값을 반환하려면 return 키워드를 사용해야 합니다. 따라서 eval에서 계산된 값을 new Function()으로 변환할 때는 반환값을 명시적으로 지정해야 합니다.

단계 3: 변수 접근 방식 변경

eval은 해당 코드가 실행되는 범위에서 변수를 직접 참조할 수 있지만, new Function()은 별도의 함수 범위 내에서 실행됩니다. 필요한 변수는 new Function()에 인자로 넘겨줘야 합니다.

예시:

eval 사용:

let x = 10;
let code = "x + 5";
let result = eval(code);
console.log(result);  // 15

new Function()으로 변경:

let x = 10;
let code = "x + 5";
let func = new Function('x', 'return ' + code);  // 'x'를 매개변수로 추가
let result = func(x);  // x 값을 전달
console.log(result);  // 15

위와 같이 new Function()은 코드 내에서 외부 변수를 참조하지 않기 때문에, 필요한 변수를 함수의 매개변수로 전달해야 합니다.


변경 시 고려사항

  • 보안: eval은 실행되는 코드가 악의적일 경우 심각한 보안 문제를 초래할 수 있습니다. new Function() 역시 외부 입력을 사용하기 전에 반드시 검증해야 합니다.
  • 디버깅: eval은 디버깅이 어려운 특성이 있습니다. new Function()은 함수로 변환되기 때문에 디버깅이 조금 더 용이할 수 있습니다.
  • 성능: eval은 실행 시에 파싱 및 컴파일 작업이 필요하므로 성능에 영향을 줄 수 있습니다. new Function()은 상대적으로 성능에 영향을 덜 미칩니다.

예외 처리

new Function()을 사용할 때 코드가 잘못된 경우 예외가 발생할 수 있습니다. 이를 처리하기 위해 try-catch 문을 사용할 수 있습니다.

let code = "x + 5";
try {
  let func = new Function('x', 'return ' + code);
  let result = func(10);
  console.log(result);
} catch (e) {
  console.error('Error executing code:', e);
}

결론

  • eval을 사용할 필요가 있을 때 new Function()을 사용하면 보안성과 성능 측면에서 더 안전한 대안을 제공합니다.
  • 코드를 new Function()으로 변경할 때는 변수를 매개변수로 전달하는 점에 유의해야 합니다.
  • eval 사용을 최소화하고, 필요하다면 new Function()을 통해 동적으로 코드를 실행할 수 있는 방법을 적용하는 것이 바람직합니다.

+ Recent posts