아치리눅스 설치 과정 13 - 일반 추천사항 : 사용자/그룹 생성, sudo 권한
이전 글(아치리눅스 설치 과정 12 - 재부팅 후 인터넷 연결 안됨? (resolv.conf))에 이어...
https://wiki.archlinux.org/title/General_recommendations
의 내용을 따라갈 겁니다.
이번 글은 General recommendations 문서 내용 중에서
1-1. Users and groups
부분을 따라할 차례입니다.
(참고 문서 : https://wiki.archlinux.org/title/Users_and_groups => 보물과도 같은 글.)
https://wiki.archlinux.org/title/Users_and_groups#User_management
배경 설명 (개념)
▼ 예를 들어, /boot/ 디렉토리의 내용을 봅시다.
ls -l 명령어는 파일의 소유자/그룹/권한을 확인할 수 있습니다.
▲ 붉은색 굵은 밑줄은 사용자(소유자) 이름입니다.
로그인할 때 사용하는 ID입니다.
위 스샷 기준, root 이름을 가진 계정만 이 파일을 조작할 수 있습니다.
aaa라는 이름으로 로그인한 사람은 이 파일을 조작할 수 없을 것입니다.
노란색 굵은 밑줄은 소유그룹 입니다.
root라는 그룹에 속한 사용자들도 (설정에 따라) 이 파일을 조작할 수도 있습니다.
bbb라는 그룹에 속한 사용자들은 이 파일을 조작할 수 없을 것입니다.
(가는 밑줄 부분은 소유자/소유그룹의 구체적인 조작 범위를 표시하고 있습니다.)
▲ 하나씩 떼어서 보고 싶으면 stat -c 에
%U (user겠죠) / %G (group이겠죠) / %A (access 권한이겠죠) 옵션을 더하고
그 뒤에 파일명을 붙이는 식으로 명령어를 구성할 수 있습니다.
액세스권한 의미는... 얼추 감이 잡히죠? r은 read, w는 write, x는 eXecute(실행). 윈도우도 exe파일 있죠? execute 실행. d는 디렉토리.
drwx/rwx/rwx 이렇게 나눠봤을 때, 마지막 세자리는
언급된 User, Group에 속하지 않은 나머지 사용자(기타 일반사용자)들에게 주어진 권한입니다.
참고 문서 :
https://wiki.archlinux.org/title/File_permissions_and_attributes
https://itwiz.tistory.com/entry/chmod-권한-설정 => 특히 setUID bit, setGID bit, Sticky bit 관련 설명 좋음. 리눅스 공유폴더/공유파일 설정시 도움 많이 될 것. 예를 들어, 일반사용자가 저장하더라도 setUID/SetGID에 명시된 User/Group 이름으로 바뀌어 저장된다거나, Sticky(스티키비트) 설정된 사용자/root 이외의 사람들은 수정삭제 못하게 된다거나(777권한 주더라도 stickybit로 방어되는 점이 일반적인 상황의 파일관리와 다른 것.).
https://en.wikipedia.org/wiki/Setuid
https://en.wikipedia.org/wiki/Sticky_bit
우분투 리눅스의 유저/그룹 권한, 어떻게 되어 있을까?
유저/그룹을 어떤 모양으로 만들고 정책을 어떻게 세울지 막막하면
잘나가는 리눅스 배포판(우분투) 따라하면 중간은 가겠죠.
우분투 설치시 aaa라는 User를 만들면서 진행했는데, 구조가 어떻게 되어 있는지 뜯어봅시다.
ls -l /home
해보니까 aaa라는 User, aaa라는 Group으로 /home/aaa 디렉토리가 만들어져 있습니다.
User와 Group의 이름이 같고, /home 아래 디렉토리 이름도 User와 같음을 확인 가능합니다.
id aaa
aaa라는 User에 뭐가 연결돼 있나 봤습니다. UID GID 같은 세부 정보들도 같이 보였고
괄호 안은 그룹 이름인 것 같습니다.(User에는 다수의 Group을 연결할 수 있습니다.)
groups aaa
aaa라는 계정에 어떤 Group들이 연결돼 있나 봤습니다. sudo 가 눈에 띄는군요.
▲ Users 정보를 담고 있는 /etc/passwd 파일, Groups 정보를 담고 있는 /etc/group 파일에서 aaa에 해당하는 것만 추려보니 이런 식으로 되어 있었습니다.
연습 : 실수를 줄이기 위한 목적
돌아올 수 있는 길을 갑시다.
잘못 생성한 User, Group 및 홈디렉토리는 언제든지 삭제할 수 있도록 연습하고 넘어갈게요.
useradd 블라블라
userdel 블라블라
usermod 블라블라
groupadd 블라블라
groupdel 블라블라
groupmod 블라블라
이런 명령어들로 User / Group 들을 추가/삭제/수정할 수 있는 것 같습니다.
passwd 계정명
gpasswd 그룹명
이런 명령어들로 User / Group 의 비밀번호를 추가/삭제할 수 있는 것 같고요.
▼ 리눅스 계정(User) 추가할 때 일반적으로 쓸만한 옵션이 뭐가 있을지
useradd --help 명령으로 살펴봤습니다.
▲ -U : user와 같은 이름의 group도 같이 생성.
-m : 홈디렉토리 자동 생성.
-s : 셸 종류 선택
정도가 쓸만해 보입니다.
cat /etc/shells
▼ -s 옵션에 적용할 수 있는 shell 종류를 보기 위해 cat /etc/shells 라고 입력해 봤습니다.
/etc/shells 내용에 있는 것만 -s 뒤에 적을 수 있습니다.
▲ useradd에서 -s 옵션을 넣지 않았을 때 기본값으로 어떤 shell이 지정돼 있는지
/etc/default/useradd 파일의 내용을 봤습니다. /bin/bash 라고 적혀 있더군요.
연습으로 kkk 라는 User, 동일 이름의 Group, 홈디렉토리를 만들어 보겠습니다.
useradd kkk -m -U -s /bin/bash
나머지 명령어들은 디렉토리 확인, ID/그룹 존재 확인, User에 연결된 그룹들 확인하는 것인데요, 우분투 리눅스의 것들과 비교해봤을 때 세가지 결함이 보입니다.
첫번째 결함 : /home/kkk 디렉토리를 우분투 리눅스의 것과 비교해보니... Group의 읽기&실행 권한이 빠져 있군요.
두번째 결함 : /etc/passwd 의 kkk 소유자 내용을 보면... 코멘트가 빠져 있습니다. 우분투 리눅스라면 kkk:x:1000:1000:kkk,,,:/home/kkk:/bin/bash 이렇게 나왔을 겁니다.
세번째 결함 : sudo(또는 wheel) 그룹이 kkk 소유자에 추가되지 않은 것 같습니다.
두번째, 첫번째, 세번째 순으로 해결해야 될 듯합니다.
세번째는 별도의 소제목으로 다루겠습니다.
usermod kkk -c 'kkk,,,'
두번째 결함 해결을 위해, usermod (modify 수정) 명령을 이용하여 코멘트를 추가해 주었습니다. 성공.
chmod g+rx /home/kkk
첫번째 결함 해결을 위해, chmod (체인지 모드) 명령을 이용하여 g(그룹)에 rx(읽기쓰기)를 +(추가)해 주었습니다. 성공.
연습을 충분히 했으니, kkk 계정은 필요 없어졌습니다.
userdel -r kkk
진입 각을 보자 (겹치는 User 없나)
▲ who 라는 명령어는 현재 로그인한 계정명(User)을 보여줍니다.
passwd --status --all (또는 passwd -S -a 또는 cat /etc/passwd)
명령어는 PC에 등록된 User(계정명) 목록을 전부 보여줍니다.
(User Database는 /etc/passwd 파일에 평문으로 저장되어 있는데, 이것을 출력하는 거예요.)
여기에 안 보이는 이름으로 User(로그인 ID)를 정하세요. 마음 속으로.
참고 문서 :
https://wiki.archlinux.org/title/Users_and_groups#User_database
https://man.archlinux.org/man/passwd.1
그룹 이름을 User와 다르게 정하고 싶다면 아래 명령을 입력하여 기존의 Group들을 보고 겹치지 않는 것을 생각해 두세요.
cat /etc/group
sudo 환경 구축
우리가 일반 계정에서 root 권한의 명령을 실행할 때 sudo 를 앞에 붙이는데, 아치리눅스는 sudo 패키지를 별도로 설치해야 작동합니다. 설치 후 sudo를 사용하면 백그라운드에서 wheel 그룹이 발동하여 root 역할을 해주는 구조입니다.
▼ 그래서 wheel 그룹은 기본으로 들어가 있는 것을 확인할 수 있습니다.
pacman -Qn sudo
명령으로 확인해보고, 없으면
pacman -S sudo
명령으로 sudo 패키지를 설치합니다.
https://wiki.archlinux.org/title/sudo#Configuration
위 문서에서 /etc/sudoer 편집을 위해 visudo 명령 사용을 요구하는데, no editor found (editor path = /usr/bin/vi) 에러가 나오는 것은 EDITOR=nano 처럼 리눅스 기본에디터 설정이 안 되어있기 때문입니다. 이 경우, 1회성이라도 에디터를 지정해서 visudo를 실행하고 싶으면...
EDITOR=nano visudo
라고 명령어를 입력하면 됩니다.
그러면 /etc/sudoers 파일을 수정하게 되겠죠?
%wheel ALL=(ALL:ALL) ALL
부분을 찾아서 주석(#)을 풀고, 저장+빠져나옵니다. nano 에디터는 Ctrl+X 누르면 돼요.
(sudo 명령어가 wheel 그룹에 속한 User들에게 영향을 미칠 수 있도록 하는 기능입니다. 이것이 핵심.)
이제
usermod 계정명 -aG wheel
이런 식으로 입력하면 해당 User(계정)에는 sudo 명령을 쓸 수 있게 됩니다.
최종 : 로컬 계정(User) / 그룹 생성, 비밀번호 설정
끝까지 따라오느라 고생 많으셨습니다.
aaa 라는 User, 동일 이름의 Group 생성한다는 가정 하에, 아래의 명령들만 입력하면 끝입니다.
cat /etc/shells
useradd aaa -m -U -s /bin/bash -c 'aaa,,,'
chmod g+rx /home/aaa
usermod aaa -aG wheel
passwd aaa
-c 옵션(코멘트)는 생략해도 됩니다.
테스트 스크린샷 첨부하고 마치겠습니다.
참고글 :
https://wiki.archlinux.org/title/Reset_lost_root_password
passwd --help
gpasswd --help