-
[Linux:CentOS] sudo 명령어 권한을 주는 방법OS/Linux 2024. 10. 18. 12:13
아래 명령어로 sudo 권한 부여 설정 파일을 연다
$ sudo visudo
그러면 vi편집기로 /etc/sudoers 파일이 열리는데,
위와 같은 명령어를 통해 파일 편집기를 여는 이유는 기본적으로 /etc/sudoers 파일은 쓰기 권한이 없기 때문이다.
그렇기 때문에 다른 편집기로 해당 파일을 편집하기 위해서는
'쓰기 권한 주기 → 수정 → 쓰기 권한 빼기' 의 과정을 겪어야 하기 때문이다.
'쓰기 권한 주기 → 수정 → 쓰기 권한 빼기' 하는 방법은 더보기 참고
더보기더보기# 쓰기 권한 부여 $ sudo chmod u+w /etc/sudoers # nano 편집기로 파일 수정 $ sudo nano /etc/sudoers # 쓰기 권한 제거 $ sudo chmod u-w /etc/sudoers
파일의 아래쪽으로 쭉 내리다보면, 아래와 같은 내용이 나온다.
## Allow root to run any commands anywhere root ALL=(ALL) ALL
이 바로 아래에 `권한을 줄 사용자 ALL=(ALL) ALL`을 입력해주면 된다.
예시) gitlab-runner ALL=(ALL) ALL
[ALL=(ALL) ALL의 의미]
첫 번째 "ALL"은 이 규칙이 모든 호스트에 적용됨을 나타냅니다.
두 번째 "ALL"은 루트 사용자가 모든사용자로 명령을 실행할 수 있음을 나타냅니다.
세 번째 "ALL"은 루트 사용자가 모든그룹으로 명령을 실행할 수 있음을 나타냅니다.
네 번째 "ALL"은 이 규칙이 모든 명령에 적용된다는 것을 나타냅니다.
출처 : https://askubuntu.com/questions/546219/what-is-the-difference-between-root-all-allall-all-and-root-all-all-all특정 명령어 패스워드 없이 사용하기
GitLab-Runner로 CI/CD를 구축하던 중, sudo 명령어에 대한 오류가 떨어졌다.
관련 포스트 : https://stirringdev.tistory.com/123
두 가지 원인의 오류였는데,
1. gitlab-runner 사용자에게 sudo권한이 없다는 것
2. script가 실행될 때, password 입력할 수 없다는 것
두개를 모두 만족시킬만한 권한 부여가 필요 했다.
처음에 사용한 방법은 모든 sudo 명령어를 password를 입력하지 않아도 sudo 권한을 사용할 수 있게 하는 것
gitlab-runner ALL=(ALL) NOPASSWD: ALL
하지만 이내 gitlab-runner는 .gitlab-ci.yml에서 작성한 스크립트를 모두 실행시키기 때문에,
보안상 문제가 있을 것이라는 생각이 들었다.
그래서 특정 명령어에 대해서만 NOPASSWD가 적용되도록 수정했다.
gitlab-runner ALL=(ALL) NOPASSWD: /bin/rm -rf /home/project/app, /bin/cp -r build /home/project/app
- rm과 cp라는 쉘 명령어의 경로와 명령어를 입력
- 명령어가 여러개인 경우 ',' (comma)로 구분하여 작성
'OS > Linux' 카테고리의 다른 글
[Ubuntu] csv 파일 데이터 자르기(용량 큰 파일 나누어 저장) (0) 2022.09.01 [Ubuntu] 32 bit 인지 64 bit 인지 확인하는 명령어 (0) 2021.01.16 [Ubuntu] 설정 (0) 2021.01.12 [Ubuntu] 파일 또는 디렉토리 삭제 명령어 (0) 2021.01.01 [Ubuntu] C#) monodevelop로 다른 클래스를 참조(using) 하려면? (0) 2020.10.29