useradd [Option] [Username]
1번에서 추가한 계정에 대한 Password를 설정해줘야 한다.
만약 설정하지 않을 경우 해당 Username으로 로그인할 수 없게 된다.
passwd [Username]
usermod [Option] [Username]
userdel [Option] [Username]
id [Option] [User]
# User를 입력하지 않을 경우 현재 로그인한 계정의 User 정보를 출력
여기에 "Effective ID"와 "Real ID"라는 새로운 개념이 나타난다.
Real User는 프로세스를 실행했을 경우 명령어를 실행시킨 User이고 Effective User는 프로세스가 실행되면서 Access 할 파일 등에 대한 권한을 가지는 user이다.
대부분의 경우 Real User와 Effective User가 같으며 만약 둘이 다를 경우 꽤 복잡한 조건이 필요하다.
먼저 A라는 파일이 777(rwxrwxrwx) 권한을 가지고 있고 A 파일을 실행시킬 경우 770(rwxrwx---) 권한을 가지는 B 파일이 수정된다고 가정하자.
만약 Other에 속하는 사람이 A 파일을 실행시켰다고 가정하자. 이 때 A 파일 자체는 Other도 실행시킬 수 있으므로 실행은 되겠지만 B 파일에 대해서는 어떤 작업도 수행하지 못하므로 권한 문제가 발생할 것이다.
이때 Program에 "chmod u+s A"를 통해 실행 권한을 "rwsrwxrwx"로 만들 수 있다.
이 경우 A 파일을 실행하는 Real User는 Other에 속하는 사람이지만 Effective User는 파일의 Owner로 간주되어 프로세스 전체를 실행할 수 있는 것이다.
(물론, Other에 속하는 사람은 여전히 A 파일을 제외하면 B 파일에는 접근 불가하다)
users
Linux에는 User 이외에도 Group이라는 개념이 있다.
회사에서 부서 사람들만 볼 수 있는 파일을 만들 듯 Multi-User OS인 Linux에서도 특정 User들에게 파일을 공유하고 싶을 수 있는데 이때 특정 User들을 Group으로 묶어 Group 내 사람들은 파일에 접근할 수 있게 만드는 것이다.
Group은 따로 설정하지 않을 경우 기본적으로 User를 생성할 때 Username과 동일한 이름으로 같이 생성된다.
groupadd [Options] [GroupName]
gpasswd [Option] [GroupName]
groupmod [Option] [GroupName]
groupdel [Option] [GroupName]
groups
User들에 대한 정보는 /etc/passwd, 암호(Password)에 관한 정보는 /etc/shadow, Group에 관한 정보는 /etc/group에 저장되어 있다.
이 파일들에 접근하여 직접 User와 Group들에 대한 설정을 수정해줄 수도 있다.
/etc/passwd & /etc/group은 모두 Root 계정이 소유하고 있는 파일들이며 644(rw-r--r--)의 권한을 가지고 있으므로 Root 계정만 파일을 수정할 수 있다.
/etc/shadow는 한 층 더 중요한 정보로써 640(rw-r-----)의 권한을 가지고 있어 Root 계정이 아닌 계정은 파일을 읽을 수 조차 없다.
Username:Password:UID:GID:Comment:Home Directory:Login Shell
Username:$alogorithm_id$salt$암호화된 패스워드:마지막 Password 변경일:Password 최소 사용기간:Password 최대 사용기간:경고:비활성화:만료일
Group Name:Password:GID:그룹에 속한 사용자 이름들
위 3개 파일들을 형식에 맞게 수정하여 User 및 Group에 대한 설정값을 직접 변경할 수 있다.
이후에 배울 Linux는 네트워크에 관련된 설정들이다.
필자는 Linux 네트워크 기능 활용법을 알아보기 전에 (면접 준비도 겸해서) 네트워크 공부를 먼저 하는게 좋다고 생각하여 한동안 네트워크 관련 공부를 하기로 결정했다.