리눅스/Debian or Ubuntu

데비안(Debian) 11 bullseye 설치 - 일반 사용자 관리자(sudo) 권한 부여, 저장소(Repository) 설정

씨실과 날실 2021. 8. 23. 09:00

안녕하세요. 씨실과 날실입니다.

 

지난 시간에는 데비안 11의 설치, GUI 초기 설정을 다루어 보았습니다.

이번 시간에는 터미널 작업으로 주요 기본 설정을 진행하겠습니다.

 

이번 연재글 주제

일반 사용자 sudo 권한 부여

데비안 저장소(Repository) 설정

$PATH 추가

이번 연재에서 다룰 내용은 위와 같습니다.

 

일반 사용자 sudo 권한 부여

데비안은 우분투 등과는 달리, 데비안 설치 과정 중 생성하는 첫 일반사용자 계정에 자동으로 sudo 권한을 부여하도록 설정할 수 없습니다.

따라서 데비안 시스템에서 일반 사용자에게 sudo권한을 부여하기 위해서는 데비안을 설치한 이후 따로 설정해주어야 합니다.

study@debian:~$ sudo apt update

로컬 시스템 관리자에게 일반적인 지침을 받았으리라 믿습니다.
보통 세가지로 요약합니다:

    #1) 타인의 사생활을 존중하십시오.
    #2) 입력하기 전에 한 번 더 생각하십시오.
    #3) 막강한 힘에는 상당한 책임이 뒤따릅니다.

[sudo] study의 암호: 
study은(는) sudoers 설정 파일에 없습니다.  이 시도를 보고합니다.
study@debian:~$

만약 sudo 권한 부여 작업 없이 sudo 권한으로 명령을 실행하면 위와 같은 오류 메시지를 출력합니다.

 

 

study은(는) sudoers 설정 파일에 없습니다.  이 시도를 보고합니다.

 

이 오류 메시지로 sudo 권한 계정이 sudoers 파일에 설정되어 있어야 된다는 것을 미루어 짐작할 수 있습니다.

sudoers 파일의 절대 경로(전체 경로)는 /etc/sudoers입니다.

/etc/sudoers의 내용은 터미널에서 아래 과정을 거쳐 확인할 수 있습니다.

 

study@debian:~$ su -
암호:
root@debian:~#

먼저 root 계정으로 로그인해줍니다.

 

root@debian:~# cat -n /etc/sudoers
     1	#
     2	# This file MUST be edited with the 'visudo' command as root.
     3	#
     4	# Please consider adding local content in /etc/sudoers.d/ instead of
     5	# directly modifying this file.
     6	#
     7	# See the man page for details on how to write a sudoers file.
     8	#
     9	Defaults	env_reset
    10	Defaults	mail_badpass
    11	Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    12	
    13	# Host alias specification
    14	
    15	# User alias specification
    16	
    17	# Cmnd alias specification
    18	
    19	# User privilege specification
    20	root	ALL=(ALL:ALL) ALL
    21	
    22	# Allow members of group sudo to execute any command
    23	%sudo	ALL=(ALL:ALL) ALL
    24	
    25	# See sudoers(5) for more information on "@include" directives:
    26	
    27	@includedir /etc/sudoers.d
root@debian:~#

root 계정으로 로그인한 후에는 위와 같이 /etc/sudoers 파일의 원문을 확인할 수 있습니다.

 

    - 생략 - 
    
    19	# User privilege specification
    20	root	ALL=(ALL:ALL) ALL
    21	
    22	# Allow members of group sudo to execute any command
    23	%sudo	ALL=(ALL:ALL) ALL
    
    -생략 -

여기서 우리가 눈여겨 볼 부분은 위와 같습니다.

전자는 특정 사용자 계정에 대한 권한 지정 부분이고, 후자는 특정 그룹 사용자에게 명령 실행에 대한 sudo 권한을 허가하는 설정 부분입니다.

 

아래 명령을 실행하여 /etc/sudoers 파일을 열어줍니다.

root@debian:~# visudo /etc/sudoers

그러면 /etc/sudoers.tmp 파일이 버퍼에 저장되고 해당 버퍼의 문서에서 아래와 같이 바로 직접 일반 사용자 계정에 root 계정과 동일한 권한을 부여해줄 수도 있습니다. 

# User privilege specification
root    ALL=(ALL:ALL) ALL
study   ALL=(ALL:ALL) ALL

편집을 마치고 저장하고 빠져나가줍니다.

그 다음 시스템을 재부팅하면 일반 사용자도 sudo 명령을 사용할 수 있게 됩니다.

그러나 이 방법은 그다지 권장하지 않습니다.

sudo 권한을 일반 사용자에게 직접 부여하기 보다는 일반 사용자를 sudo 그룹에 넣어 해당 그룹 사용자로써 sudo 권한을 부여해주는 것이 보다 간편하고 자연스러우며 시스템 설정을 덜 건드리는 안전한 방법입니다.

 

/etc/sudoers 편집 시 주의 사항

 

root@debian:~## nano /etc/sudoers

위 명령을 실행하면 nano 편집화면 하단, 단축기 모음 상단에 '[ /etc/sudoers은(는) 읽기 전용을 의미합니다 ]'라는 문구가 뜹니다.

만약 강제로 해당 파일을 직접 편집하면 문법체크를 하지 않기 때문에 혹여 있을지도 모를 실수로 인한 오류를 막을 수 없습니다. 따라서 가능하면 자동 문법체크를 하는 visudo 명령을 사용해 편집하시는 것을 권장합니다.

 

visudo 명령으로 /etc/sudoers 파일을 열면 실제로 열리는 것은 /etc/sudoers.tmp라는 임시 파일입니다.

/etc/sudoers 파일 내용을 메모리 버퍼 영역에 /etc/sudoers.tmp라는 이름으로 저장해 사용자가 해당 버퍼 영역의 내용을 편집하고 저장할 땐 수정된 버퍼 영역의 내용이 원본인 /etc/sudoers에 덮어써지게 됩니다.

 

visudo 명령 사용시 기본 편집기는 nano입니다.

root@debian:~# EDITOR=vim visudo /etc/sudoers

편집기를 달리하여 편집하려면 위와 같이 에디터를 지정해주면 됩니다.

참고로 vim은 데비안 설치시 자동으로 설치되지 않습니다. 따라서 저장소에서 따로 설치해주어야 합니다.

 

 

study@debian:~$ groups
study cdrom floppy audio dip video plugdev netdev bluetooth scanner
study@debian:~$

데비안 설치 과정 중 생성한 첫 일반 사용자 계정은 위와 같이 다양한 그룹에 자동으로 포함됩니다.

일반적으로 첫번째로 나타나는 그룹이 primary group입니다. 그 이후부터는 second group입니다.

정확하게 확인하고 싶다면 다음 명령을 사용하면 됩니다.

 

# Primary Group 확인
root@debian:~# id -gn study
study
root@debian:~#

# 모든 Group 확인
root@debian:~# id -Gn study
study cdrom floppy audio dip video plugdev netdev bluetooth scanner
root@debian:~#

# 계정 uid, gid, group 정보 확인  
root@debian:~# id study
uid=1000(study) gid=1000(study) groups=1000(study),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),113(bluetooth),118(scanner)
root@debian:~#

 

그러나 sudo 권한을 실행할 수 있는 sudo 그룹에는 포함되어 있지 않습니다.

따라서 일반 사용자 계정을 sudo 그룹에 포함시키려면 다음과 같은 과정을 거쳐야 합니다.

 

study@debian:~$ su -
암호:
root@debian:~#

먼저 sudo 권한을 사용할 수 있는 root 계정으로 로그인해주어야 합니다.

 

root@debian:~# cat -n /etc/sudoers

- 생략 - 
	
    22	# Allow members of group sudo to execute any command
    23	%sudo	ALL=(ALL:ALL) ALL

- 생략 -

root@debian:~#

모든 호스트에서 모든 명령을 sudo 권한으로 실행할 수 있는 그룹은 sudo 그룹으로 기본 설정되어 있습니다.

일반 사용자를 이 sudo 그룹에 포함시키면 해당 일반 사용자도 sudo 권한을 사용할 수 있게 됩니다.

 

사용자 계정의 속성을 바꾸는 명령은 usermod 입니다.

root@debian:~# usermod -h
Usage: usermod [options] LOGIN

Options:
- 생략 -

  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                the user from other groups
- 생략 -

root@debian:~#

사용자 계정의 그룹과 관련하여 자주 사용하는 옵션은 위와 같습니다.

 

root@debian:~# usermod -aG sudo study
root@debian:~#

위 명령을 실행해주면 해당 일반 사용자 계정이 sudo 그룹에 속하게 됩니다.

이때 속하는 그룹은 Primary group이 아닌 Second group입니다.

sudo 명령을 사용하는데에는 Primary group이나 Second group 상관 없이 sudo 그룹에 속하기만 하면 됩니다.

사용자 계정을 특정 그룹에 추가할 때 주의할 점

위 명령 시 주의할 점은 반드시 -a(=append) 옵션을 사용해주어야 한다는 점입니다.

-a 옵션 없이 --G 옵션만 사용하면 해당 사용자 계정이 속해있던 그룹이 모두 제거되고 새로 지정된 그룹에만 속하게 됩니다.

 

-g 옵션은 Primay group을 지정합니다.

-G 옵션은 새로 속하게 할 그룹 목록을 지정합니다.

 

root@debian:~# reboot

사용자 계정 그룹 속성 정보 설정 후 시스템을 재부팅해줍니다.

그 후부터 해당 일반 사용자 그룹은 sudo 권한을 사용할 수 있습니다.

 

root@debian:~# su study
study@debian:/root$

위와 같이 su 명령으로 사용자 계정 대체 실행 명령을 사용하면 시스템을 재부팅하지 않고도 sudo 명령을 곧바로 사용할 수 있습니다.

 

study@debian:~$ groups
study cdrom floppy sudo audio dip video plugdev netdev bluetooth scanner
study@debian:~$

시스템을 재부팅 후 로그인한 계정의 그룹 정보를 확인해보면 sudo 그룹이 추가된 것을 확인할 수 있습니다.

 

study@debian:~$ sudo apt update
[sudo] study의 암호: 
무시:1 cdrom://[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04] bullseye InRelease
오류:2 cdrom://[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04] bullseye Release
  이 CD를 APT에서 인식하려면 apt-cdrom을 사용하십시오.  apt-get update로는 새 CD를 추가할 수 없습니다.
기존:3 http://ftp.kaist.ac.kr/debian bullseye InRelease
기존:4 http://ftp.kaist.ac.kr/debian bullseye-updates InRelease                
기존:5 http://security.debian.org/debian-security bullseye-security InRelease  
패키지 목록을 읽는 중입니다... 완료                                       
E: The repository 'cdrom://[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04] bullseye Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
study@debian:~$

sudo 그룹에 속해진 후 sudo 명령을 사용해보면 실행이 되는 것을 알 수 있습니다.

그런데 오류가 나서 정상적으로 진행되지 않았습니다.

해당 오류 부분을 수정하고 저장소를 보다 안정적이고 빠르게 이용할 수 있도록 미러 정보를 설정해주도록 합시다. 

 

데비안 저장소 설정

데비안을 포함하여 우분투 등 기본 패키지 관리자로 APT를 사용하는 데비안 계열의 리눅스 배포판들은 기본 저장소(Repository) 파일로 sources.list를 씁니다.

이 sources.list의 절대 경로(전체 경로)는 /etc/apt/sources.list입니다.

 

study@debian:~$ cat -n /etc/apt/sources.list
     1	# deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04]/ bullseye contrib main
     2	
     3	deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 20210814-10:04]/ bullseye contrib main
     4	
     5	deb http://ftp.kaist.ac.kr/debian/ bullseye main
     6	deb-src http://ftp.kaist.ac.kr/debian/ bullseye main
     7	
     8	deb http://security.debian.org/debian-security bullseye-security main contrib
     9	deb-src http://security.debian.org/debian-security bullseye-security main contrib
    10	
    11	# bullseye-updates, to get updates before a point release is made;
    12	# see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updates_and_backports
    13	deb http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib
    14	deb-src http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib
study@debian:~$

 /etc/apt/sources.list의 내용은 터미널에서 위와 같이 확인할 수 있습니다.

 

study@debian:~$ sudo nano -lmS /etc/apt/sources.list

위 명령을 이용해 터미널에서 /etc/apt/sources.list를 편집할 수 있습니다.

일반적으로 nano 편집기로 특정 파일을 편집하는 방법에 대해 적어 놓은 많은 웹문서들을 보면

$ sudo nano <파일명>

보통 위와 같이 적혀 있고 더 길게 써놓는다고 해봐야 위 명령에 -w 옵션을 붙인 경우가 보통입니다.

그러나 여기서 저는 여러 옵션 조합인 -lmS을 추가해 명령을 실행하였습니다.

이들 옵션의 기능은 다음과 같습니다.

 

-l 옵션(= --linenumbers) :   텍스트 앞에 줄 번호를 표시합니다

-m 옵션(= mouse)         : 마우스 사용 기능을 켭니다

-S 옵션(= --softwrap)     : 지정 폭을 넘어가는 줄을 여러 줄로 표시합니다.

-w 옵션(= (--nowrap)     :  긴 줄을 강제로 줄바꾸지 않습니다.(기본 설정)

 

유의사항

인터넷에서 nano의 메뉴얼(man nano)을 검색해 내용을 확인해보면 지금 여러분들이 사용하는 nano의 사용법과 상이한 경우가 꽤 있습니다.

## 과거 nano 사용법
-S (--smooth)
    Enable smooth scrolling. Text will scroll line-by-line, instead of the usual chunk-by-chunk behavior.

-l (--nofollow)
    If the file being edited is a symbolic link, replace the link with a new file instead of following it. Good for editing files in /tmp, perhaps?
   
 ## 현재 nano 사용법
 -S, --softwrap
     Display over multiple screen rows lines that exceed the screen's
     width.  (You can make this soft-wrapping occur at whitespace in‐
     stead of rudely at the screen's edge, by using also --atblanks.)
     (The old short option, -$, is deprecated.)

-l, --linenumbers
      Display  line  numbers  to the left of the text area.  (Any line
      with an anchor additionally gets a mark in the margin.)

이렇게 nano 뿐만 아니라 인터넷에서 검색되는 내용의 상당수가 여러분들이 사용 중인 패키지의 사용법이 다른 경우가 허다합니다.

## 패키지 사용 요약 도움말
$ 명령어(또는 패키지명) -h
$ 명령어(또는 패키지명) --help

## 패키지 상세 메뉴얼
$ man 명령어(또는 패키지명)

따라서 지금 여러분들이 사용 중인 버전의 정확한 패키지 사용법은 터미널에서 위 명령어들을 실행하여 직접 확인하시는 것이 좋습니다.

 

 GNU nano 5.4                  /etc/apt/sources.list                        S  
 1 # deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1
    20210814-10:04]/ bullseye contrib main
 2
 3 deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 2
   0210814-10:04]/ bullseye contrib main
 4
 5 deb http://ftp.kaist.ac.kr/debian/ bullseye main
 6 deb-src http://ftp.kaist.ac.kr/debian/ bullseye main
 7
 8 deb http://security.debian.org/debian-security bullseye-security main contrib
 9 deb-src http://security.debian.org/debian-security bullseye-security main con
   trib
10
11 # bullseye-updates, to get updates before a point release is made;
12 # see https://www.debian.org/doc/manuals/debian-reference/ch02.en.html#_updat
   es_and_backports
13 deb http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib
14 deb-src http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib
15

                                 [ 14 행 읽음 ]
^G 도움말    ^O 기록 저장 ^W 위치 찾기 ^K 잘라내기  ^T 실행      ^C 위치
^X 나가기    ^R 파일 읽기 ^\ 바꾸기    ^U 붙여넣기  ^J 정렬      ^_ 지정 행으로

위는 nano의 /etc/apt/sources.list 편집 화면입니다.

# 기호는 주석 기호로 프로그램이 해당 설정 파일을 참조할 때 해당 줄의 내용은 무시합니다.

따라서 APT 패키지 관리자(apt 또는 apt-get)가 저장소를 참조하여 작업할 때 실제 참고하는 부분은 아래와 같습니다.

 

 3 deb cdrom:[Debian GNU/Linux 11.0.0 _Bullseye_ - Official amd64 DVD Binary-1 2
   0210814-10:04]/ bullseye contrib main

 5 deb http://ftp.kaist.ac.kr/debian/ bullseye main
 6 deb-src http://ftp.kaist.ac.kr/debian/ bullseye main

 8 deb http://security.debian.org/debian-security bullseye-security main contrib
 9 deb-src http://security.debian.org/debian-security bullseye-security main con
   trib

13 deb http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib
14 deb-src http://ftp.kaist.ac.kr/debian/ bullseye-updates main contrib

deb은 패키지 경로, deb-src는 패키지 소스 경로입니다.

이들 항목 앞에 #을 붙여 모두 주석 처리하고 새로운 저장소 정보를 동일한 형식으로 작성해주시면 됩니다.

 

### Debian 11 bullseye KAKAO Mirror ###
deb https://mirror.kakao.com/debian/ bullseye main
deb-src http://mirror.kakao.com/debian/ bullseye main

### Debian 11 bullseye-security KAIST Mirror  ###
deb https://ftp.kaist.ac.kr/debian-security bullseye-security main contrib
deb-src https://ftp.kaist.ac.kr/debian-security bullseye-security main contrib

### Debian 11 bullseye-updates KAKAO Mirror ###
deb https://mirror.kakao.com/debian/ bullseye-updates main contrib
deb-src https://mirror.kakao.com/debian/ bullseye-updates main contrib

위는 저장소 미러 정보 작성 예시입니다.

편집을 마치고 저장해줍니다.

 

nano 편집기 파일 저장 과정

^X 나가기(Ctrl + X)

수정한 버퍼 내용을 저장하시겠습니까? y 입력

기록할 파일 이름: /etc/apt/sources.list 엔터키 입력

 

study@debian:~$ sudo apt update
받기:1 https://mirror.kakao.com/debian bullseye InRelease [113 kB]
받기:2 https://ftp.kaist.ac.kr/debian-security bullseye-security InRelease [44.1 kB]
받기:3 https://mirror.kakao.com/debian bullseye-updates InRelease [36.8 kB]
받기:4 https://ftp.kaist.ac.kr/debian-security bullseye-security/main Sources [11.8 kB]
받기:5 https://ftp.kaist.ac.kr/debian-security bullseye-security/main amd64 Packages [25.8 kB]
받기:6 https://ftp.kaist.ac.kr/debian-security bullseye-security/main Translation-en [12.8 kB]
받기:7 https://mirror.kakao.com/debian bullseye/main Sources [8,612 kB]
받기:8 https://mirror.kakao.com/debian bullseye/main amd64 Packages [8,178 kB]
받기:9 https://mirror.kakao.com/debian bullseye/main Translation-ko [585 kB]
받기:10 https://mirror.kakao.com/debian bullseye/main Translation-en [6,241 kB]
받기:11 https://mirror.kakao.com/debian bullseye/main amd64 DEP-11 Metadata [4,049 kB]
받기:12 https://mirror.kakao.com/debian bullseye/main DEP-11 48x48 Icons [3,478 kB]
받기:13 https://mirror.kakao.com/debian bullseye/main DEP-11 64x64 Icons [7,315 kB]
내려받기 38.7 M바이트, 소요시간 7초 (5,179 k바이트/초)                         
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
All packages are up to date.
study@debian:~$

만약 /etc/apt/sources.list  파일을 오류 없이 수정하고 저장 후 패키지 업데이트 명령을 실행하면 위와 같이 정상적으로 진행되는 것을 확인할 수 있습니다.

 

/etc/apt/sources.list 등 데비안 계열 저장소 미러 설정 파일에 대한 보다 자세한 설명은 위 링크를 참고하시기 바랍니다.