visudo와 vi /etc/sudoers 차이가 있나요?

yschoinet의 이미지

사용자가 root권한 사용하고 싶다고 해서 visudo로 root권한 추가를 해 줬습니다.
=======================================
visudo

(대문자시작)아이디 ALL=(ALL) NOPASSWD : ALL
=======================================
위와 같이 추가해 저장을 하면 아래와 같이 Warning 메시지가 뜹니다
(참고로 아래 메시지 뜨고 난후 일반계정 후 root로 전환 잘 되더라구요)

visudo: Warning: Runas_Alias `SOME_USER' referenced but not defined

구글링을 해보니 대문자라서 그렇다고 해서 소문자로 하니 위 메시지는 안 나옵니다

첫번째 질문인데요

1. 정말 대문자라서 warning 메시지가 뜬 건가요?

그리고 vi /etc/sudoers로 위와 같이 대문자시작 아이디로 하니 특별한 메시지 없이 저장 됐습니다 .

2. visudo 와 vi /etc/sudoers가 동일한 명령인 줄 알았는데..다른가요?

당연한 건 줄 알았는데..혹시 아시는 분들 답변 좀 부탁드립니다.

감사합니다.

세벌의 이미지

https://www.sudo.ws/man/1.8.17/visudo.man.html
visudo 쓰는 게 더 안전하다네요.

김정균의 이미지

다릅니다. "vi /etc/sudoers" 는 말 그대로 vi 로 /etc/sudoers 를 편집 하는 것이고, visudo 는 /etc/sudoers 파일을 관리를 하기 위한 application 입니다.

일단, /etc/sudoers 의 기본 파일 퍼미션은 440 입니다. 즉 쓰기 권한이 없기 때문에 그냥 vi 로 편집을 하려면 퍼미션을 변경해 주거나 저장할 때 강제 옵션(!)을 사용해야 합니다.

visudo 는 이 문제를 해결해 주며, 저장 시에 설정의 정합성 및 syntax 체크를 해 줍니다.

visudo: Warning: Runas_Alias `SOME_USER' referenced but not defined

의 의미는 SOME_USER 가 없다는 얘기죠. linux 는 대소문자 구분을 하기 때문에 user 와 USER는 서도 다른 account 가 됩니다.

dontdieych의 이미지

visudo는 사실 vi/vim하고 관련 없습니다.

현재 EDITOR 환경 변수에 설정된 에디터/프로그램으로 sudoers 파일을 열어서 편집할 수 있게 해주더군요.

짧은 지식이지만 sudoers 파일 변경하려면 무조건 visudo 써야 합니다. 직접 파일 편집은 인정 안하는 걸로.

dontdieych의 이미지

아마 vi가 폭발적으로 많이 쓰이기 시작한 시기에 너무도 당연히 에디터는 vi이니까 그 명령어 이름을 visudo로 짓지 않았나 싶네요.

추측 입니다.