Linux에서 사용자를 추가, 수정 및 제거하는 방법은 무엇입니까?

모든 운영 체제에서 사용자 관리는 시스템 관리자의 기본적인 일상 작업 중 하나입니다.

Linux 기반 OS의 경우 일반적으로 사용자 계정 생성, 홈 디렉토리 변경, 기본 셸 변경, 하나 이상의 계정 잠금/잠금 해제, 사용자 계정 제거와 같은 기존 계정 수정이 포함됩니다.

이러한 작업을 수행하기 위한 명령과 프로세스를 조사하기 전에 Linux에서 사용자 계정을 분류하는 방법에 대해 간략하게 살펴보겠습니다. 또한 명시적으로 지정하지 않는 한 주어진 명령은 대부분의 일반적인 Linux 배포판에서 작동합니다.

사용자 유형

루트 사용자

루트 사용자는 작업을 수행할 수 있는 모든 권한을 가진 OS의 관리자입니다. 일반적으로 루트만 기본 시스템 프로그램 및 라이브러리를 설치/제거 또는 업데이트할 수 있습니다. 시스템 전체 권한이 있는 유일한 사용자 계정입니다.

따라서 루트 사용자는 시스템의 가장 강력한 사용자입니다.

특수 사용자

로그인이 없는 사용자입니다. 그들은 루트 사용자의 모든 권한을 가지고 있지 않습니다. 계정에 따라 각기 다른 전문적인 역할을 맡습니다.

애플리케이션 설치 시 자동으로 생성됩니다. bin, sync, lp, mail, operator, squid는 특수 사용자의 일부입니다.

일반 사용자

일반 사용자는 작업 디렉토리, 일반적으로 홈 디렉토리에서만 모든 권한을 갖습니다. 그들은 시스템을 관리하거나 소프트웨어를 설치할 권한이 없습니다. sudo를 통해 특별한 권한이 없으면 이러한 작업을 수행할 수 없습니다.

사용자 추가

데비안/우분투

Debian 또는 Ubuntu 기반 시스템에는 CLI에서 사용자를 추가하는 몇 가지 옵션이 있습니다. 첫 번째 명령은 Perl 스크립트이며 백엔드에서 useradd 명령을 사용하는 adduser입니다.

사용자 추가는 권한이 있는 작업이므로 sudo를 접두사로 사용하고 사용자 이름을 인수로 사용해야 합니다. 프롬프트에 따라 기타 세부사항을 지정할 수 있습니다. 사용자 이름과 비밀번호를 제외한 나머지 세부 사항은 선택 사항입니다. id 명령을 사용하여 사용자가 생성되었는지 확인할 수 있습니다.

$ sudo adduser johndoe
Adding user `johndoe' ...
Adding new group `johndoe' (1003) ...
Adding new user `johndoe' (1003) with group `johndoe' ...
Creating home directory `/home/johndoe' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for johndoe
Enter the new value, or press ENTER for the default
        Full Name []: John Doe
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n] Y
$
$ id johndoe
uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe)
$

CentOS/RHEL/Fedora(Debian/Ubuntu 포함)

다음 명령인 useradd는 RHEL 기반 OS 배포판에서 작동할 뿐만 아니라 Ubuntu/Debian 호스트에서도 동일하게 작동합니다. 새 사용자를 만드는 가장 간단한 구문(추가 옵션 없음)은 다음과 같습니다.

$ sudo useradd <username>

예시:

$ sudo useradd janedoe

useradd 명령은 사용자를 생성하는 동안 지정할 수 있는 여러 옵션을 지원합니다. 가장 일반적인 것은 사용자 ID(UID), 그룹 ID(GID), 기본 셸 및 홈 디렉토리 등입니다. 이러한 예는 다음과 같습니다.

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

id 명령을 사용하여 새로 생성된 사용자를 확인할 수 있습니다.

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

사용자 수정

조직 요구 사항, 사용자 요청 또는 시스템 마이그레이션에 따라 기존 사용자의 일부 속성을 수정해야 하는 경우가 많습니다. 이러한 속성의 대부분은 수정하기 쉽지만 사용자 환경과 사용자가 소유하거나 액세스하는 파일에 대한 액세스에 미치는 영향을 확인해야 합니다.

  온디맨드 애플리케이션 살펴보기

기본 셸

기본 셸은 사용자가 로컬로 또는 SSH를 통해 새 CLI 세션을 시작할 때 생성되는 CLI 셸입니다. 대부분의 최신 시스템에는 기본 사용자 Bash가 있지만 Linux 배포판이나 사용자 환경에 따라 다를 수 있습니다. 사용자의 기본 셸을 수정하려면 다음을 사용하십시오.

$ sudo usermod -s <shell> <username>

예시:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/sh
$ sudo usermod -s /bin/bash janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$

위의 출력에서 ​​볼 수 있듯이 janedoe 사용자의 경우 쉘이 /bin/sh에서 /bin/bash로 변경되었습니다.

홈 디렉토리

기본 셸과 마찬가지로 사용자의 홈 디렉토리는 다음을 사용하여 다른 위치로 수정할 수 있습니다.

$ sudo usermod -d <new_directory_path> <username>

아래 예에서 사용자 janedoe의 사용자 홈 디렉토리가 /data/janedoe로 변경되었습니다.

$ getent passwd janedoe
janedoe:x:1005:1005::/data/newhome:/bin/bash
$ sudo usermod -d /data/janedoe janedoe
$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$

전환하기 전에 새 디렉토리에 올바른 소유권과 권한이 있는지 확인하십시오. 그렇지 않으면 사용자가 로그인하거나 새 홈 디렉토리에서 작업하는 동안 문제가 발생할 수 있습니다.

사용자 ID

다음을 사용하여 기존 사용자의 사용자 ID를 변경할 수 있습니다.

$ sudo usermod -u <new_uid> <username>

예시:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -u 1010 janedoe
$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$

다시 말하지만, UID를 변경하면 Linux 파일 시스템이 소유권과 권한을 파일 또는 디렉토리에 매핑하는 방법이 변경됩니다. 사용자의 홈 디렉토리와 해당 컨텐츠 및 시스템의 다른 모든 파일(이전 UID 사용)이 원래 소유한 UID 매핑으로 변경되었는지 확인합니다. 그렇게 하지 않으면 CLI 세션 및 사용자의 파일 액세스에 문제가 발생할 수 있습니다.

기본 그룹

기본 그룹은 일반적으로 다른 GID가 지정되지 않는 한 사용자 생성 중에 생성되는 사용자의 기본 그룹 ID입니다. Linux에서는 usermod 명령을 사용하여 사용자의 기본 그룹을 수정할 수도 있습니다. 사용할 구문은 다음과 같습니다.

$ sudo usermod -g <new_gid or group_name> <username>

다음은 한 가지 예입니다.

$ getent passwd janedoe
janedoe:x:1010:1005::/data/janedoe:/bin/bash
$ sudo usermod -g 1001 janedoe
$ getent passwd janedoe
janedoe:x:1010:1001::/data/janedoe:/bin/bash
$

다시 말하지만, 새 그룹 ID가 사용자의 홈 디렉터리, 콘텐츠 및 소유권 권한을 적절하게 마이그레이션하는 데 적용할 수 있는 기타 모든 파일이나 디렉터리에 설정되어 있는지 확인합니다.

  PowerPoint 프레젠테이션에서 iTunes 음악을 사용하는 방법

그룹 추가/제거

기본 그룹 외에 Linux의 사용자는 보조 그룹의 일부가 될 수 있습니다. usermod 명령을 사용하여 사용자가 속한 추가 그룹을 항상 추가하거나 제거할 수 있습니다.

$ sudo usermod -a -G <group_id or group_name> <username>

예시:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -a -G docker janedoe
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$

마찬가지로 보조 그룹 중 하나에서 사용자를 제거하려면 아래와 같이 gpasswd 명령을 사용합니다.

$ sudo gpasswd -d <username> <groupname>

예시:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker)
$ sudo gpasswd -d janedoe docker
Removing user janedoe from group docker
$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

GECOS 코멘트

/etc/passwd의 GECOS 필드에는 사용자 정보 또는 주석이 포함됩니다. 기존 사용자에 대한 이 정보를 다음과 같이 수정할 수 있습니다.

$ sudo usermod -c <comment> <username>

예시:

$ getent passwd janedoe
janedoe:x:1005:1005::/data/janedoe:/bin/bash
$ sudo usermod -c "Jane Doe - System Admin" janedoe
$ getent passwd janedoe
janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash
$

주석이나 사용자 세부 정보에 공백이 포함된 경우 위의 예에서와 같이 해당 필드를 따옴표로 묶습니다.

로그인 이름

-l 플래그를 사용하여 usermod 명령을 사용하여 사용자의 로그인 이름을 변경할 수도 있습니다.

$ sudo usermod -l <new_username> <old_username>

예시:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo usermod -l jane_doe janedoe
$ id jane_doe
uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe)
$

사용되는 곳마다 새 이름에 따라 사용자 참조를 업데이트해야 합니다. id와 같은 명령에서도 새 사용자 이름을 지정해야 합니다.

사용자 제거

userdel 명령을 사용하여 Linux에서 사용자를 제거할 수 있습니다.

$ sudo userdel <username>

예시:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$ sudo userdel janedoe
$ id janedoe
id: ‘janedoe’: no such user
$

홈 디렉토리 및 메일 스풀과 함께 사용자를 제거하려면 -r 플래그도 추가하십시오.

$ sudo userdel -r <username>

특히 Ubuntu 기반 시스템의 경우 deluser 명령을 사용하여 사용자를 제거할 수도 있습니다.

$ sudo deluser <username>

마찬가지로 홈 디렉토리와 메일 스풀도 제거하려면 다음을 사용하십시오.

$ sudo deluser --remove-home <username>

자세한 정보 및 기타 지원되는 옵션은 다음을 사용하는 다양한 명령의 기본 페이지를 참조하십시오.

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

결론

이 기사에서는 Linux 시스템에서 사용자 관리의 다양한 측면을 보여주었습니다. 여기에는 다양한 범주의 사용자에 대한 설명과 이를 추가 및 제거하는 방법이 포함됩니다. 또한 기존 사용자의 매개변수를 수정하는 데 도움이 되는 다양한 옵션을 다룹니다. 다양한 명령이 지원하는 모든 가능성을 다루지는 않지만 시스템 관리자가 일상적인 작업에서 마주하게 되는 많은 일반적인 관리 작업을 다룹니다.

  Office 2016 제품 키가 정품인지 확인하는 방법

다음을 읽는 데 관심이 있을 수도 있습니다. Linux에서 파일과 디렉토리를 제거하는 방법?