Linux에서 chfn 및 usermod를 사용하여 사용자 데이터를 변경하는 방법

사용자 계정에는 사용자 이름보다 더 많은 것이 있습니다. 명령줄에서 Linux 사용자 계정과 연결된 모든 메타데이터를 설정하고 변경하는 방법을 알아보세요.

이름에 무엇이 있습니까?

Linux 또는 Unix 계열 컴퓨터를 사용하는 경우 사용자 계정이 있습니다. 계정에 부여된 이름은 사용자 계정 이름입니다. 로그인할 때 사용하는 이름입니다. 또한 (기본적으로) 로그인 그룹의 이름과 홈 디렉토리의 이름입니다. 모두 동일한 식별자를 사용합니다.

각 사용자 계정에 대해 저장할 수 있는 또 다른 정보 세트가 있습니다. 예를 들어 사람의 전체 이름, 사무실 번호, 직장 전화 번호와 같은 실제 데이터를 정의하고 첨부할 수 있습니다. 실제로 완전히 임의적인 정보 스니펫을 사용자 계정에 태그할 수 있습니다.

실제로 이것은 많은 사용자 계정이 구성된 컴퓨터를 관리하는 시스템 관리자에게 더 유용합니다. 그러나 단일 사용자 Linux 컴퓨터의 경우에도 내부에서 무슨 일이 일어나고 있는지 아는 것은 항상 흥미롭습니다.

GECOS 필드

한때 유닉스의 개척자들은 자체 프린터가 없었습니다. 그들은 인쇄 작업을 스풀링해야 했습니다. 제너럴 일렉트릭 실행 중인 메인프레임 제너럴 일렉트릭 종합 운영 체제 (GECOS). 이를 달성하기 위해 Unix 시스템의 사용자는 GECOS 시스템의 계정 자격 증명을 저장하고 사용해야 했습니다.

이러한 자격 증명을 저장하기 위해 GECOS 필드가 생성되었습니다. 이 틈새 시장의 요구 사항은 오래전부터 역사에 남게 되었으며, GECOS 필드는 사용자 계정 소유자와 관련된 다른 데이터를 저장하기 위해 용도가 변경되었습니다. 새 작업이 있을 수 있지만 이전 이름은 유지됩니다. 여전히 GECOS 필드라고 합니다.

이 필드는 사용자 계정에 관한 기타 정보와 함께 /etc/passwd 파일에 저장됩니다.

계정 사용자 이름입니다.
사용자 ID입니다.
그룹 ID입니다.
사용자 계정의 홈 디렉토리 경로입니다.
사용자가 로그인할 때 시작되는 셸입니다.

이곳은 손가락 명령과 새끼손가락 명령은 그들이 표시하는 정보를 검색합니다.

chfn 명령

chfn(손가락 정보 변경)을 사용하면 다음을 수행할 수 있습니다. GECOS 필드에 저장된 정보 설정 및 변경. 정보는 필드 내에서 쉼표로 구분된 목록으로 저장됩니다.

chfn 명령은 이미 Ubuntu 18.04.1 및 Manjaro 18.1.0에 있었습니다. Fedora 31에 설치해야 합니다. 다음 명령을 사용하여 설치하십시오.

sudo dnf install util-linux-user

사용자 계정 “dave”의 소유자에 대해 어떤 손가락이 알아낼 수 있는지 봅시다. 최대 정보를 얻으려면 -l(긴 형식) 옵션을 사용합니다.

finger dave -l

찾을 수 있는 내용은 다음과 같습니다.

계정 사용자 이름, 홈 디렉터리 및 기본 셸을 검색합니다. 이들은 모두 사용자 계정과 관련이 있습니다. 그들은 그 계정을 사용하는 실제 사람을 언급하지 않습니다. chfn 명령을 사용하여 실제 사람에 대한 정보를 저장할 수 있습니다.

chfn dave

이런 식으로 chfn을 사용하면 짧은 대화식 프로세스가 시작됩니다. GECOS 필드가 보유할 수 있는 정보의 각 부분에 대한 데이터 값을 입력하라는 메시지가 표시됩니다. 각 데이터 값의 현재 값은 대괄호로 표시됩니다. []. 현재 데이터를 유지하려면 “Enter” 키를 누르면 괄호 안의 값이 유지됩니다.

우리가 입력한 정보는 다음과 같습니다.

객실 번호: 512
직장 전화: 555-4567
집 전화: 555-5432

손가락이 새로운 정보를 선택하는지 확인합시다.

finger dave -l

네, 그렇습니다. 그러나 전체 이름을 변경하라는 메시지가 표시되지 않았다는 것을 눈치채셨을 것입니다. sudo를 사용하는 경우에만 가능합니다. 그러나 sudo 사용을 잊었기 때문에 전체 chfn 세션을 다시 거칠 필요가 없습니다. 데이터 값을 개별적으로 변경할 수 있습니다.

개별 데이터 값 변경

sudo와 함께 -f(전체 이름) 옵션을 사용하여 사용자 계정 소유자의 전체 이름을 설정할 수 있습니다.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

그리고 다시 한번 손가락으로 확인해보면:

전체 이름이 추가된 것을 볼 수 있습니다.

방 번호, 집 전화 번호 및 직장 전화 번호를 변경하는 다른 옵션이 있습니다. 방(사무실) 번호를 변경하려면 -r(방 번호) 옵션을 사용합니다.

sudo chfn -r 633 dave

일부 배포판에서는 -r 옵션 대신 -o(사무실 번호) 옵션을 사용할 수 있습니다. 이것에 대한 자세한 내용은 곧. 지금은 chfn 버전에 대한 옵션을 보려면 다음을 사용하십시오.

man chfn

사무실 전화 번호를 변경하려면 -w(직장 전화) 옵션을 사용합니다.

sudo chfn -w 555-1122 dave

마지막으로 집 전화 번호를 변경하려면 -h(집 전화 번호) 옵션을 사용합니다.

sudo chfn -h 555-6576 dave

모든 변경 사항이 수락되었는지 확인하기 위해 다시 finger를 사용해 봅시다.

finger dave -l

성공. 모든 명령이 작동했으며 데이터 값이 업데이트되었습니다.

다른 사용자 계정에서 chfn 사용

우리 자신의 정보를 변경하는 것이 너무 많으며 다른 사용자를 위해 GECOS 정보를 변경하는 것은 어떻습니까? 그 만큼 쉽습니다. 할 때 sudo를 사용해야 하지만 이것이 유일한 차이점입니다. 사용자 계정 mary에 대해 어떤 데이터가 설정되었는지 확인해 보겠습니다.

finger mary -l

이 사용자 계정에 대해 일반적인 기본 정보가 설정됩니다. 정보를 추가해 보겠습니다.

sudo chfn mary

이전과 동일한 세션을 실행하여 저장할 수 있는 각 정보에 대한 데이터 값을 묻는 메시지가 표시됩니다. 그리고 sudo 를 사용했기 때문에 전체 이름 데이터 값을 요청합니다.

“기타”라는 마지막 항목은 무엇입니까?

모든 버전의 chfn에서 지원되지 않으며 sudo를 사용하는 경우에만 볼 수 있습니다. 이것이 우리가 (의도적으로) sudo를 다음과 함께 사용하지 않았을 때 이전에 볼 수 없었던 이유입니다.

chfn dave

“기타” 데이터 값은 원하는 모든 것을 포함할 수 있습니다. 처방되거나 예상되는 용도가 없습니다.

“Other” 필드를 지원하는 chfn 버전은 이 값을 직접 변경할 수 있는 -o(기타) 옵션도 제공합니다. 일부 시스템에서는 “사무실 번호”에 대해 -o를 사용하고 “기타”에 대해 -o를 사용하는 충돌 때문에 “방 번호”에 -r을 사용합니다.

less를 사용하여 /etc/passwd 파일에서 사용자 계정 mary에 대해 저장된 데이터를 볼 수 있습니다.

less /etc/passwd

그것을 지원하는 시스템에서( chfn 버전에 대한 매뉴얼 페이지 확인) -o(기타) 옵션을 사용하여 “기타” 필드를 직접 설정할 수 있습니다.

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o

그리고 less 명령을 사용하여 사용자 계정 dave의 데이터를 확인할 수 있습니다.

less /etc/passwd

[터미널창의asswd”너비=”646″높이=”382″/>[asswdinaterminalwindow”width=”646″height=”382″/>

그것은 분명한 질문을 제기합니다. chfn 버전이 “기타” 필드를 지원하지 않는 경우 어떻게 변경합니까? usermod 명령으로 그렇게 할 수 있습니다.

usermod 명령

usermod 명령을 사용하면 다음을 수행할 수 있습니다. 사용자 계정의 측면 수정 그룹에서 사용자 계정을 추가 또는 제거하고 기본 셸을 변경하는 등의 작업을 통해 또한 GECOS 필드를 직접 조작하는 데 사용할 수도 있습니다.

사용자 계정 mary에 대한 /etc/passwd 파일의 행을 자세히 살펴보겠습니다. 우리는 사용할 것입니다 우리를 위해 그 라인을 분리하기 위해 grep. 이것은 사용자 이름이 고유해야 하기 때문에 작동합니다. mary라는 사용자 계정은 하나만 있을 수 있습니다.

grep mary /etc/passwd

etc/passwd 파일의 필드가 표시됩니다. 콜론 “:”은 필드 구분 기호로 사용됩니다. 왼쪽에서 오른쪽으로 필드는 다음과 같습니다.

계정 사용자 이름입니다.
이 사용자 계정의 암호를 나타내는 “x”는 /etc/shadow 파일에 암호화되어 있습니다.
mary 사용자 계정의 사용자 ID입니다.
mary 사용자 계정의 그룹 ID입니다.
GECOS 필드.
mary 사용자 계정의 홈 디렉토리 경로입니다.
mary 계정 소유자가 로그인할 때 시작되는 셸입니다.

쉼표 “,”는 GECOS 필드 내 데이터 값의 구분 기호로 사용됩니다. GECOS 필드의 값은 왼쪽에서 오른쪽으로 다음과 같습니다.

성명.
방(또는 사무실) 번호.
직장 전화번호.
집 전화번호.
기타 정보.

usermod 명령은 전체 GECOS 필드를 사용자가 제공하는 새 값으로 설정합니다. 제공하는 것이 사람의 전체 이름인 경우 GECOS 필드의 유일한 항목은 전체 이름입니다. 즉, 유지하려는 기존 데이터 값을 제공해야 합니다.

여기 예가 있습니다. 사용자 Mary가 승격되어 4층으로 이동합니다. 그녀는 새 사무실 번호, 새 직장 전화 번호를 받고 있으며 그녀의 중간 이름을 추가할 것입니다. 그녀의 “기타” 필드 값도 변경됩니다. 그녀의 집 전화번호는 변경되지 않지만 문자열로 usermod에 제공해야 합니다.

-c(주석) 옵션을 사용해야 하며 sudo로 명령을 실행해야 합니다.

sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary

sudo 사용자 모드 -c

grep을 사용하여 mary에 대한 /etc/passwd 파일의 내용을 보고하면 새 값이 추가되었음을 알 수 있습니다.

grep mary /etc/passwd

모든 것이 플럭스이며, 그 어떤 것도 지속되지 않습니다.

부정확한 데이터는 가치가 없습니다. 사람들에 대한 정보가 변경되면(사무실 이동, 이름 변경, 직함) 현재 위치를 반영하도록 메타 데이터를 쉽게 업데이트할 수 있습니다.