ABOUT ME

개발에 대한 내용을 주로 기록하고, 그 외에 남기고 싶은 것들을 기록합니다.

Today
Yesterday
Total
  • [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)로 구분하여 작성

    댓글

Designed by Tistory.