사용자 설정 파일
/etc/passwd 사용자 계정 정보
/etc/group 그룹 정보
/etc/shadow 사용자 패스워드 정보
( #>passwd [user_name] )
/home/ 사용자 홈 디렉터리 (/home/[user_name])
/etc/skel/ 사용자 환경설정 파일 (/etc/skel/.bash*)
vi나 less , cat 명령어로 하나하나 설정 파일을 들어가 대강 확인해 보시길 바랍니다
소유권 ( 파일의 소유자, 파일의 소유 그룹 )
파일의 소유 그룹 변경
#>chgrp [option] [group_name] [path]
-R (하위 디렉터리에 있는 모든 디렉터리와 파일의 그룹을 변경한다.)
-c 변경된 파일만 자세하게 보여준다
-f 변경되지 않은 파일에 대해서 오류메시지를 보여주지 않는다
-v 작업상태를 자세히 보여준다
저번에 배운 파이프와 grep를 이용해 ls -l /test | grep "hello" 명령어로 /test디렉터리에 있는 hello 파일을 확인해보면

-rw-r--r--. 1 root root 24 10월 4 13:21 hello
----- -----
1) 2)
1) 파일의 소유자
2) 파일의 소유 그룹
파일의 소유자와 소유 그룹이 root인 걸 확인할 수 있습니다 우선이 hello 파일을
#> chmod 640 /test/hello로 hello 파일을 소유자와 소유 그룹만 볼 수 있게 설정해두었습니다
이렇게 되면 root와 root 그룹에 해당되어있는 소유 그룹 말고는 아무도 이 파일을 실행할 수도 읽을 수도 수정할 수도 없게 됩니다 확인해 볼까요?
su ming 로 ming 유저로 접속하면

원래는 읽을 수 있었던 /test/hello 파일의 허가가 거부 되었습니다
이제 배울 chgrp 명령어를 사용해 /test/hello의 그룹을 읽을 수 있게 설정해봅시다

밑줄 친 것처럼 소유 그룹이 ming으로 바뀐 것을 확인할 수 있습니다

다시 ming 유저로 돌아와서 cat 명령어를 사용하니 640 권한이 주어진 hello 파일에 4 권한에 소속되는 ming 은 권한 r 을 사용해 cat 명령어를 사용할 수 있게 되었습니다!
파일의 소유자 변경
#>chown [option] [user_name] [path]
-R (하위 디렉터리에 있는 모든 디렉터리와 파일의 그룹을 변경한다.)
-c 변경된 파일만 자세하게 보여준다
-v 작업상태를 자세히 보여준다
음... 위에 소유 그룹 변경이랑 그냥 똑같다고 생각하시면 됩니다 해당 파일의 소유자를 변경시킵니다

hello 파일의 소유자가 root에서 ming로 변경된 걸 확인할 수 있습니다

잉?? 근데 이제 파일의 소유자도 아니고 소유 그룹도 아닌 root 가 어떻게 cat 명령어로 읽을 수 있죠? 그건 root의 권한은 절대적이어서 그렇습니다 root는 리눅스 운영체제 안에서 음... 깍두기?라서 권한이건 뭐건 전부다 볼 수도 설정할 수도 있습니다.
또한 chown 명령어는 파일의 소유자와 소유 그룹을 동시에 변경할 수도 있습니다

이렇게 " . " 점을 구분자로 1. 소유자 2. 소유 그룹을 순서대로 적으시고 변경할 파일의 경로를 지정해주시면 해당 파일의 소유자 소유 그룹이 동시에 변경됩니다.

이렇게 " . " 점을 먼저 달고 이름을 지정해주면 소유 그룹만 설정할 수도 있습니다
(아니.. 이렇게 되면 chgrp 명령어는 없어도 되지 않나?)
[실습] user2
user2:x:1001:1000:Test User:/home/user2:/bin/bash
--> UID : 1001 , 기본 그룹을 usergroup, 홈 디렉터리는 /home/user2
/etc/passwd

아래 ming, bong, test는 제가 새로 만들어 준 user입니다/etc/passwd 파일을 보시면
아랫줄 친 것처럼 user의 uid, gid 가 보입니다 기본 유저의 기본값은 1000부터 1씩 증가합니다.
[command] su ( switch user)
#>su [user_name] 이전 사용자의 환경 변수를 그대로 사용
#>su - [user_name] 변경되는 사용자의 환경 변수 사용
제가 그동안 많이 사용하는 모습을 보셨을 텐데요 su 스위치 유저라는 뜻으로 root 계정
다른 유저로 접속한 것처럼 스위치를 하는 명령어입니다.
옵션 -를 붙여주면 변경할 유저의 환경 변수를 사용하고 그냥 su를 사용하면 su를 사용한 유저의 환경 변수를 그대로 사용합니다.

su ming로 ming라는 계정으로 접속
다시 돌아올 땐 su, exit 등

그냥 su를 하시면 root의 암호를 써서 돌아오셔야 하고 exit라고 쓰시면 그냥 나가집니다
root에서 su를 사용하면 각 계정의 암호를 안 써도 되지만 su로 일반 유저로 접속하고 또다시 su로 다른 유저 거로 접속하려면 해당 유저의 암호를 필요로 합니다

이렇게 말이죠
사용자 관리
[useradd default] /etc/default/useradd (useradd 명령어를 사용할 때 참조하는 파일)
#>useradd [option] [user name]
-D 옵션 D를 사용하면 /etc/default/useradd 파일의 설정값을 확인할 수 있음

-g [gid] GROUP :그룹 지정 = 지정될 그룹은 이미 생성되어 있어야 함
-b [path] HOME :홈 디렉터리 지정
-f [num] INACTIVE :임시로 생성한 사용자의 사용 기간을 지정한다
-e [date] EXPIRE :임시 사용자의 사용기간을 제한한다. YYYY-MM-DD(연도-월-날) 방식으로 지정한다.
-s [shell] SHELL :새로운 사용자의 셸을 지정한다.
useradd defaults file
# 기본 그룹은 GID 100 지정
# [기본 정책] USERGROUPS_ENAB=YES
GROUP=100
# 사용자 홈 디렉터리가 생성되는 경로 지정
HOME=/home
# 비활성화 기간 ( -1 : 사용하지 않음 )
INACTIVE=-1
# 계정 만료 일자( ex) 2019-12-31 )
EXPIRE=
# 사용자 SHELL
SHELL=/bin/bash
# 환경설정 파일 경로
SKEL=/etc/skel
# 메일함 생성 여부
# /var/spool/mail
CREATE_MAIL_SPOOL=yes

#>useradd [option ..] [user_name]
-u [uid] UID 지정
-g [group_name] 기본 그룹 지정
-G [group_name] 그룹 추가
-c [comment] Comment 지정
-d [home_path] 홈 디렉터리 경로 지정
-s [shell] SHELL 지정
이것도 설명할게 따로 없긴 하네요 위에 나온 그대로인 명령어이니까요
새로운 ttestt라는 유저를 ming을 기본 그룹으로 지정해서 생성해봅시다

#> useradd -g ming ttestt로 ttestt의 기본 그룹을 ming의 그룹에 속하게 설정하고 생성하였습니다. 방금 배운 su로 방금 만든 ttestt로 돌아와서 #> id라는 명령어를 통해 자신의 UID, GID 등을 확인해 봅시다 그러면 gid=1000(ming)으로 ming 그룹에 소속되어 있는 걸 확인할 수 있습니다.
사용자 수정
#>usermod [option] [user_name]
-u [uid]
-g [group_name]
-G [group_name]
-c [comment]
-d [home_path]
-s [shell]
사용자의 홈 디렉터리 uid, gid, 그룹 이름 등을 수정할 수 있는 usermod 명령어입니다
위에 /etc/default/useradd 파일에 확인하였듯이 useradd 명령어로 신규 유저가 생성되면 HOME=/home 이런 식으로 그 유저의 홈 디렉터리가 생깁니다


/home 디렉터리를 보니 ttestt라는 ttestt의 홈 디렉터리가 보입니다 또
ls -d ~ (-d 경로 정보를 보는 옵션) (~ 은 홈 디렉터리) 명령어로 확인해 봐도
ttestt 유저의 홈 디렉터리가 잡혀있는 것이 보입니다.
이 유저의 홈 디렉터리를 변경해 봅시다


usermod -d로 ttestt 유저의 홈 디렉터리를 /test 파일로 옮긴 후
su 명령어로 ttestt 유저로 접속을 했습니다 ls -d ~로 확인해 보니 홈 디렉터리는 설정해 둔대로 잡아주었는데 어째선지 프롬프트가 bash-4.2 이렇게 깨져서 나옵니다
그건 바로 유저가 생성될 때마다 유저의 홈 디렉터리에 유저의 기본 설정 숨김 파일이 같이 생성되는데 이 파일이 같이 안 딸려왔기 때문입니다

이 파일들 말입니다 ttestt 유저 홈 디렉터리에 있는 ttestt 유저의 정보가 같이 안 딸려왔기 때문에 프롬프트가 깨지고 정보도 잃어버린 것입니다

다시 ttestt 유저의 홈 디렉터리를 원래 자기 집? 인 /home/ttestt로 돌려놨더니 프롬프트가 정상적으로 출력되는 걸 확인할 수 있습니다.
사용자 삭제
#>userdel [option] [user_name]
-r [홈 디렉터리까지 삭제]

뭐 그냥 유저를 삭제하는 명령어입니다 옵션 -r 을 사용 안 하면 해당 사용자의 홈 디렉터는 삭제가 안되니 찌꺼기가 남지 않게 -r 옵션을 같이 사용하여 삭제하도록 합시다
[보안 가이드라인]
--> 동일한 UID 사용 금지
--> root를 제외한 사용자 UID '0' 금지
'Linux 2급' 카테고리의 다른 글
리눅스 기초[특수 권한] (sudo, setuid, setgid, sticky bit) (0) | 2023.11.02 |
---|---|
리눅스 기본 명령어 그룹관리, password 관리 (groupmod,groupadd, groupdel, groupmems, chage, id, passwd) (0) | 2023.11.02 |
리눅스 사용자 환경설정 파일, 실행파일(GID, UID, echo, passwd) (0) | 2023.11.02 |
리눅스 지역변수,전역변수,알리아스 (Alias) (0) | 2023.11.02 |
리눅스 권한 (umask, chmod), symbolic (심볼릭링크x) (0) | 2023.11.02 |