각각의 프로세스는 프로세스 ID를 가진다(PID). 새로운 프로세스들은 exec 또는 fork에 의해 생성된다. 각 프로세스는 real UID/GID 와 effective UID/GID와 관련있다.
real UID는 부모 프로세스로부터 물려받는다. 전형적으로 그것은 로그인한 유저의 UID이다.
실행 파일이 수행되면서 프로세스가 만들어질 때, 프로세스를 생성시킨 사용자의 UID를 real UID라 하고, 생성된 프로세스가 가지는 UID를 effective UID라 한다. 일반적으로는 real UID와 effective UID는 같다. 그리고 프로세스는 effective UID의 권한으로 수행된다
6.3.1 Login and Passwords
유닉스에서 유저는 usernames로 신원확인하고 passwords로 인증된다.
시스템이 부팅되었을때, 로그인 프로세스는 root로 시작된다.
한 유저가 로그인할 때, 이 프로세스는 username과 password를 확인한다.
확인이 성공하면, UID/GID는 그 유저로 바뀌고, 그 유저의 로그인 shell이 실행된다.
Root 로그인은 /etc/ttys에서 지정된 터미널들로 제한될 수 있다.
최근 한 유저가 접속했다는 기록이 /usr/adm/lastlog에 기록되고, finger 명령어로 그 정보를 볼 수 있다.
많은 유닉스 시스템에서 password는 8글자로 제한된다.
취약한 패스워드 사용을 예방하는 패스워드를 선택하도록 좋은 습관을 지원하는 tool들이 존재한다.
password는 모든 0 블록을 시작값으로 하고 password를 key로 하여 조금 변형된 DES 알고리즘으로 25번 반복한 crypt 알고리즘으로 암호화 된다.
암호화된 password들은 /etc/passwd 파일에 저장된다.
한 유저에 대한 password가 비어 있을 때, 그 유저는 로그인시 password를 입력할 필요가 없다. password 필드가 *로 시작했을때, 유저는 로그인할 수 없다.
왜냐하면 그런 값들이 비어있는 password에 one-way function를 적용한 결과일 수 없기 때문이다.
이건은 유저의 계정을 쓸모없게 하는 흔한 방법이다.
password들은 passwd(1) 명령어를 사용하여 바뀐다.
만약 당신이 자리에서 잠시동안 떠나 있는 동안에 누군가 다른사람이 너의 암호를 바꾸려 할 경우에 대비하여 먼저 너의 오래된 password입력을 요구 받는다.
이후로 password가 입력되었을 때 스크린상에 문자가 결코 보여지지 않는다. 또한 당신이 생각한데로 입력했는지를 보장하기 위해 새로운 암호는 두번 입력할 것을 요구받는다.
바뀐 후에는, 당신은 새로 로그인하거나 su(1) 명령어를 사용하여 그 효력을 확인할 수 있다.
6.3.2 Shadow Password File
Security-conscious versions은 password 보안에 대한 준비에 따라 제공된다.
etc/passwd 파일은 읽히기 쉽다.
따라서, 적은 password file을 복사해서 off-line dictionary attack으로 password에 대해 찾는다.
이러한 취약점을 없애기 위해, password는 shadow password file에 저장된다.
예를 들면, /.secure/etc/passwd 로 오직 root만 접근 가능하다.
이 파일은 password aging과 automatic account locking을 위해 사용된다.
파일 기재는 9필드를 포함한다.
username
password
date of last change 마지막 변경일자
minimum number of days between password changes 암호 변경 사이의 최소 일 수
maximum number of days the password is valid 암호가 허용된 최대 일 수
how many days in advance the user is warned that the password will expire
사전에 유저에게 며칠 있으면 암호가 만기될지 경고받는다.
number of days the user may be in active 유저가 활동중인 일수
date when login may no longer be used 로그인 하지 않은 일 수
reserved 예비
Programming/보안