해당 포스팅은 William E. Shotts, Jr.의 오픈소스 저서 The Linux Command Line(링크)를 번역한 내용입니다

Identity 바꾸기
다양한 상황에서 다른 사용자의 아이덴티티를 얻는 것이 필요할 때가 있습니다. 종종 슈퍼유저의 권한을 얻어 관리 작업을 하거나 특정 사용자 계정을 테스트 할 때가 있습니다. 다른 사용자로 전환하는 방법에는 세 가지가 있습니다.
- 로그아웃 후 다른 사용자로 다시 로그인
명령어 사용su 명령어 사용sudo
첫 번째 방법은 이미 알고 있기도 하고 다른 두 방법보다 불편하기 때문에 스킵하도록하겠습니다. 현재 쉘 세션에서
su - 쉘을 다른 유저나 다른 그룹 ID로 실행


명령을 실행한 후에는 슈퍼유저의 비밀번호를 묻는 프롬프트가 뜨게 됩니다(

쉘을 새로 시작하는 방법 외에도

이렇게 작성하면 명령이 새로운 쉘로 넘어가 실행됩니다. 실행하고자하는 명령은 반드시 따옴표로 감싸주세요. 따옴표로 감싸야 확장이 새로운 쉘에서 일어나게 됩니다.

sudo - 다른 사용자로써 명령 실행

명령을 입력한 후 비밀번호를 요구하는 프롬프트가 띄워지고 인증이 완료되면 명령이 실행됩니다.


우분투와sudo
슈퍼유저의 권한이 필요한 작업을 수행하는 것은 일반 사용자가 자주 난항을 겪는 문제입니다. 소프트웨어를 업데이트하거나, 시스템 설정 파일을 편집하거나, 장치에 접근하는 등의 작업들이 이에 해당합니다. Windows에서는 유저에게 관리자 권한을 줌으로써 이러한 작업들을 할 수 있도록 합니다. 그러나 이는 사용자가 실행한 프로그램에도 똑같은 권한을 주게 됩니다. 대부분은 의도한 상황이지만, 바이러스 같은 의도하지 않은 멀웨어(malware, malicious software)도 컴퓨터에 대한 통제권을 얻게 됩니다.
유닉스에서는 일반 사용자와 관리자 사이에 명확한 권한 차이가 있습니다. 유닉스에서는 필요한 때에만 슈퍼유저 권한을 부여하는 방식을 취하고 있습니다. 이를 위해와 su 명령어가 사용됩니다. sudo
몇 년 전까지만 해도 대부분의 리눅스 배포판은 슈퍼유저 권한을 임시로 부여하기 위해명령어만을 사용했습니다. su 는 su 와 달리 별도의 설정이 필요 없고 루트 계정을 유지하는 것이 유닉스에서는 일반적이었습니다. 하지만 이런 방식은 문제가 있었습니다. 사용자가 루트 권한을 얻은 후에 계속해서 루트 권한으로 명령을 실행한다는 것이었습니다. "permission denied"라는 귀찮은 메시지를 받지 않기 위해서 과도하게 루트 권한을 사용한 것이죠. 이는 큰 보안 위험을 초래하며, 시스템을 관리하는 바람직한 방법이 아닙니다. sudo
우분투의 개발자들은 다른 방식을 택했습니다. 기본 설정에 따라 우분투는 루트 계정의 비밀번호 설정을 막음으로써 루트 계정으로의 로그인을 비활성화하고를 통해 루트 권한을 부여하게 됩니다. 최초의 사용자 계정은 sudo 를 통해 전체 슈퍼유저 권한을 얻게되고 필요에 따라 다른 사용자 계정에도 유사한 권한을 부여할 수 있습니다. sudo
chown - 파일 소유자와 그룹 소유자를 변경

여기서 첫 번째 인자의 문법이 중요합니다. Table 9-7에 몇 가지 예시를 보며 문법을 파악해보세요.
Table 9-7:
인자 | 결과 |
파일의 소유자를 현재 소유자에서 |
|
파일의 소유자를 |
|
파일의 그룹 소유자를 |
|
파일의 소유자를 |
두 명의 사용자를 가정해보겠습니다.

위 코드에서
첫 번째
chgrp - 그룹 소유자 변경
예전 버전의 유닉스에서는
권한 행사
접근 권한이 어떻게 작동하는지 배웠으니 이제 실습을 해보겠습니다. 공유 디렉토리 설정에 관련한 문제 상황을 예시로 사용해보겠습니다. "bill"과 "karen"이라는 두 명의 사용자가 있다고 가정하겠습니다. 둘 모두 음악 컬렉션이 있어서 공유 디렉토리를 설정해 각자의 음악 파일을 넣고자 합니다.
가장 먼저 해야할 것은

다음으로,


디렉토리의 소유권은

첫 번째 줄에서는 디렉토리의 그룹 소유자를
하지막 아직 문제가 남아있습니다. 현재의

사실 문제는 두 개 있습니다. 첫 번째는 기본
두 번째 문제는 한 멤버가 만든 파일이나 디렉토리의 그룹 소유자가 해당 멤버로 설정된다는 것입니다. 우리가 원하는 것은 파일이나 디렉토리 생성/추가시에 그룹 소유자가

이제 테스트를 통해 권한 문제가 해결되었는지 확인해보겠습니다.

파일과 디렉토리의 그룹 소유자 모두 생성되면서
마지막 남은 문제는
비밀번호 변경
마지막으로 다룰 내용은 비밀번호를 변경하는 방법입니다. 비밀번호 변경에는

현재 로그인 되어있는 사용자의 비밀번호를 변경하려면


슈퍼유저 권한이 있다면 다른 사용자명을 인자로 전달해 해당 사용자의 비밀번호를 변결할 수 있습니다. 이외에도 슈퍼유저는 계정 잠금, 비밀번호 유효기간 등의 설정을 할 수 있습니다. 자세한 내용은
요약
이번 챕터에서는 유닉스 계열 시스템이 어떻게 파일이나 디렉토리의 읽기, 쓰기, 실행 권한을 관리하는지 알아보았습니다. 이런 시스템의 기원은 초기 유닉스까지 거슬러 올라가며 지금까지도 세월의 풍파를 견디고 살아남았습니다. 하지만 유닉스 계열 시스템의 기본 권한 메커니즘이 현대의 다른 시스템들에 비해 세밀함이 부족합니다.
추가 자료
- 멀웨어에 관한 위키피디아:
https://en.wikipedia.org/wiki/Malware
Malware - Wikipedia
From Wikipedia, the free encyclopedia Malicious software Malware (a portmanteau for malicious software)[1] is any software intentionally designed to cause disruption to a computer, server, client, or computer network, leak private information, gain unautho
en.wikipedia.org
이번 챕터에서 소개한 명령어들 외에도 사용자와 그룹을 추가하고 정비하는 커맨드 라인 프로그램들이 많이 있습니다. 아래 명령어들의 매뉴얼 페이지를 읽어보세요:
adduser useradd groupadd
'리눅스 > Part 1 - Learning The Shell' 카테고리의 다른 글
리눅스 기초 | 10-2. 프로세스 (0) | 2024.06.03 |
---|---|
리눅스 기초 | 10-1. 프로세스 (0) | 2024.05.31 |
리눅스 기초 | 9-1. 권한 (0) | 2024.05.29 |
리눅스 기초 | 8. 고급 키보드 트릭 (0) | 2024.05.28 |
리눅스 기초 | 7. 쉘처럼 세상 바라보기 (0) | 2024.05.24 |