Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 빈 충돌
- 구글 OAuth login
- KPT회고
- 프로그래머스
- 빈 조회 2개 이상
- 항해99
- 디자인패턴
- JavaScript
- 디자인 패턴
- jwttoken
- 1주일회고
- jwt
- Python
- 99클럽
- 프로그래머스 이중우선순위큐
- 단기개발자코스
- Spring multimodule
- @FeignClient
- 파이썬
- 개발자부트캠프추천
- 개발자 취업
- 코딩테스트 준비
- 취업리부트코스
- DesignPattern
- TiL
- spring batch 5.0
- 인프콘 2024
- infcon 2024
- 커스텀 헤더
- 전략패턴 #StrategyPattern #디자인패턴
Archives
- Today
- Total
m1ndy5's coding blog
알아두면 편리한 linux 명령어 2편 (사용자와 그룹에 관련된 명령어들) 본문
사용자 계정
- 사용자 계정 정보가 로컬에 저장되면 /etc/passwd 파일에 저장됨
ubuntu: x :1000:1000:Ubuntu:/home/ubuntu:/bin/bash
사용자: 패스워드 : UID : GID : 주석: 홈 디렉토리 : 기본 셸 - 패스워드에 x의 뜻은 패스워드가 /etc/shadow에 암호화되어 저장되어 있다는 의미
- root의 UID GID는 0
- 기본적으로 bash 셸을 사용하지만 각 계정의 특징이 따라 /usr/sbin/nologin, /bin/false 등으로 표기되기도 함
useradd
- 사용자 계정 추가
- /home에 사용자의 홈 디렉토리가 만들어짐
- useradd <사용자 이름>
- 주석을 달고 싶다면 -c를 붙여주면 됨 ex) useradd -c "owner" mindyo
- 계정 만료 시간을 추가한다면 -e ex) useradd -e 2023-03-18 mindyo
- 홈 디렉토리 경로를 정의하고 싶다면 -d ex) useradd -d /users/mindyo minyo
usermod
- 기존 사용자 계정을 수정할 때 사용
- 주석을 바꾸고 싶다면 -c ex) usermod -c "devs" mindyo
- 만료 시간을 바꾸고 싶다면 -e ex) usermod -e 2050-03-18 mindyo
userdel
- 사용자 계정을 삭제할 때 사용
- 그냥 userdel만 사용하면 홈 디렉토리는 남아있음
- 홈 디렉토리까지 없애려면 userdel -r mindyo 이렇게 해줘야함
passwd
- 사용자의 암호를 설정할 때 사용
- 암호를 설정할 때 화면에 문자가 표시되지 않음
- root는 모든 사용자의 암호 재설정 가능, 일반 사용자는 자기것만 재설정 가능
그룹
- 계정들의 집합
- 한 개의 그룹에 여러명의 사용자를 넣을 수 있음 (물론 한명 넣어도 됨)
- 비슷한 권한을 갖는 사용자끼리 묶으면 권한을 부여할 때 일일히 사용자에 권한을 주지않고 그룹에 주면 됨으로 편함
- /etc/group에 저장되어 있음
netdev : x : 114 : ubuntu
그룹이름 : 그룹암호 : GID :그룹 구성원그룹 추가, 수정, 삭제 명령어
- groupadd : 그룹 추가 ex) groupadd admins
- groupmod : 그룹 수정 ex) groupadd -n (새로운 이름) (이전 이름)
- groupdel : 그룹 삭제 ex) groupdel admins
- 그룹에 사용자를 추가할 때는 groupmod가 아닌 usermod를 사용해 넣어야함
- ex) usermod -G 그룹명 사용자명, usermod -g GID 사용자명
- 또는 gpasswd 명령을 사용하면 됨 ex) gpasswd -a 사용자명 그룹명
사용자 권한
- root : 모든 권한을 다 가지고 있음
- 일반 사용자 : root가 권한을 준 파일에만 엑세스 및 관리 가능, 사용자가 소유한 파일은 제어 가능
권장사항
- 모든 업무를 root로 보는 것은 권장하지 않음 -> 보안상 좋지 않기 때문
- 하지만 root의 권한이 필요한 업무라면?? 2가지 방법이 있음!
1. su
- 루트로 전환하여 업무를 실행
- su root -> 기존 사용자에서 root로 전환(하지만 완벽한 root환경은 아님)
- su - root -> 완벽하게 root로 전환
- 반드시 root의 비밀번호를 알고 있어야함 -> 그럼 root랑 다를 게 무엇..?? 역시 보안상 좋지 않음
2. sudo
- 특정 명령어를 실행할 때만 root의 권한을 빌려줌
- root의 비밀번호를 몰라도 됨
- 그렇지만 root가 어디까지 sudo 권한을 사용하게 해줄지 미리 설정을 해둬야함
- /etc/sudoers 에 특정 사용자에게 특정 명령을 위임한다는 line이 있어야함
- ex) %devs ALL=(ALL) NOPASSWD: ALL -> devs 그룹의 구성원들은 암호 없이 다 수행가능
- 여기서 암호는 root의 암호가 아닌 구성원들의 암호이다!
%devs ALL = (ALL) NOPASSWD: ALL
그룹 / WHERE (어디서) / AS WHOM (누구로) / 비밀번호 없이 모든 명령 가능 - sudo -lu mindyo 하면 mindyo에 주어진 sudo 권한을 볼 수 있음
- sudo를 사용하면 /var/log/messages에 로그되고
- sudo로 실행된 명령은 /var/log/secure에 로그됨
내가 궁금했던 점
- ec2 인스턴스를 ubuntu 기반으로 만들게 되면 ubuntu라는 이름의 유저로 로그인을 했어야함
- 그렇다면 root는 누가 관리하는 것인가?!
- sudoers에 ubuntu라는 유저에게 권한을 준적이 없는데 왜 sudo 명령어를 사용할 수 있는 것인가?!
- ubuntu는 기본적으로 root에 대한 접근이 막아져 있다고 한다. -> 구글에 검색해보면 root으로 접근할 수 있는 방법은 있음
- 앞서 말했던 파일들을 찾아보니 ubuntu라는 유저는 sudo라는 그룹에 들어가 있었고, sudoers 파일에 sudo그룹에 속해있는 유저들은 sudo로 모든 명령어를 사용할 수 있게 설정이 되어있었다!
리눅스를 제대로 모르고 일단 그냥 sudo로 하라해서 했었는데 원리를 알고 나니 굉장히 흥미로웠다!!ㅎㅎ
아 그리고 명령어에 관한 옵션들은 위에 정리한 것 말고도 굉장히 많으니 필요할 때마다 찾아보면 좋을 것 같다!
'클라우드 with AWS > Linux' 카테고리의 다른 글
알아두면 편리한 linux 명령어 5 (검색, 링크 , 압축) (1) | 2023.02.27 |
---|---|
알아두면 편리한 linux 명령어 4(파일, 디렉토리 찾기) (0) | 2023.02.26 |
알아두면 편리한 linux 명령어 3 (파일 편집) (0) | 2023.02.26 |
알아두면 편리한 Linux 명령어 정리 1편 (0) | 2023.02.26 |
About Linux (1) | 2023.02.23 |