sudo

관리자 권한을 부여하기 위해 root 계정의 암호를 공유하던 방식은 암호를 공유한다는 불편함과 위험함 그리고 root 계정이 살아있으므로 해서 외부 공격에 뚫릴 수 있다는 취약점이 있었다. 그 대안으로 root 계정 자체가 아니라 개별 사용자가 한시적으로 관리자 권한을 취득할 수 있게 하는 sudo가 있다.

sudo -s 는 환경변화 없이 현재 사용자가 관리자 권한을 획득하도록 하고, sudo -i 는 계정 자체가 관리자로 바뀐다.

레드햇 계열 배포판에서는 sudo를 기본으로 채택하지 않는데, 적용하려면
  1. passwd -l root 로 root 계정을 잠근다.
  2. PATH에 /sbin:/usr/sbin를 추가하는 동작이 /etc/profile 에서 uid가 0일 때만 일어나록 되어 있는데 이를 변경해 모든 계정이 경로를 받도록 한다.
  3. sudo 설정을 만져준다.

visudo 명령으로 설정을 파일명 없이 바로 편집할 수 있다. 설정 파일은 /etc/sudoers 이다.
뒤쪽 ALL 앞에 NOPASSWD:를 붙여주면 실행할 때 암호를 입력하지 않고 바로 넘어간다. 자세한 건 man sudoers를 참조한다.

이때 설정에 requiretty 옵션이 들어가 있으면 cron 안에서 sudo가 붙은 명령을 실행할 때 에러가 난다. 옵션을 끄면 잘 된다.
Comments