#사용자 관리
- /etc/passwd : 사용자의 정보가 들어있는 파일
-지워지면 사용자 홈 디렉터리도 그냥 디렉터리와 파일로 남음(user의 기능 X)
- /etc/skel : 사용자 계정을 구성하는 기본적인 뼈대가 들어있는 디렉터리
- /etc/group : 그룹 정보의 저장장소
#>passwd [사용자이름] : 새암호를 설정할수있다 (root일 때만 가능)
#>su [사용자 이름] : 원하는 사용자로 변경가능 (서버자체로 접속했을 때만 가능)
#>
맨 아랫줄을 보면 구분을 : 으로 한 라인이 있다
user : x : 1000 : 1000 : user : /home/user:/bin/bash
1 2 3 4 5 6 7
1) 사용자 이름
2) 사용자 패스워드 (사용하지 않음→pw가 지정되지 않은 것과는 다름, pw파일은 /etc/shadow파일에 있음)
3) UID( 사용자의 ID) 사용자를 부를때의 고유 숫자 (0은 root(관리자) 것이다) -> 원래 근본은 1000 user는 닉네임같은것
4) GID( group ID) : 리눅스에서는 사용자들은 그룹을 가지고있다.
만들어지는 사용자들은 그룹을 지정해주지 않으면 자기 자신의 이름과 같은 그룹을 가지고있다.
레드헷 계열에서는 (사용자 생성시 따로 지정되는게 없으면 UID, GID는 1000번부터 시작)
5) Comment : 비고, 주석같이 사용되는 메모
6) 사용자의 홈 디렉터리
7) 사용자 쉘 : 사용자가 사용하는 쉘을 나타냄
(예전에는 각각의 기능마다 특화된 쉘이 있었지만 지금은 거의다 bash를 사용, ex) csh, ksh ---)
#사용자가 만들어질 떄 생성되는 파일들 /etc/skel
root /home 에 보면 파일들이 사용자가 생성될 때 자동으로 생성되는 숨김파일 들이 있다.
user /home을 한번 지웠었다
그래서 그런지 -bash-4.2$ 로 프롬프트 창이 변했다...
따라서 /etc/skel에 사용자 생성시 자동으로 들어가는 파일 전체를 복사한다
cp /etc/skel/.* /home/user
3개 디렉터리 . .. .mozilla는 디렉터리들마다 고유 파일이기에 옮길 필요가 없고
skel안의 파일들이 .file 즉 .으로 시작하는 숨김파일이므로 옮길때 .*(와일드카드앞에 .을 붙여준다)
옮겨준뒤 사용자 재로그인을 하면 원래 모양으로 돌아온다
#사용자 만들기
root로 접속 후 #>vi /etc/passwd
맨 아래줄에 입력을 시작한다
user01:x:1001:1001:user01:/home/user01:/bin/bash 입력후 ESC > :wq
#>passwd user01 : 새로만든 사용자 user01의 패스워드를 지정한다
ctrl + alt + F2로 터미널을 바꾼 후 user01로 접속해본다
passwd파일에 user01을 등록해놨기에 접속은 됬지만 아까 user와 같은 현상으로 커멘드가 -bash-4.2$ 로 되어있다.
이때 몇가지 오류가 발생한다 > 오류를 해결하기 위해서 다시 첫번째 터미널(ctrl + alt + F1)로 이동해서 root로 접속한다.
1) 사용자의 홈디렉터리 생성
#> mkdir /home/user01
2) 사용자의 뼈대 생성( skel폴더 복사)
#> cp /etc/skel/.* /home/user01
3) 사용자(user01)의 그룹 1001 지정
#> vi /etc/group : 그룹을 관리하는 파일을 vi편집기로 연다
맨아랫줄에 추가 user01:x:1001: > ESC > :wq
다시 터미널을 바꿔서 user01로 로그인해보면 오류가 사라져있다.
자 그럼 명령어를 아무리 아무리!!!!! 쳐도 명령어를 실행하지 않는다
이유는 권한이 없기 때문이다 > 아주 중요한 부분이다. 권한설정을 잘해줘야 보안에 첫걸음을 디딘것이다.
root로 돌아가서 권한설정을 해준다 > /home 파일의 주인을 설정해주면 된다
~ #> cd /home && ls -l
#> chown user01. /home/user01
#> ls -l
소유자가 user01로 변경되어 이제 user01사용자가 user01 home디렉터리의 주인이 되었다
다시 user01 터미널로 돌아가서 명령어를 쳐보면 된.다.
#사용자 생성2 : 위에 방법들이 너무 힘들었다 ...
#>useradd [생성될 유저 이름] : 위에 과정들을 명령어 하나로 만들어준다.
#>useradd test01 && passwd test01
#> tail -3 /etc/passwd && ls -l /home/
권한또한 해결 되어있는 것을 볼 수 있다.
default 값으로 모든 값들을 지정해서 만들어 주는데 옵션에 따라 지정이 가능하다
[명령어 : useradd의 옵션]
-u <uid_number> UID 지정 #>useradd -u 1100 test02
-g <gid_number> GID 지정 #>useradd -g 1002 test03 그룹 확인 #> tail -4 /etc/group
>>test03의 그룹 1002는 먼저 생성한 user02의 그룹과 동일하기에 따로 그룹이 생성되지 않았다
-c <command> : comment 지정 #>useradd -c "linux user test04" test04
-d <homedir_path> 홈디렉터리 지정 > default값으로 path가 /home 아래로 들어가기에 보안에 취약하다
1) /(최상위경로에) linux폴더 생성 > -d 옵션을 사용해서 유저생성
이렇게 사용해 주시면 됩니다.
옵션을 여러개 사용할 수 도있지만 귀찮고 변경하는경우에도 직접접근의 필요성으로 사용자를 수동으로 만들어 지는것을 연습해 봤습니다.
#useradd 기본값 #vi /etc/default/useradd
파일을 열었을 때 라인앞에 #이 붙어있으면 그 라인은 주석처리가 된다.
GROUP = 그룹
HOME = 홈 디렉터리
SHELL = 쉘 번역기 디렉터리
SKEL = useradd를 만들었을 때 같이 만들어지는 디렉터리(뼈대)
CREATE_MAIL_SPOOL = 유저간의 메일함 만들기
#ls -l /var/spool/mail
mail...함 ?? mail함은 유저들간의 정보를 주고받을 수 있는 디렉터리이다.
value를 yes로 해놓으면 자동으로 생성되나, user을 직접만든경우 메일함이 필요한 경우 직접 만들어야 한다.
--> but 로그인시 메일함이 자동으로 만들어진다.
자동으로 만들어진 메일함의 디렉터리 이름은 유저이름과 동일하다
@useradd 의 기본값 file을 통해서 user들이 생성되니깐 기본값을 바꾸는 옵션도 있을겁니다.
#>useradd -D -b <path> : -D의 -b옵션 : home디렉터리 경로를 path경로로 바꾼다
home 디렉터리의 경로를 바꾸었으니 이제부터 생성되는 유저들은 /linux폴더에서 생성됩니다.
#useradd defaul option -D
-b : home
-s : shell
-g : group
-f : inactive
-e : expire
skel, mail함같은 경우 옵션이 없기에 vi편집기를 이용해서 직접편집해주어야 한다.
#>userdel test01 : test01사용자 삭제 ..
passwd와 group만 삭제가 완료되고 홈 디렉터리와 메일함은 남아있네요.
이때 옵션 -r을 사용해서 디렉터리 까지 전부 삭제시켜줍니다. #> userdel -r guest
이때 gid는 기본 값일때만 삭제됩니다.
예를 들어 2명의 사용자가 그룹을 사용중일때 한 사용자가 사라진다면 그룹이 사라 지지 않는다는것을 볼 수 있습니다.