본문 바로가기
Linux 2급

리눅스 사용자 환경설정 파일, 실행파일(GID, UID, echo, passwd)

by 방뭉밍봉 2023. 11. 2.

오늘은 사용자 환경설정 파일에 대해 알아보겠습니다.

그전에 echo 명령어부터

[command] echo

#>echo [option] [args]

-n : 마지막에 따라오는 개행 문자(newline) 문자를 출력하지 않는다.

-e : 문자열에서 역슬래시(\)와 조합되는 이스케이프 문자(escape sequence)를 인용부호(“)로 묶어 문자를 인식하도록 한다.

echo 명령어는 echo 메아리, 말하다?라는 뜻입니다 그냥 터미널에서 사용하게 되면

이렇게 건방지게 제 말을 따라 합니다 이 자식이..

사실 echo 명령어는

여러 가지 환경 변수들의 설정을 확인하는데 많이 사용됩니다.

이런 식으로 말이죠 환경 변수들을 사용할 때는 앞에 "$"를 붙여줘야 합니다 $가 붙으면 변수로 생각하고 저런 식으로 나오게 됩니다 붙이지 않는다면 또 건방지게 따라 할 겁니다

사용자의 환경설정 파일은 크게 두 가지로 나뉩니다

사용자별 환경설정 파일모든 사용자의 환경설정 파일

사용자별 환경 설정 파일

리눅스는 root를 포함한 모든 유저가 자신의 홈 디렉터리가 있고 그 홈 디렉터리 사용자의 환경설정 파일이 따로 존재합니다. 숨김 파일로 말이죠 우선 확인을 해봅시다

cd ~를 이용하여 자신의 홈 디렉터리로 이동합시다 "~" 은 자신의 홈 디렉터리를 칭합니다 ls -la -a 명령어를 사용하여 숨김 파일까지 볼 수 있게 자신의 홈 디렉터리를 확인해보면 제일 앞에. 이 붙어있는 bash~ 파일들이 나옵니다 저게 사용자별 환경설정 파일입니다

밑에 확인하듯이 ls -l로 a 옵션을 붙여주지 않는다면 사용자별 환경설정 파일은 확인할 수 없습니다.

$HOME/.bash_profile 사용자가 로그인할 때 실행되는 파일

$HOME/.bashrc .bash_profile에 의해서 실행되는 파일

$HOME/.bash_logout 사용자가 로그아웃할 때 실행되는 파일

$HOME/.bash_history 사용자가 입력한 명령어가 저장되는 파일

vi 나 cat 명령어로. bash_history라는 파일을 읽어보면

 

사용자가 그동안 사용한 명령어들을 순서대로 볼 수 있습니다

모든 사용자의 공통 환경 설정 파일

/etc/profile, /etc/bashrc

/etc/profile 은 사용자가 접속할 때 제일 먼저 읽어오는 파일입니다

이 파일을 다 읽어오면 사용자별 홈 디렉터리에 있는 환경설정 파일을 읽어오게 됩니다.

실행 파일( x 권한 추가 )

사용자가 보통 일반 파일로 만들면 실행파일이 아닌

아무것도 없는 빈 파일로 생성됩니다 여기다 vi로 편집하여 아무거나 써주면 text 파일로 바뀌게 되죠 하지만 chmod로 권한을 바꾸어서 x 권한을 주게 되면 실행파일로 바뀌게 됩니다

ll <- (ls -l) 명령어로 확인해보면 644 권한이 주어지고 x 실행 권한은 없는 일반 파일입니다 이 파일에 실행 권한을 주게 되면

초록 색깔 실행파일로 바뀌게 됩니다 이 파일은 리눅스 안에서 사용할 수 있는 언어로 편집하게 되면 그대로 쉘에서도 실행이 됩니다 예로 vi /test/hello를 이용해 hello 파일을 편집해봅시다

이런 식으로 편집을 해주고 나갑시다 (리눅스의 파일은 리눅스 안에서 쓰이는 모든 명령어들을 활용해도 되고 쉘 언어로도 편집을 할 수 있습니다)

실행은 그냥 명령어 따로 안치고 해당 파일만 불러오면 됩니다

 

/test/hello로 실행파일을 실행했더니 hello!라는 출력 문구와 함께 사용자의 홈 디렉터리에 있는 숨김 파일을 출력해주는 걸 확인할 수 있습니다.

 

다음 알아볼 것은 사용자의 설정 파일입니다

사용자 설정 파일

/etc/passwd 사용자 계정 정보

/etc/group 사용자 그룹 정보

/etc/shadow 사용자 패스워드 정보

/home/ 사용자 홈 디렉터리

/etc/skel/ 사용자 환경설정 파일

 

사용자별 그룹을 확인할 수 있는 /etc/group 파일

1. /etc/group

root:x:0:() ( : 구분자 )

----- - - -

1) 2)3)4)

1) 그룹 이름

2) 그룹의 password 보통 x로 되어있음

3) GroupID ( GID)

그룹 식별 번호

[기본 정책]

SYSGID 201 - 999 (systemGID로 201-999는 관리자 권한을 가짐)

GID 1000 - 60000 (기본 그룹의 GID)

4) 그룹에 소속된 사용자

단, 기본 그룹 제외

사용자의 정보를 확인할 수 있는 /etc/passwd 파일

2. /etc/passwd

root:x:0:0:root:/root:/bin/bash

---- - - - ---- ------ ----------

1) 2)3)4) 5) 6) 7)

1) 사용자 이름

2) 사용자의 password 보통 x로 되어있음

--> /etc/shadow shadow 패스워드 시스템

/etc/shadow? /etc/passwd라는 파일이 있는데 비밀번호를 따로 저장할 /etc/shadow 파일은 왜 존재하는 걸까 그 이유는 /etc/passwd 파일은 거의 모든 프로그램이 참조하는 파일이므로 모든 유저가 확인할 수 있게 만든 파일이라면 /etc/shadow 파일은 관리자(root)만 확인할 수 있는 파일로 사용자의 비밀번호가 암호화되어서 저장되어있음

#>pwconv (명령어를 사용하면 /etc/shadow 파일 활성화)

#>pwunconv X (명령어를 사용하면 /etc/shadow 파일 비활성화)

비활성화 해놓는다고 해서 정보가 사라지거나 비밀번호가 없어지거나 하진 않음

그럼 이어서 3) 번

3) UserID ( UID)

사용자 식별 번호

[기본 정책]

SYSUID 201 - 999 (그룹 GID 와 마찬가지로 201~999는 system UID)

UID 1000 - 60000 (1000~60000번은 기본 유저의 UID)

첫 번째로 만든 ming이라는 계정과 두 번째로 만든 bong라는 계정의 UID, GID 번호

ming 은 pasword를 설정해두었기에 두 번째 필드가 암호화된 걸 확인할 수 있고 bong 계정은 password 설정을 안 했기에!! 가 뜨는 걸 확인할 수 있음

4) 기본 그룹의 GID

5) Comment

6) 사용자의 홈 디렉터리 경로

7) 사용자 SHELL 경로

마지막으로 알아볼 것은 passwd 명령어

#>passwd

--> 로그인한 사용자의 패스워드 변경

#>passwd [user_name]

--> 해당 사용자의 패스워드 변경 ( 관리자만 가능 )

이건 뭐 따로 설명할게 없네요 그냥 사용자의 비밀번호를 바꾸는 명령어입니다

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

root 계정으로 passwd [user name] 을 입력하면 해당 user에 비밀번호를 변경