Linux Shadow Password HOWTO.txt
59KB · 1,912 lines
Linux Shadow Password HOWTO
Michael H. Jackson, mhjack@tscnet.com. (������) �����,
v1.3, 3 April 1996, ������ 1997�� 2�� 1��
�� ������ Linux Passwd Shadow Suite�� ��� ���, ��ġ�ϰ�,
�ʱ�ȭ�ϴ� ���� �����ϰ� �ִ�. ���� user password�� �ʿ�� �ϴ� net?
work daemon�̳� software�� ���, �缳ġ�ϴ� �͵� �ٷ�� �ִ�. ��
software�� Shadow Suite�� �Ϻΰ� �ƴ����, Shadow Suite�� �����ϵ���
�� compile�� �ʿ䰡 �ִ�. ��߿��� program�� shadow�� �����ϴ� pro?
gramming example�� �ִ�. ��� ���� �����鿡 ���� ��� �� ���̿� �ִ�.
______________________________________________________________________
� ��
1. ���鼭.
1.1. ��� �۰� �ٸ� �͵�.
1.2. �� ������ �ֱ� ���...
1.3. Feedback.
2. �� passwd file�� ���ܾ� �ϴ°�?
2.1. passwd file�� �����ϱ⸦ ����մϱ�?
2.2. /etc/passwd file�� ���
2.3. shadow file�� ���
2.4. crypt(3)�� ���ؼ�.
3. Shadow Suite ���.
3.1. Linux�� Shadow Suite�� ����
3.2. ��� Shadow Suite�� ��ϱ�?
3.3. Shadow Suite���� ���� �ִ� �Ͱ��� ��...
4. program�� �����.
4.1. ����Ǯ��.
4.2. config.h file�� ������ �����մϴ�.
4.3. �� program�� backup copy�� �����.
4.4. make�� ����
5. ��ġ
5.1. ��� �߸��ž� �� ��츦 ����ؼ� boot disk�� �غ��սô�.
5.2. �ߺ��� man page�� �����ϱ�
5.3. make install�� ����
5.4. pwconv ����
5.5. npasswd�� nshadow�� �̸��� �ٲ۴�.
6. patch�ϰų� upgrade�� �ʿ䰡 �ִ� �ٸ� program��
6.1. Slackware adduser program
6.2. The wu_ftpd Server
6.3. ǥ�� ftpd
6.4. pop3d (Post Office Protocol 3)
6.5. xlock
6.6. xdm
6.7. sudo
6.8. imapd (E-Mail
6.9. pppd (Point-to-Point Protocol Server)
7. Shadow Suite ����ϱ�
7.1. ���ڰ� �߰�, ����, ��
7.1.1. useradd
7.1.2. usermod
7.1.3. userdel
7.2. passwd ��ɰ� passwd ���� ���ϱ�.
7.3. The login.defs file.
7.4. Group passwords.
7.5. �ϰ��� ���� program��
7.5.1. pwck
7.5.2. grpck
7.6. Dial-up passwords.
8. C program�� Shadow�� �����ϵ��� ����̱�
8.1. Header files
8.2. libshadow.a library
8.3. Shadow ����ü
8.4. Shadow �Լ���
8.5. Example
9. ��� ���� ������.
10. ���۱ǿ� ���ؼ�.
11. ���縻�� �� �ۿ�...
______________________________________________________________________
1. ���鼭.
�̰�� Linux Shadow-Password-HOWTO�̴�. �� ��� Linux system����
shadow password�� �� �����ư�, � ����� �����ϴ�� ���ϰ� �ִ�.
Shadow Suite�� ��� ���� ��� ���°��� ���� �����鵵 ����ϰ�
�ִ�.
Shadow Suite�� ��ġ�ϰ�, ���� utility�� ����� ��, �ݵ�� root��
login�ؾ� �Ѵ�. Shadow Suite�� ��ġ�� ��, system software�� ��ȭ��
�־�� �� ��̴�. ����, �����ϴ� ��� program�� backup ���纻��
����� ���⸦ ����� �ǰ��Ѵ�. ����, ����ϱ� ���� �ȳ����� �а�
�����ϱ⸦ ���Ѵ�.
1.1. ��� �۰� �ٸ� �͵�.
�� �ٿ��� �͵�:
shadow�� �� ��ġ��� ����� �ʴ� ����� ���� sub-section
xdm�� update�ϴ� �Ϳ� ���� sub-section
�۾��� Shadow Suite�� ���� �߰��ϴ� ���� ���� section
��� ���� ������ ���� section
���� �� update�� �͵�:
Sunsite�� html ����� ����
Makefile�� -lshadow�� ����̵��� wu-ftp�� ���� section�� ����
ö�ڿ� ���ٽ����� ����
ELF�� �����ϵ��� wu-ftpd�� ���� section ����
�������� login program�� ���� ������ �ݿ��ϵ��� update
Marek Michalkiewicz�� Linux Shadow Suite�� ���ϵ��� update
1.2. �� ������ �ֱ� ���...
�� ������ �ֱ���� anonymous FTP��
sunsite.unc.edu
/pub/Linux/docs/HOWTO/Shadow-Password-HOWTO
�Ǵ�:
/pub/Linux/docs/HOWTO/other-formats/Shadow-Password-HOWTO{-html.tar,ps,dvi}.gz
�� �����, �Ǵ� Linux Documentation Project Web Server
<http://sunsite.unc.edu/mdw/linux.html>�� ���ؼ�, Shadow-Password-
HOWTO <http://sunsite.unc.edu/linux/HOWTO/Shadow-Password-HOWTO.html>,
�Ǵ� ��(<mhjack@tscnet.com>)���� ���� �� �� �ִ�. �� ���
newsgroup: comp.os.linux.answers�� �� �Խõȴ�.
�� ������ Shadow-YYDDMM package�� ��Եȴ�.
1.3. Feedback.
��(Michael H. Jackson <mhjack@tscnet.com>)���� � �ǰ�, ���ο� ��,
����� �����ֱ� �ٶ���. ���� ���� ���� �͵� �������, �� ������
���� �ֽ� ������ ���, �߸��� �ٷ� �� �� �ִ�. � ������ ���
��쿡�� ������ ���� ����ֱ� �ٶ���. �ֳ��ϸ� ���� newsgroup�� ���
�ö�� �ʱ� �����̴�.
2. �� passwd file�� ���ܾ� �ϴ°�?
�⺻������, ��κ�� Linux ������� �غ�� Shadow Suite�� ������
�ʴ´�. Slackware 2.3, Slackware 3.0, �ٸ� �� �˷��� ��������
���ϴ�. �̷��� �ϴ� ����� �ϳ��� ������ Shadow Suite�� ���� �ް�
������ ��쿡 ���� ���۱�� ��Ȯ��� �ʱ� �����̴�. Linux�� ����ϱ�
���ϰ� ���(CD-ROM ���ó��)�� ��, �� ���� �� ���� �� ���
����ϴ� GNU�� ���۱�(Copyleft��� �Ҹ��� �Ѵ�)�� ����Ѵ�.
���� Shadow Suite�� �����ϴ� Marek Michalkiewicz
<marekm@i17linuxb.ists.pwr.wroc.pl>���� ������ ����ϴ� BSD��
���۱�� ������ ���ڷκ��� source code�� �Ҵ�. ����, �����
���۱� ������ �ذ�Ǿ, ���Ŀ� ������ ��������� password�� shadow��
�⺻���� ���� �� ��� ��̴�. ������ ��� ������ ��ġ�ؾ� �ȴ�.
CD-ROM���κ��� ������� ��ġ�ߴٸ�, ��� ������� Shadow Suite��
��ġ��� �ʾҴ���, CD-ROM���� Shadow Suite�� ���ϴ� ��� file���
��� ��̴�.
��·��, Shadow Suite 3.3.1, 3.3.1-2, shadow-mk�� login program�� suid
root�� ���� program�� ���� ���� �ְ�, �� �̻� ���� ���ƾ� �Ѵ�.
��� �ʿ��� file�� anonymous FTP�� WWW�� ���ؼ� �� �� �ִ�.
Shadow Suite�� �� ��� Linux system������, password�� ����� ����
������ /etc/passwd�� �����Ǿ� �ִ�. password�� ��ȣȭ�Ǿ
(encrypted) ����ȴ�. ���� ��ȣ��� ���������� ���´ٸ�, �״�
password�� encrypt�� ���̶�� ���ٴ� encode�� ������ �Ǿ� �ִ�.
����� crypt(3)�� ������ ��, text�� null�� �ϰ� password�� key��
����ϱ� �����̶�� �Ѵ�. ���� �� ���������� encode��̶�� ���� ��
��̴�. (����� : ������ encode�� encrypt�� ���� ���� ����ϰ�
����ϴ�. - ��ȣ�� �ٲ㾲�� - ��� ��Դϴٸ�, ��ȣ��� �����Ͻ�
�е鿡�Դ� ���ӽ��� �ٸ� �Ͱ����ϴ�. �̿� ���� ���� �ٶ��ϴ�.)
password�� encode�ϴ� �� ���Ǵ� algorithm�� �������δ� �ܹ��� hash
function�� ���� ������ ���ֵǰ� �ִ�. �� ��� �������δ� ����ϱ�
���ϰ� �Ǿ� ����� ������ ����� �ſ� ���� �Ǿ� �ִ�. ����
algorithm�� ���� �ڼ��� ���� section 2.4�� crypt(3) manual page��
�ִ�.
���ڰ� password�� �����ϰų� �Ҵ��� ��, password�� salt(�ұ�?)���
�Ҹ��� ������� ������ ���� ���� encode�ȴ�. �̰�� � password��
4096������ �ٸ� ������ ����� �� �ִٶ�� ����. salt ����
encode�� password�� ���� ����ȴ�.
���ڰ� login�ϰ� password�� ����ϸ�, salt�� encode�Ǿ� �����
password���� ���� ���´�. �״�� �Էµ� password�� salt�� ����
encode�ȴ�. ����, encode�Ǿ� ����� password�� ���Ѵ�. �� ��,
���� ���ٸ� ���ڴ� ����ȴ�.
�������ϰ� encode�� password�� ȹ���ؼ� ������ password�� �ǵ�����
��� ����δ� ����(���� �Ұ�������� �ʴ�). ����, ���� ���
���ڰ� ����ϴ� system�̶��, ��� ��� password�� �ϻ�ܾ��
�̷�� �ִ� (�Ǵ� ������ �����̴�).
system cracker��� �̷� ��� �˰�, ��� ���̴� password�� �ܾ��
���� ������ 4096���� salt ���� ����ؼ� encrypt�� ���� ��̴�.
�״���� �� ��� database�� �ִ� ���� /etc/passwd file��
encode�� password�� ���� ��̴�. �ϴ� �ϳ��� ��ġ�Ѵٸ� ��
�Ǵٸ� ���� password�� ������ �Ǵ� ���̴�. �̴� dictionary
attack(�� ����?)�̶� �� �Ҹ����, system�� �㰡��� ��� ����� ��
�� ���� ���� ������ ���� �ϳ��̴�.
�����غ���, 8���ڵ� password�� 4096 * 13���ڿ��� encode�ȴ�. ����,
400,000���� �Ϲ� �ܾ�, �̸�, password, �ణ�� ������ �̷�� ����
4G Byte hard�� ���� ä�� ��̴�. ����ڵ� �̷� ������ ��� �ʿ��ϰ�,
�´� �� �˻��� �� �ʿ䰡 �ִ�. ���� 10000 �����Ϸ� �̷� 4G byte¥��
hard�� ���� �� �ִٸ�, ��κ�� system cracker�鿡�Դ� ����ϴ�.
����, cracker�� ���� /etc/passwd file�� �̹� ������ �ִٸ�, ��
/etc/passwd file�� ��ԵǾ� �ִ� salt ���� ������ ���� encode�ϸ�
�ȴ�. �� ���� 200 Megabyte�� ������ 486�� computer�� ������ �ִ�
���� û�ҳ�̸� �̿��� �� �ִ�.
����� ���� ��������, crack(1)�� ���� utility�� �ּ��� ���� ����
���ڸ� Ȯ���ϰ� �ִ� system�� password�� 2�������� �� �� �ִ�
(user�� �ڱ� �ڽ�� password�� �� �� �ִ� system�̶�� �Ѵٸ�).
/etc/passwd file�� user ID�� group ID�� ���� ��� system
program���� ���� ������ ������ �ִ�. �Դٰ� /etc/passwd file�� "���
�б� ����"���� ���� �־�� �Ѵ�. /etc/passwd file�� �ƹ��� ���� ���ϰ�
�ϸ�, ���� ��� ls -l ���� ��� user �̸���� user ID�� ����ϴ�
��� ���� �� ��̴�!
Shadow Suite�� password�� �ٸ� file(�밳 /etc/shadow)�� ��ġ��Ŵ���ν�
�� ������ �ذ��Ѵ�. /etc/shadow file�� �� ������ �� �� ������ �Ǿ�
�ִ�. root���� /etc/shadow�� �� �� �ְ�, �� �� �ִ�. � program
(xlock ����)�� password�� �ٲ� �� �ִ� �Ǹ��� ����� �ʴ´�.
password�� Ȯ���� �� ����� �ȴ�. �̷� program�� suid root��
����ǰų�, /etc/shadow�� �б⸸ �� �� �ִ� shadow�� group�� �ٲپ�
�ָ� �ȴ�. ���� program�� sgid shadow�� �����ų �� �ִ�.
password�� /etc/shadow file�� �Ű� ����ν�, dictionary attack�� �ϱ�
���ؼ� encode�� password�鿡 �����ϴ� ����ڵ� ȿ�������� ������ ��
�ִ�.
�߰������� Shadow Suite�� ��� ����� ���� �� ������ �ִ�:
o login �⺻����(/etc/login.defs)��� �غ�� configuration file
o user �� �� group�� �߰�, ����, ���ϴ� utility��
o password�� ��ȿ�Ⱓ ������ ���� ���
o �� ��ȿ�� ����
o group password��� shadow (���û���)
o 2�� ��̸� ������ passwrd (16���� password) (����� ���)
o user�� password�� �� ��, ������ ��
o ��ȭ���ӿ� password
o ���� ��� program (����� ���)
Shadow Suite�� ��ġ�ϴ� ��� �� �� ����� ��ȭ�� system���� �����
�ش�. ����, Linux system�� ����� ��ȭ����ִ� �ٸ� ���� �͵��
�ְ�, ���� �ñ������ �ٸ� ���� ������ ���õ� ���� �ٷ�� Linux
Security HOWTO series�� ���� ��̴�.
�˷��� ����� ����� Linux ���� ������ ���� ������ ����� Linux
Security home page <http://bach.cis.temple.edu/linux/linux-
security/>�� �湮�ϱ� �ٶ���.
2.1. passwd file�� �����ϱ⸦ ����մϱ�?
����� ���� ȯ��鿡����, Shadow Suite�� ���� ���� �� �� ����:
o system�� ���� ���� ������ ��� �ʴ�.
o ���� system�� LAN������ ��ǰ� �ְ�, network��� �ٸ� ��迡
���� �̸��� password�� ��� ���ؼ� NIS(Network Information
Services)�� ����Ѵ�. (�� ������ �� ��ǰ� �ְ�, - �� �̻�
�� ������ ������ �Ѵ´� - ����� �״�� ���� ��ȭ��Ű�⸦ �����
�ʴ´�.)
o ���� ��谡 NFS(Network File System), NIS �Ǵ� �ٸ� ���� ����
���ڸ� Ȯ���ϱ� ���� terminal server�� ���ǰ� �ִ�.
o ���ڸ� Ȯ���ϴ� �ٸ� software�� ����ϰ� �ְ�, �� �� �ִ� shadow
version�� ����. ����, source code�� ���� ��� �ʴ�.
2.2. /etc/passwd file�� ���
shadow�� ���ʸ� ��� ��� /etc/passwd file�� ����� ���� �����Ǿ�
�ִ�.
username:passwd:UID:GID:full_name:directory:shell
����Ҵ�:
username
���� (login) �̸�
passwd
encode�� password
UID
���ڷ� �� user ID
GID
���ڷ� �� �⺻ group ID
full_name
user�� ��� �̸� - ����� �� field�� GECOS (General Electric
Comprehensive Operating System: �Ϲ� ����� ���� � ü��?)
field��� �Ҹ����, ��� ��� �̸����ٴ� �ٸ� ������ ���� ��
�ִ�. Shadow ��ɵ� manual page�� �� field�� comment�� �ٷ��.
directory
����� home directory (Full pathname)
shell
����� login shell (Full pathname)
���� ���:
username:Npge08pfz4wuk:503:100:Full Name:/home/username:/bin/sh
Np�� salt�̸�, ge08pfz4wuk�� encode�� password�̴�. encode��
salt/password�� kbeMVnZM0oL7I�� �� ���� �ְ�, ��� ���� password��
����Ų��. ���� password�� ���ؼ� 4096���� �ٸ� encoding�� ������ ��
�ִ�. (���� �� password�� 'password'�̸�, ���� ���� password�̴�).
shadow suite�� ��ġ�Ǹ�, /etc/passwd file�� ���ó�� �ٲ��:
username:x:503:100:Full Name:/home/username:/bin/sh
�ι�° field�� x�� �ƹ� �͵� �ƴϴ�. (������ ����ϰ� ��� ��̴�.)
/etc/passwd file�� ���� ���� �ٲ� �ʾҴ�. ��� encode�� password��
������ ��� ��̴�. �̴� /etc/passwd file�� �б⸸ �� �� password��
�˻���� ��� program�� �ƹ� �̻�� ���ư��ٴ� ��� �ǹ��Ѵ�.
��� password�� shadow file(��κ� /etc/shadow file)�� ���ġ�ȴ�.
2.3. shadow file�� ���
/etc/shadow file�� ����� ���� ������ ���� �ִ�:
username:passwd:last:may:must:warn:expire:disable:reserved
�� ��Ҵ�:
username
���� �̸�
passwd
encode�� password
last
�ֱ�� password�� �ٲ� �� (1970, 1, 1�Ϻ��� ����� ����)
may
password�� �ٲ� ���, �� �ٲٱ� ���� ��ٸ��� ���� (���
password��� ���� �����Ⱓ)
must
��� password�� �ٲܾ�� �� ������ �Ⱓ (� password ��ȿ�Ⱓ)
warn
password�� ����DZ� ���� user���� �ٲ� ��� ����ϴ� �Ⱓ
expire
password�� ����� ��, user �� ���� �Ұ����ϱ�� �Ⱓ
disable
���� ��� �Ұ����ϰ� �� ��(1970, 1, 1�Ϻ��� ����� ����)
reserved
���ܵ�
���� ���� ��� ����� ����:
username:Npge08pfz4wuk:9479:0:10000::::
2.4. crypt(3)�� ���ؼ�.
crypt(3) manual ������ ���ϸ�:
"crypt�� password�� encrypt�ϴ� �Լ��̴�. �̴� Data Encryption
Standard algorithm�� ������, (��������) key�� � ����� ����
�̿�DZ� ��鵵�� �ణ�� ����� ����� �ִ�.
key�� ���ڰ� �Է��� password�̴�. encode�Ǵ� string�� ���� NULL�̴�.
salt�� a-zA-Z0-9./�� �̷�� ������κ��� �� �ι��ڷ� �̷��
���ڿ��̴�. �� ���ڿ��� 4096�� ����� �ϳ��� algorithm�� ȥ��������
���̷��� ����� ���δ�.
key�� �� ����� ��� 7 bit�� ������ν�, 56-bit key�� �־���. ��
56-bit key�� ����� ���ڿ���, �ݺ��ؼ� encrypt�ϴ� �� ���δ�. ����
13�� ASCII ���ڿ���, encrypt�� password�� ����Ų�� (ó�� �ΰ� ���ڴ�
salt �� �ڽ�̴�). ������ �Ź� ȣ��� ������ �ٽ� ���̴� ����
data�� ������.
���: key space�� 2**56, �� 7.2e16 ������ ������ �̷�� �ִ�. key
space�� ���� ����� ��� �Ŵ��� ���� computer�� ����ϸ� ������
��̴�. crack(1)�� ����, ��κ�� ����� password�� ��� key space��
Ư�� �κ�� ã�� software�� �ִ�. ����, �ּ��� password�� ������ ��,
��� ���̴� �ܾ �̸��� ���ϱ� �ٶ���. passwd program�� ����Ͽ�,
ã�� ���� password�� �����ϴ� �� �˻��ϱ⸦ �ٶ���.
DES algorithm, �� ��ü�� ���� crypt(3) interface�� ����ϴ� ��� �ٸ�
password ����� ���� � �ͺ��� �� ���� ������� ����� ������ �����
�ִ�. ���� ��ȭ�� ���ؼ� crypt(3)�� ����Ϸ��� �Ѵٸ�, DES�� ������
����: encryption�� ���� ���� å�� �θ� ���̴� DES library�� ���϶�."
(����� : ������ The DES algorithm itself has a few quirks which make
the use of the crypt(3) interface a very poor choice for anything
other than password authentication. If you are planning on using the
crypt(3) interface for a cryptography project, don't do it: get a good
book on encryption and one of the widely available DES libraries."
�Դϴ�. ��߿��� don't do it: get ...�κ�� �ſ� �ָ��մϴ�. it��
���� ����Ű�� ��� ��Ȯ��� �ʽ��ϴ�. �ϴ�, get ...�� ����ϴ� �����
����ϰ� ������ �ߴ� ��...)
��κ� Shadow Suite�� password�� ��̸� 16���ڷ� ��̴� code��
����Ѵ�. des�� �������� �̸� ������� �ʴ´�. �ֳ��ϸ� ���ݺθ�
encoding�� ��, �� password�� �Ĺݺθ� encoding�ϴ� �ܼ��� ���̱�
�����̴�. crypt�� ��Ĵ�ζ��, �� password�� ������ �ʴ� �ͺ��� ��
����� password�� ���� �� �ִ�. �����, ���ڰ� 16���ڳ� �Ǵ�
password�� ����ϱ� ���ٴ� ��鵵 �ִ�.
crypt ���� ȣȯ���� ���ϸ鼭, �� password�� �����ϰ� �� ��ȭ��
���(Ư�, MD5 algorithm)�� �� �� �ִ� ���� ������̴�.
encryption�� ���� å���� ����� ���Ѵ�:
"Applied Cryptography: Protocols, Algorithms, and Source Code in C"
by Bruce Schneier <schneier@chinet.com>
ISBN: 0-471-59756-2
3. Shadow Suite ���.
3.1. Linux�� Shadow Suite�� ����
�� SECTION���� �Ұ��ϴ� PACKAGE�� ������ ����. �������� �߰ߵǾ���
���ʷ� Shadow Suite�� ���� ���� John F. Haugh II�̴�.
Linux system���� ���Ǵ� ����δ� ����� ���� �͵�� �ִ�.
o shadow-3.3.1�� �����̴�.
o shadow-3.3.1-2�� Florian La Roche <flla@stud.uni-sb.de>���� ���ؼ�
Linux�� �°� �������, �� �� ����� ��� �ִ�.
o shadow-mk�� Linux�� ���߾� �����Ǿ� �ִ�.
shadow-mk package�� shadow-3.3.1-2 patch�� �����, John F. Haugh
II���� ���� ����� shadow-3.3.1 package�� ����ϰ� �ִ�. �ű �� ��
��ġ�� ���� Mohan Kokal <magnus@texas.net>������ ���� ��ġ��, Joseph
R.M. Zbiciak������ /bin/login�� -f, -h ���� ����� ������ login1.c
(login.secure)�� �� �ٿ�����, ��� �ٸ� ����� patch�� ����Ǿ� �ִ�.
shadow.mk package�� ��� login program�� ���Ȼ� ���� �־� ������
��ü�� ��̴�.
Shadow 3.3.1, 3.3.1-2, shadow-mk�� login program�� ���Ȼ� ���� �ִ�.
�� login bug�� login name�� ��̸� �˻���� �ʴ� ��� ����ϰ� �ִ�.
�� ��� �浹 �Ǵ� �� ���� ��� ���߽�Ű�� buffer overflow��
����Ų��. �� buffer overflow��, �� bug�� �Բ� shared library��
����ϴ� system���� � ���ڿ��� root ����� �شٴ� �ҹ��� �־�
�Դ�. ���� ��� �̷� ��� ������� ��ü������ �ŷ���� �ʰڴ�. ��
����� �̷� (bug�� �ִ�) Shadow Suite�� ��ġ�ؼ� ���ظ� ��� �� �ִ�
Linux system�� ����, Shadow Suite�� ���� ELF-��� ����ǿ��Ե�
�����ϱ� �����̴�.
�� ������ �ٸ� Linux ���Ȱ��� ������ ���� �� �ڼ�� �˰� �ʹٸ�, Linux
Security home page (Shared Libraries and login Program Vulnerability)
<http://bach.cis.temple.edu/linux/linux-security/Linux-Security-
FAQ/Linux-telnetd.html>�� ����϶�.
3.2. ��� Shadow Suite�� ��ϱ�?
���Ҹ��� Shadow Suite�� ��� BETA testing��̴�. ��·�� �ֱ� version��
����ϸ�, ����� login program�� ������ �ʴ´�.
package�� ����� ���� ����Ģ�� ���´�:
shadow-YYMMDD.tar.gz
YYMMDD�� Suite�� ��ǥ�� ��¥�̴�.
�� version�� Beta testing�� ������, �ᱹ Version 3.3.3�� �ɰ�̰�,
Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>�� ���ؼ�
�������� �ǰ� �ִ�. shadow-current.tar.gz
<ftp://i17linuxb.ists.pwr.wroc.pl/pub/linux/shadow/shadow-
current.tar.gz>���� �� �� �ִ�.
����, ����� ������ mirror site�鿡�� �� �� �ִ�:
o ftp://ftp.icm.edu.pl/pub/Linux/shadow/shadow-current.tar.gz
o ftp://iguana.hut.fi/pub/linux/shadow/shadow-current.tar.gz
o ftp://ftp.cin.net/usr/ggallag/shadow/shadow-current.tar.gz
o ftp://ftp.netural.com/pub/linux/shadow/shadow-current.tar.gz
��� ����ִ� version�� ����ϱ� �ٶ���.
shadow-960129���� ����� ���� version�� ���� ���� �ٶ���: �տ���
����� login ���� ���� �ִ�.
�� �������� Shadow Suite��� ���ϴ� ��� �� version�� ����Ų��. ����,
���� ����ϰ� �ִ� package��� �����Ѵ�.
�������, ��ġ �ȳ����� �ۼ��ϴ� ��, shadow-960129�� ����ߴ�.
����� shadow-mk�� ����ߴٸ�, �� version���� upgrade�� �ϰ�, �����
compile�ߴ� ��� �ٽ� �ϱ� �ٶ���.
3.3. Shadow Suite���� ���� �ִ� �Ͱ��� ��...
Shadow Suite�� ��� program�� ��üǰ�� ������ �ִ�:
su, login, passwd, newgrp, chfn, chsh, id
����, ���ο� program�鵵 �ִ�:
chage, newusers, dpasswd, gpasswd, useradd, userdel, usermod,
groupadd, groupdel, groupmod, groups, pwck, grpck, lastlog, pwconv,
pwunconv
���ٿ�, library: libshadow.a�� ���� password�� �����ϴ� program��
�ۼ��ϰų� compile�ϱ� ���� ��ԵǾ� �ִ�.
����, program�� ���� manual page�� �ִ�.
/etc/login.defs�� ��ġ�Ǵ� login program�� ���� file�� �ִ�.
4. program�� �����.
4.1. ����Ǯ��.
package�� ��� �� ó�� �� ��� Ǯ�� ��ġ�� ��̴�. package�� gzip����
����� tar (tape archive) ������ �Ǿ� ����Ƿ�, /usr/src�� �ű� ��:
tar -xzvf shadow-current.tar.gz
����, /usr/src/shadown-YYMMDD��� directory�� Ǯ�� ��̴�.
4.2. config.h file�� ������ �����մϴ�.
ù°, Makefile�� config.h�� �����Ѵ�:
cd /usr/src/shadow-YYMMDD
cp Makefile.linux Makefile
cp config.h.linux config.h
���� config.h�� ����. �� file�� ��� ���� ���� ���� ���Ǹ� ���
�ִ�. ���� �ǰ��� package�� ������ �ִٸ�, �ϴ� group shadow ������
������ �ʵ��� �ϱ⸦ ���Ѵ�.
�⺻����, shadow�� group password�� ����� �� �ִ�. �̸� �ٲٱ�
���ؼ� config.h�� #define SHADOWGRP�� #undef SHADOWGRP�� �ٲ۴�. ����
�� ������ �ʰ� ����� ��� ���Ѵ�. ���߿� ����� group
password�� group �����ڸ� ���Ѵٸ�, �ٽ� ��밡���ϵ��� �� ��
��compile�ϸ� �ȴ�. ���� ��밡����� ���ܵдٸ�, �ݵ�� /etc/gshadow
file�� ������ �Ѵ�.
�� password ��� �ϴ� ��� �տ��� ����Ѵ�� ����� �ʴ´�.
#undef AUTOSHADOW��� �� ��� �ٲ�� ����.
AUTOSHADOW ���û���� shadow�� �����ϴ� program��� ��� �۵��ϵ���
�Ϸ��� ����� �غ�� ��̾���. �� �̾߱�� �̷л�δ� �������,
����� ������ �ʴ´�. �� option�� ����ϰ� root�ν� program��
�����Ű��, �� �� getpwnam()�� root������� �θ���, �Ŀ� /etc/passwd
file�� ������ ���� �ٽ� ���� �ȴ� (���̻� shadow��� ��� ä��).
�� program���� chfn�� chsh�� �ִ�. (getpwnam()�� ȣ���ϱ� ����, ���
uid�� ��ȿ uid�� �ٲ۴��ص� �̸� ȸ���� �� ����. �ֳ��ϸ� root��
chfn�� chsh�� ����� ��̱���̴�. (�����: ��ȣ�ϳ�. system
programming�� ���� ���배�� ��... �ƽô� ��� ���� �ٶ��ϴ�.))
libc�� ���� ���� ���� ��찡 �ִ�. SHADOW_COMPAT option�� �� ��̴�.
�� ��� ���� �� �ȴ�! /etc/passwd�κ��� encode�� password�� ���
����Ѵٴ� ��� ������.
���� ����ϰ� �ִ� libc version�� 4.6.27����̶��, config.h��
Makefile�� ��ĥ ��� �� �ִ�. config.h���� �ٲ� ���:
#define HAVE_BASENAME
��
#undef HAVE_BASENAME
����. ���� Makefile������:
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c
��
SOBJS = smain.o env.o entry.o susetup.o shell.o \
sub.o mail.o motd.o sulog.o age.o tz.o hushed.o basename.o
SSRCS = smain.c env.c entry.c setup.c shell.c \
pwent.c sub.c mail.c motd.c sulog.c shadow.c age.c pwpack.c rad64.c \
tz.c hushed.c basename.c
����. �� ��ħ�� libc 4.6.27�̳� �� ���Ŀ� ��Ե� basename.c�� �ִ�
code�� ����δ�.
4.3. �� program�� backup copy�� �����.
shadow suite�� ��ü��ų program�� ����ؼ� backup�� ����� �͵� ����
�����̴�. Slackware 3.0���� ����� ����:
o /bin/su
o /bin/login
o /usr/bin/passwd
o /usr/bin/newgrp
o /usr/bin/chfn
o /usr/bin/chsh
o /usr/bin/id
BETA package�� Makefile�� backup�� ���� ���� �����, �ٸ� ����ǿ���
�ٸ� ��ġ�� ���� ��� �� �ֱ ������ ó���Ǿ� �ִ�.
���� /etc/passwd file�� backup�ޱ⸦ �ٶ���. ����, ���� directory��
���� ��, passwd ������ ���� ���� ���ϵ���, �̸��� ���� �� �����ض�.
4.4. make�� ����
��� ��κ�� ��ġ�������� ���� root ����� ���� �ʿ䰡 �ִ�.
package�� compile�ϱ� ���� make�� �����Ų��:
make all
����� ���� ����� ������ ��찡 �ִ�: rcsid defined but not used
(rcsid�� ���ǵǾ� ����� ����� �ʽ��ϴ�). �����, �� �� ���ڰ�
version control package�� ����ϱ ������ ��̴�.
5. ��ġ
5.1. ��� �߸��ž� �� ��츦 ����ؼ� boot disk�� �غ��սô�.
���� �߸��Ǿ� ���ٸ�, boot disk�� �غ��ؾ� �� ��̴�. ��ġ�� boot/root
disk�� ����ߴٸ�, �� �ɷ� ����ϴ�. ���� �ʴٸ�, Bootdisk-HOWTO
<http://sunsite.unc.edu/mdw/HOWTO/Bootdisk-HOWTO.html>�� booting������
disk�� ����� ���� �������� ����϶�.
5.2. �ߺ��� man page�� �����ϱ�
����, ��ü�� manual page�� �ű�� �ٶ���. ����� backup���� Shadow
Suite�� ��ġ�� ������ �����������, ����� �� manual page��
�����ϱ⸦ ���� ��̴�. �밳 �� manual page�� ����Ǿ� �����Ǿ�
����Ƿ�, �� �͵� ��� �Ϳ� ����� ���� �� �ִ�.
���� �Ǵ� �ű� �ʿ䰡 �ִ� manual page�� ã�� ���� man -aW command��
locate command�� ����� �� �ִ�. make install�� �����Ű�� ���� ��
����� �� page�� ã�� ��� �Ϲ������ �� ����.
Slackware 3.0 ������ ����Ѵٸ�, �����ؾ� �� man page��:
o /usr/man/man1/chfn.1.gz
o /usr/man/man1/chsh.1.gz
o /usr/man/man1/id.1.gz
o /usr/man/man1/login.1.gz
o /usr/man/man1/passwd.1.gz
o /usr/man/man1/su.1.gz
o /usr/man/man5/passwd.5.gz
��, /var/man/cat[1-9]�� subdirectory�� ���ؾ� �� �Ͱ� ���� �̸���
���� ���� �ִ�.
5.3. make install�� ����
��� �غ� ������: (root�μ� �� ��� �սô�)
make install
�� ��� �� ��� ��ų�, �� �Ͱ� ��ü�ϸ� file permission�� ��ģ��. ��,
man page�� ��ġ�Ѵ�.
����, /usr/include/shadow�� Shadow Suite�� �ִ� include file��
��ġ��ش�.
BETA package�� ���ٸ�, ���� login.defs�� /etc�� �����ϰ�, root����
�̸� �ٲ� �� �ֵ��� ��־�� �Ѵ�.
cp login.defs /etc
chmod 700 /etc/login.defs
�� file�� login program�� ���� file�̴�. ���� �ٽ� ����, ����
system�� �°� ��ġ�� �ٶ���. �̰�� root�� login�� �� �ִ� tty��
���ϰ�, �ٸ� ���� ���� setting�� ���Ѵ�(password ��ҿ� ����
�⺻������).
5.4. pwconv ����
��� ��� pwconv�� �����Ű�� ��̴�. �ݵ�� root�μ� �� ��� �ؾ� ��
�Ӹ� �ƴ϶�, /etc directory���� �ϸ� �ݻ�÷ȭ��:
cd /etc
/usr/sbin/pwconv
pwconv�� /etc/passwd�� �� �ȿ��� ��� field�� ������ ��� �� file��
�����: /etc/npasswd �� /etc/nshadow.
pwunconv program�� /etc/passwd�� /etc/shadow��� ���� /etc/passwd
file�� ���� ��쿡 ����� �־���.
5.5. npasswd�� nshadow�� �̸��� �ٲ۴�.
��� pwconv�� ������Ѽ� /etc/npasswd�� /etc/nshadow�� ���. ��
�͵� /etc/passwd�� /etc/shadow�� ��� �ʿ䰡 �ִ�. �츮�� ��
/etc/passwd�� backup�� �ޱ⸦ ���ϰ�, root�� ��� �� �ְ� �Ѵ�. ����
backup�� root�� home directory�� �ű��:
cd /etc
cp passwd ~passwd
chmod 600 ~passwd
mv npasswd passwd
mv nshadow shadow
file�� ����� permission�� ���� ��� ��Ȯ�ϰ� �ض�. X-Windows�� ��
�����̶��, xlock�� xdm program�� shadow file�� ��� �� �ְ� �Ѵ�
(���� ��� ����).
�� ��� �����ϰ� �ϴ� ���� �ΰ�����. xlock�� suid root�� ������ ��
�� �ִ�(xdm�� root�� ������� ����� �� �ִ�). �Ǵ� shadow file��
shadow group�� root�� ����� ����� ����� ��̴�. ���� �� ��°
����� �ϱ� ���� shadow group(/etc/group�� ����)�� �ִ� �� Ȯ���
�ض�. ��� system�� � ���ڵ� shadow group�� �������� �ȵȴ�.
chown root.root passwd
chown root.shadow shadow
chmod 0644 passwd
chmod 0640 shadow
��� system�� shadow�� password file�� ������ �Ǿ���. �ٸ� ����
terminal�� ����, login�� �� �ִ� �� �����ϴ� ��� ���� ��̴�.
���� �ض�!
�� �Ÿ�, ���� �߸��ȰŴ�! shadow��� ��� ���·� ���ư��� ���ؼ�
���ó�� �Ѵ�:
cd /etc
cp ~passwd passwd
chmod 644 passwd
���� ����, ����� �ִ� ��ҷ� ��� file�� �ǵ��� ���ƾ� �� ��̴�.
6. patch�ϰų� upgrade�� �ʿ䰡 �ִ� �ٸ� program��
password�� ����� �ʿ�� �ϴ� ��κ� program��� ��ġǰ�� shadow
suite�� ��ԵǾ� �ִٰ� �ص�, ��κ� system���� password ����� �ʿ��
�ϴ� �ٸ� program��� �ִ�.
Debian ������ ���� �ִٸ� (�Ǵ� ���� ��� �ʴ���),
ftp://ftp.debian.org/debian/stable/source/�κ��� �ٽ� ������ ��
program��� Debian source�� �� �� �ִ�.
�� section�� ����� �� adduser, wu_ftpd, ftpd, pop3d, xlock, xdm,
sudo���� program��� shadow suite�� �����ϵ��� upgrade�ϴ� ���� ����
�ٷ�� �ִ�.
shadow suite�� ���� ������ ��� program�� �ִ°��ϴ� ������ section
``C program�� Shadow�� �����ϵ��� ����̱�''�� ���� (������
program�� shadow file�� ������ �� �ֵ��� SUID root�� SGID shadow��
�����ؾ� �����)
6.1. Slackware adduser program
Slackware �����( �ٸ� �͵�߿�����)�� /sbin/adduser��� �Ҹ����
���ڸ� �߰��� �� ���� ��ȭ�� program�� ����ϰ� �ִ�. �� program��
shadow version��
ftp://sunsite.unc.edu/pub/Linux/system/Admin/accounts/adduser.shadow-1.4.tar.gz����
���� �� �ִ�.
���� slackware�� adduser��ſ� Shadow Suite�� �ִ� program�� (useradd,
usermod, userdel)�� ����� ��� ���Ѵ�. �� ����� �� �ټ� �ð���
�ɸ�����, ���� ����ġ�� �Ѵ�. �ֳ��ϸ� ���� ���� �ڼ�� control��
�� �ְ�, /etc/passwd�� /etc/shadow�� �˸�� file locking�� ����ֱ�
�����̴� (adduser�� �ƴϴ�).
�� �� �ڼ��� �� �˰� ����� ``Shadow Suite ����ϱ�''�� ����ϵ���.
�����, ������ �ִٸ� ���ó�� �ض�:
tar -xzvf adduser.shadow-1.4.tar.gz
cd adduser
make clean
make adduser
chmod 700 adduser
cp adduser /sbin
6.2. The wu_ftpd Server
��κ� Linux system�� wu_ftpd server�� ���� �ִ�. �������κ���
shadow�� ��ġ��� �ʾҴٸ�, ���� wu_ftpd�� shadow ������ �ϵ���
compile��� �ʾҴ�. wu_ftpd�� root process�ν� ����Ǵ�
inetd/tcpd�κ��� ��۵ȴ�. ����� ���� wu_ftpd deamon�� ���� �ִٸ�,
�� �� root ���� ���·Ӱ� �ϴ� bug�� ���ϰ� �ֱ ������ upgrade��
�ؾ� �ȴ� (Linux security home page
<http://bach.cis.temple.edu/linux/linux-security/Linux-Security-
FAQ/Linux-wu.ftpd-2.4-Update.html>�� ���).
����� source code�� ������ shadow�� �����ϵ��� ��compile�ϱ⸸ �ϸ�
�ȴ�.
���� �ִ� ��� ELF system�� �ƴ϶��, wu_ftp server�� sunsite�� wu-
ftp-2.4-fixed.tar.gz
<ftp://sunsite.unc.edu/pub/Linux/system/Network/file-transfer/wu-
ftpd-2.4-fixed.tar.gz>�� ���� �ȴ�.
�ϴ� �����ͼ� /usr/src�� ���� ��:
cd /usr/src
tar -xzvf wu-ftpd-2.4-fixed.tar.gz
cd wu-ftpd-2.4-fixed
cp ./src/config/config.lnx.shadow ./src/config/config.lnx
����� ./src/makefiles/Makefile.lnx�� �����Ѵ�:
LIBES = -lbsd -support
��:
LIBES = -lbsd -support -lshadow
����.
��� script�� ����� ��ġ�ϱ� ���� �غ� ������:
cd /usr/src/wu-ftpd-2.4-fixed
/usr/src/wu-ftp-2.4.fixed/build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
�̴� Linux shadow ���� file�� ����ؼ� compile�ϰ� server�� ��ġ�Ѵ�.
�� Slackware 2.3 system������ build�� ������� ���� ����� ���� ���
�ؾ� �ߴ�:
cd /usr/include/netinet
ln -s in_systm.h in_system.h
cd -
ELF system���� �� package�� compile�ϴ� �� ��� ��������� ����
�Ǿ�����, ��� release�� Beta version������ �� �ȴ�. �װ�� wu-
ftp-2.4.2-beta-10.tar.gz <ftp://tscnet.com/pub/linux/network/ftp/wu-
ftpd-2.4.2-beta-10.tar.gz>�̴�.
�ϴ� �����ͼ� /usr/src�� ���� ��:
cd /usr/src
tar -xzvf wu-ftpd-2.4.2-beta-9.tar.gz
cd wu-ftpd-beta-9
cd ./src/config
�� �� config.lnx�� �����Ѵ�:
#undef SHADOW.PASSWORD
��:
#define SHADOW.PASSWORD
����. ����
cd ../Makefiles
Makefile.lnx�� �����Ѵ�:
LIBES = -lsupport -lbsd # -lshadow
��:
LIBES = -lsupport -lbsd -lshadow
����. ���������� ����� ��ġ:
cd ..
build lnx
cp /usr/sbin/wu.ftpd /usr/sbin/wu.ftpd.old
cp ./bin/ftpd /usr/sbin/wu.ftpd
���� wu.ftpd server�� ����� ��� �ִ� �� Ȯ���ϱ� ����
/etc/inetd.conf�� ������ ����. � ����ǿ����� server deamon�� �ٸ�
��ҿ� �ΰ�, Ư� wu.ftpd�� �ٸ� �̸��� �ϰ� �ִٴ� ���� �ִ�.
6.3. ǥ�� ftpd
ǥ�� ftpd server�� ���� �ִٸ� wu_ftpd server�� ������ ���Ѵ�. ������
����� bug�ܿ��� �Ϲ������ �� ����� ����� �˷��� �ִ�.
ǥ��� ��� ���ϰų� NIS�� ������ �ʿ䰡 �ִٸ�, Sunsite�� ftpd-
shadow-nis.tgz <ftp://sunsite.unc.edu/pub/Linux/system/Network/file-
transfer/ftpd-shadow-nis.tgz>�� �ִ�.
6.4. pop3d (Post Office Protocol 3)
POP3�� �ʿ��ϸ�, pop3d program�� ��compile�ؾ� �Ѵ�. pop3d�� root
������� inetd/tcpd�� ���� ����ȴ�.
Sunsite�� �ΰ��� version�� �ִ�: pop3d-1.00.4.linux.shadow.tar.gz
<ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/pop3d-1.00.4.linux.shadow.tar.gz>
�� pop3d+shadow+elf.tar.gz
<ftp://sunsite.unc.edu/pub/Linux/system/Mail/pop/pop3d+shadow+elf.tar.gz>
�� �� ��ġ�� �����ϰ� ����ȴ�.
6.5. xlock
shadow suite�� ��ġ�ϰ�, X Windows System�� upgrade��� �ʰ� xlock����
screen�� lock�� �Ǵٸ�, Ctrl-Atl-Fx�� ���� �ٸ� tty�� login�� �� xlock
process�� �� �� ��� Ʋ������ (�Ǵ� Ctrl-Alt-BS�� X server��
��̴���). ����� xlock program�� upgrade�ϴ� ��� ����.
XFree86 3.x.x�� ���� �ִٸ�, �Ƹ��� xlockmore (lock��ɿ� �Ǹ���
screen-saver�� �ִ�)�� ���� ��� ��̴�. �� package�� shadow�� �Բ�
��compile�� �� �ֵ��� �Ǿ� �ִ�. ���� xlock�� ���� �ִٸ�, �� �ɷ�
upgrade�ϵ��� ���Ѵ�.
xlockmore-3.7.tgz��
<ftp://sunsite.unc.edu/pub/Linux/X11/xutils/screensavers/xlockmore-3.7.tgz>
�� �ִ�.
�밳, �̰� ���̿� �� ��� ��̴�.
xlockmore-3.7.tgz�� ���� ���, /usr/src�� Ǭ��:
tar -xzvf xlockmore-3.7.tgz
/usr/X11R6/lib/X11/config/linux.cf file�� ��� line�� �ٲٸ� �ȴ�:
#define HasShadowPasswd NO
�� ���ó��
#define HasShadowPasswd YES
���� ���� ���� file�� �����:
cd /usr/src/xlockmore
xmkmf
make depend
make
���������� ��� ���ڸ���, �ٸ� permission�� ���ϰ� �ϸ� ���̴�:
cp xlock /usr/X11R6/bin/
cp XLock /var/X11R6/lib/app-defaults/
chown root.shadow /usr/X11R6/bin/xlock
chmod 2755 /usr/X11R6/bin/xlock
chown root.shadow /etc/shadow
chmod 640 /etc/shadow
��� xlock�� �� ���ư� ��̴�.
6.6. xdm
xdm�� X-Windows���� login screen�� �����ش�. � system�� Ư��
level�� ������ �����ϸ� xdm�� �õ���Ų��(/etc/inittab�� ������).
Shadow Suite�� ��ġ�Ǹ� xdm�� update�� �ʿ䰡 �ִ�. �̴� �ſ� ����.
xdm.tar.gz��
<ftp://sunsite.unc.edu/pub/Linux/X11/xutils/xdm.tar.gz>�� �ִ�.
xdm.tar.gz�� ���� ���, /usr/src���� Ǭ��:
tar -xzvf xdm.tar.gz
/usr/X11R6/lib/X11/config/linux.cf���� ��� line�� ���:
#define HasShadowPasswd NO
�� ���ó��
#define HasShadowPasswd YES
���� ���� ���� file�� �����:
cd /usr/src/xdm
xmkmf
make depend
make
��� �� ���ڸ���...:
cp xdm /usr/X11R6/bin/
xdm�� root ������� ����DZ permission�� �ٲ� �ʿ�� ����.
6.7. sudo
sudo�� �ý��� �����ڰ� ���ڷ� �Ͽ��� ������� root ����� ������
program�� ������ �� �ְ� �ϵ��� �����ش�. �� ��� drive��
mount�ϴ� �Ͱ� ���� ��� ���ڰ� �� �� �ֵ��� �������ν�, system
�����ڰ� root ������ ������ �ʿ並 ���� �� �ִٴ� �鿡�� �����ϴ�.
sudo�� ����� �� ���� password�� Ȯ���ϱ� ������ password�� ���
�ʿ䰡 �ִ�. sudo�� �̹� SUID root���·� ���۵DZ /etc/shadow file��
�����ϴ� �� ������ ����.
shadow suite�� �´� sudo��
<ftp://sunsite.unc.edu/pub/Linux/system/Admin/sudo-1.2-shadow.tgz>��
�ִ�.
���: sudo�� ��ġ�� ��, ���� /etc/sudoers�� �⺻ �������� ��ü�ȴ�.
���Ƿ� �⺻ �����̿�� ��� ���� �ִٸ� backup�� �ϱ� �ٶ��� (�Ǵ�,
Makefile���� �⺻ ���� file�� /etc�� �����ϵ��� �����ϴ� line��
�����ϸ� �ȴ�).
�� package�� �̹� shadow�� �� �� �ְ� �����Ǿ� ����Ƿ�,
��compile�ϱ⸸ �ϸ� �ȴ� (/usr/src�� �ְ�):
cd /usr/src
tar -xzvf sudo-1.2-shadow.tgz
cd sudo-1.2-shadow
make all
make install
6.8. imapd (E-Mail pine package)
imapd�� pop3d�� ������ E-mail server�̴�. imapd�� Pine E-mail�� ����
�ִ�. package�� ��� �ִ� ������ linux system���� shadow�� �����ϵ���
�ϴ� ��� �⺻ �����̶�� �ϳ�, ���� �ƴ� ����� ���� �˰� �ִ�.
����� �� package�� build script/Makefile ����� libshadow.alibrary��
compile�� �� ����̱� ���� �Ѵ�. ��� ���� imapd�� shadow��
�����ϵ��� ��ĥ �� ������.
Ȥ�� �� ��� �س� ���� ����� ���� E-mail�� ������ �ٶ���. ����
���� �� ���� �ذ��� ��Խ�Ű�ڴ�.
6.9. pppd (Point-to-Point Protocol Server)
pppd server�� �������� ������ ����� �� �ְ� ������ �� �ִ�:
Password Authentication Protocol (PAP)�� Cryptographic Handshake
Authentication Protocol (CHAP). �밳 pppd server�� /etc/ppp/chap-
secrets��/�Ǵ� /etc/ppp/pap-secrets�� �ִ� password�� �д´�. �̷�
����� pppd�� ���ٸ�, pppd�� �ٽ� ��ġ�� �ʿ䰡 ����. (�����: ppp��
password�� ���� �дٴ� ��� ��...)
pppd�� login parameter�� ����� �� �ִ� (command line�̰�, option
file�̳� ������ ���ؼ���). login option�� �־���, pppd�� PAP�� ����
/etc/passwd�� �ִ� username�� password�� ����� ��̴�. ���� �� ��쿡
shadow�� password file�� �����. pppd-1.2.1d���� shadow��
�����ϵ��� code�� ���ٿ��� �ȴ�.
��� section���� pppd-1.2.1d�� shadow�� �����ϵ��� �ϴ� ���� ����
��̴� (pppd�� �� version).
pppd-2.2.0�� �̹� shadow�� �����ȴ�.
7. Shadow Suite ����ϱ�
�� section�� system�� Shadow Suite�� ��� ���� �˰� ��� ��� �����
�ٷ��. �� �ڼ��� ��� �� ���� manual page�� ����ϱ� �ٶ���.
7.1. ���ڰ� �߰�, ����, ��
Shadow Suite�� ���� ���� �����ϴ�, ����� ���� ��ɵ� �߰��ߴ�.
�̹� adduser program�� ����� ��ġ�Ǿ� �־��� ��̴�.
7.1.1. useradd
useradd ���� ���ڸ� �߰��Ѵ�. ����, �⺻ ������ �ٲٱ� ���� ��
���� ������ �� �ִ�.
ó�� �ؾ� �� ��� �⺻ ������ Ȯ���ϰ�, system�� �°� ��ġ�� ��̴�:
useradd -D
______________________________________________________________________
GROUP=1
HOME=/home
INACTIVE=0
EXPIRE=0
SHELL=
SKEL=/etc/skel
______________________________________________________________________
�⺻ ����ġ�� �Ƹ� ���� �� ��� ��̴�. ���� ���� ���ڸ�
�߰��Ϸ���, ���� ���ڿ��� ����Ǵ� ��� ������ ���ؾ� �Ѵ�. ��·��
�츮�� �⺻ ����ġ�� �ٲٰ� ����ϰŴ�.
�� system������:
o �⺻ group�� 100�̴�.
o password�� 60�ϸ��� �ѹ��� �ٲ۴�.
o password�� ��ҵ� �� ����Ƿ� ���� ����� �ʱ⸦ �ٶ���.
o �⺻ shell�� /bin/bash�̴�.
�̷��� �ٲٱ� ���ؼ�:
useradd -D -g100 -e60 -f0 -s/bin/bash
��� useradd -D�� ġ��:
______________________________________________________________________
GROUP=100
HOME=/home
INACTIVE=0
EXPIRE=60
SHELL=/bin/bash
SKEL=/etc/skel
______________________________________________________________________
�̷��� �⺻ġ�� /etc/default/useradd�� ����ȴ�.
��� useradd�� �Ἥ system�� ���ڸ� �߰��� �� �ִ�. ���� ���,
fred��� ���ڸ� �⺻ġ�� �����ؼ� �߰��Ѵٸ�:
useradd -m -c "Fred Flintstone" fred
/etc/passwd file�� ����� ���� ���(?)�� �����ȴ�:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/bash
����, /etc/shadow file����:
fred:!:0:0:60:0:0:0:0
fred�� home directory�� �������, -m switch�� �������Ƿ� /etc/skel
��ü�� �� ������ ����ȴ�.
����, Ư��� UID�� ������� �ʾ����, �̹� ���� UID ��� ���
������.
fred�� ���� ������, �츮�� ���� Ǯ��ֱ� ������ fred�� login��
�� ����. ���� Ǯ��ֱ� ���ؼ��� password�� �ٲپ� �־�� �Ѵ�.
passwd fred
______________________________________________________________________
Changing password for fred
Enter the new password (minimum of 5 characters)
Please use a combination of upper and lower case letters and numbers.
New Password: *******
Re-enter new password: *******
______________________________________________________________________
��� /etc/shadow�� ����� ���� ��̴�:
fred:J0C.WDR1amIt6:9559:0:60:0:0:0:0
����, fred�� login�ؼ� system�� ����� �� �ִ�. Shadow Suite�� �ִ�
�ٸ� program�� ���� useradd�� ���� ���� /etc/passwd�� /etc/shadow
file�� ���� �ٲ� �� ���ع�� �ʴ´ٴ� ���̴�. ���� ���ÿ� ����
���ڸ� �߰��ϰ�, �ٸ� �̿�ڴ� �ڽ�� password�� �ٲ۴��ص�, �� ��
����� ����ȴ�. (�����: mutex lock, race condition���� �� �����ϸ�
�� �Ͱ����ϴ�.)
/etc/passwd, /etc/shadow�� ���� ���ϴ� �ͺ��� �̷� ���� ���� ���
�� ����. ���� ���� /etc/shadow file�� ���ϰ� �ְ�, �� ��߿� ��
���ڰ� password�� �ٲٰ�, ������ ���� ���� ������ �����ϸ�,
�� ���ڰ� �� ��� �Ҿ����� �ȴ�.
��� useradd�� passwd�� ����� ������ ��ȭ� script�� �ִ�:
______________________________________________________________________
#!/bin/bash
#
# /sbin/newuser - Shadow Suite�� useradd�� passwd ���� �̿��ؼ�
# ���ڸ� �߰��ϴ� script
#
# Linux Shadow Password Howto�� �����ν� Mike Jackson <mhjack@tscnet.com>��
# ���� �ۼ����. ��� ������ Ư��� �㰡��.
#
# �� ��� Slackware�� Adduser programó�� �⺻ġ�� �����ְ�, ������ �� �ֵ���
# �ٲ� �� �־���. ���� ��û�� �Է�� �ź��ϵ��� �ٲ� �� �־���.
# (��, �� ���� ���� �˻��...)
#
##
# useradd ���� �⺻ ����ġ��
##
GROUP=100 # �⺻ Group
HOME=/home # Home directory ��ġ (/home/username)
SKEL=/etc/skel # Skeleton(������ ���� ���� file��?) Directory
INACTIVE=0 # password�� ����� ���� �� ���� ���� ��ȿ��
# �DZ���� �Ⱓ (0=���� �ϰ� ��� ���)
EXPIRE=60 # password ��ȿ�Ⱓ
SHELL=/bin/bash # �⺻ Shell (full path)
##
# passwd ���� �⺻ ����ġ��
##
PASSMIN=0 # password�� �ٲ۴�� �� �ٲٱ� ���� �����Ⱓ
PASSWARN=14 # password�� ����� �������� ����ϴ� �Ⱓ
##
# script�� �����ϴ� ���ڰ� root��� Ȯ��
##
WHOAMI=`/usr/bin/whoami`
if [ $WHOAMI != "root" ]; then
echo "You must be root to add news users!"
exit 1
fi
##
# ���� ID(username)�� ��� �̸�(Full name) ����
##
echo ""
echo -n "Username: "
read USERNAME
echo -n "Full name: "
read FULLNAME
#
echo "Adding user: $USERNAME."
#
# $FULLNAME �ֺ��� ""�� �ʿ��ϴٴ� �Ϳ� ����� ��. ����� �� field��
# �ݵ�� �����̻�� �����ΰ��� ����ϸ�, "�� ���� useradd command��
# �����Ų�ٸ�, ����� �̾��� parameter�鵵 �� field�� �Ϻκ����
# �νĵȴ�.
#
/usr/sbin/useradd -c"$FULLNAME" -d$HOME/$USERNAME -e$EXPIRE \
-f$INACTIVE -g$GROUP -m -k$SKEL -s$SHELL $USERNAME
##
# password�� ���� �⺻ ����ġ�� ���Ѵ�.
##
/bin/passwd -n $PASSMIN -w $PASSWARN $USERNAME >/dev/null 2>&1
##
# passwd�� ������� password�� �Է¹´�.
##
/bin/passwd $USERNAME
##
# ���� ������.
##
echo ""
echo "Entry from /etc/passwd:"
echo -n " "
grep "$USERNAME:" /etc/passwd
echo "Entry from /etc/shadow:"
echo -n " "
grep "$USERNAME:" /etc/shadow
echo "Summary output of the passwd command:"
echo -n " "
passwd -S $USERNAME
echo ""
______________________________________________________________________
���ο� ���ڸ� �߰��ϴ� �� script�� ���� ��� /etc/passwd��
/etc/shadow�� ���� ���ϴ� �ų� Slackware�� adduser�� ���� �ͺ��� ��
����. ���� Ư���� system�� �˸·η� ����Ӱ� ��ġ�� �ٶ���.
useradd�� ���� �ڼ��� ������ manual page�� ���ñ�...
7.1.2. usermod
usermod�� ���ڿ� ���� ������ ��ģ��. option�� useradd�� ���ϴ�.
��� fred�� shell�� �ٲٰ� �����, ����� ���� �Է��Ѵ�:
usermod -s /bin/tcsh fred
��� fred�� /etc/passwd file�� �ִ� ���� ���ó�� �ٲ�� �ִ�:
fred:*:505:100:Fred Flintstone:/home/fred:/bin/tcsh
�̹����� fred�� ���� 97�� 9�� 15�ϱ��� ������ ���:
usermod -e 09/15/97 fred
���� fred�� /etc/shadow file�� �ִ� ����:
fred:J0C.WDR1amIt6:9559:0:60:0:0:10119:0
usermod�� ���� �ڼ��� ������ manual page��...
7.1.3. userdel
userdel�� ��Ȯ� ���� ���� �� - ���� �� ��̱� - �� ��ġ���.
userdel -r username
��� ġ�� �ȴ�. -r�� ����� home directory�� �ִ� ��� file�� �Բ�
directory ��ü�� �����. �ٸ� ���� �ִ� file�� ���� ã�Ƽ� ������
�Ѵ�.
������ ���� ���� ���ϰ� �� �Ŷ��, passwd ���� ���� �ٶ���.
7.2. passwd ��ɰ� passwd ���� ���ϱ�.
passwd�� �� �״�� password�� �ٲٴ� �� ���ȴ�. �����, root��
����� ���� ��� �� �� �ִ�:
o �� ���(lock)�� Ǯ��(unlock)(-l�� -u)
o password ��ȿ�Ⱓ(-x)
o password�� �ٽ� �ٲٱ� ���� ��ٷ��� �ϴ� �Ⱓ(-n)
o password ��ȿ�Ⱓ ������ �˸��� ���� ������ �� ��ΰ�(-w)
o password ��ȿ�Ⱓ�� ���� �� ���� ��ױ�(lock)�ϱ���� �Ⱓ(-i)
o ���� ���� ������ �� �ڼ�� ���� ��� �����(-S)
�ٽ� fred�� ���� ���ư���
passwd -S fred
fred P 03/04/96 0 60 0 0
�̰�� fred�� password�� ��ȿ�ϰ�, 96�� 3�� 4�Ͽ� ���������� �ٲپ���,
��� �ٲ� �� �ִ�. ����, 60�ϵ��� password�� �ٲ�� �����
���Ŀ��� ������, �� ����� fred�� �ƹ��� ��� ��� ��� ��̸�,
password�� �������� ���� ��ȿ�ϴ�.
��, fred�� password�� ��ȿ�� �� �� �����, ���ο� password��
���˹�� ��̴�.
fred���� password�� ��ҵDZ� 14����� ��� �ϰ�, ��ҵ� �� 14����
��� ���� ���������:
passwd -w14 -i14 fred
���� ���ó�� fred�� ���� ����� �ٲ��:
fred P 03/04/96 0 60 14 14
passwd�� ���� �ڼ��� ������ manual page��...
7.3. The login.defs file.
/etc/login file�� login program, ��ü������ Shadow Suite�� ���� ������
��� �ִ�.
/etc/login�� prompt�� � ��� �ϰ� �ִ� ������ ���ڰ� password��
�ٲٸ� �⺻ ��ȿ�Ⱓ�� ��� �� ��ΰ��� ���� ������ ��� �ִ�.
/etc/login.defs file�� ���ο� �ִ� ������ comment��� �� ����ȭ�Ǿ�
�ִ�. �ִ� ��� ����� �����ϸ�:
o ���ϴ� log�� ��(?)�� ���ϴ� on/off���� flag��.
o �ٸ� ���� file�� ����Ű�� pointer��.
o password ��ȿ�Ⱓ �������� �⺻ ����ġ��.
������ ���� �� �� ���� �߿��� file�̴�. ����, ���� �ִ��
Ȯ���ϰ�, system�� ��� ��� �´� �� ������ ��.
7.4. Group passwords.
/etc/groups file�� ���ڰ� Ư�� group�� ȸ���� �� �� �ֵ��� ����ϴ�
password�� ��� �ִ�. �� ���� /usr/src/shadow-YYMMDD/config.h��
SHADOWGRP ��� ������ ��� �۵��ȴ�.
���� �� ���� ���ٸ�, /etc/gshadow file�� �����, group password��
group �����ڿ� ���� ������ �� �� �ֵ��� �϶�.
/etc/shadow�� ���� ��, ���� pwconv�� ����, /etc/gshadow�� �����
������ �� program�� ����. ����� �������. �˾Ƽ� �ϴϱ�.
ó�� /etc/gshadow�� ����� ���ؼ� ���ó�� �ض�:
touch /etc/gshadow
chown root.root /etc/gshadow
chmod 700 /etc/gshadow
���� ���ο� group�� ����ٸ�, �ڵ������� /etc/group�� /etc/gshadow
file�� ��� ���ٿ�����. group�� ���ڸ� �߰��ϰų� ��, �Ǵ� group
password�� �ٲٸ�, /etc/gshadow file�� ���� �ٲ� ��̴�.
groups, groupadd, groupmod, groupdel program�� group�� ��ġ�� �����ν�
Shadow Suite�� ��ԵǾ� ���ȴ�.
/etc/group file�� ���� ����� ����:
groupname:!:GID:member,member,...
�� ��Ҵ�:
groupname
group �̸�
! �� field�� password������� /etc/gshadow file�� �����.
GID
group ID number
member
group member�� list
�̴�.
/etc/gshadow file �� ���� ����� ����:
groupname:password:admin,admin,...:member,member,...
�� ��Ҵ�:
groupname
group �̸�
password
encode�� group password.
admin
group ������ list
member
group member list
�̴�.
gpasswd ���� group�� ���ڳ� �����ڸ� �߰�, �Ǵ� ���� �� ����.
root�Ǵ� �����ڸ��� group member�� �߰�, ���� �� �ִ�.
group password�� root�� group �����ڿ� ���� passwd ������ �ٲ� ��
�ִ�.
gpasswd�� ���� manual page�� ��� �����Ǿ� ��� �����, �ƹ���
parameter���� gpasswd�� ġ�� option�� ���� list�� �����Ƿ�, file
format�� ���丸 �� �����ϸ� ����� ���� ��� �� �ִ�.
7.5. �ϰ��� ���� program��
7.5.1. pwck
pwck program�� /etc/passwd�� /etc/shadow file���� Ʋ�� ���� ���� ��
�����Ѵ�. �� ��� ���� ���ڿ� ���� ����� ���� ����� �����Ѵ�:
o field�� ������ �´°�
o ���� �̸��� �����Ѱ�
o ���ڿ� group id
o �⺻ group
o home directory
o login shell
����, password�� ���� ���� ���� ��� �ش�.
Shadow Suite�� �� ��, pwck�� �����Ű�� ��� ���� �����̴�. �ֳ�
������� �ֱ����� �����Ű�⸦ ���Ѵ�. -r option�� ���ٸ�, cron����
�Ͽ��� �������� �����ϰ� ���� �����ϵ��� �� �� �ִ�.
7.5.2. grpck
grpck program�� /etc/group�� /etc/gshadow file���� Ʋ�� ���� ���� ��
�����Ѵ�. �̰�� ����� ���� ����� �����Ѵ�:
o field�� ������ �´°�
o ���� �̸��� �����Ѱ�
o ���ڿ� ������� list�� �´°�
�ڵ� ������ ���� -r option�� �ִ�.
7.6. Dial-up passwords.
Dial-up password�� ��ȭ����� ����ϴ� system���Դ� �� �ϳ���
���̴�. ���� �����̵� network�� ���ؼ��� ���� ����� system��
�����ϰ� �� �� �����, ��ȭ����� �� �� �ִ� ���� �����ϰ� �ʹٸ�,
dial-up password�� ���� �ذ�å�̴�. dial-up password�� ���� �ʹٸ�,
/etc/login.defs�� DIALUPS_CHECK_ENAB�� yes�� �ٲٸ� �ȴ�.
�� file�� ��ȭ���ӿ� ���� ������ ��� �ִ�. /etc/dialups�� ttys�� ����
����̴� ("/dev/"�� ���ŵ� ä�� line�� �ϳ���). tty�� list��
�ö��ִٸ� dial-up �˻簡 ����ȴ�(?).
�ι�°�� /etc/d_passwd�̴�. �� file���� password�� shell�� �����
pathname�� ��� �ִ�.
tty�� ���ؼ� log�ϴ� ���ڰ� /etc/dialups��, ��� shell��
/etc/d_passwd�� �ִٸ�, �״� ����� password�� �Է��ϸ� �ȴ�.
dial-up password�� �� �ٸ� �̿��� �� line�� � ���� ���(�밳
PPP�� UUCP ����)�� ����� ��ΰ��� ���ϴ� ��̴�. ���ڰ� �ٸ� �����
����(Ư�, �Ϸ�� shell�ν�)�� �õ��ϰ�� �Ѵٸ�, line�� ����� ��
�ִ� password�� �˰� �־�� �Ѵ�.
dial-up ���� ����ϱ� ����, file�� ������ �Ѵ�.
dpasswd ���� password�� /etc/d_passwd�� �ִ� shell�� ������ش�.
�ڼ��� ������ manual page��...
8. C program�� Shadow�� �����ϵ��� ����̱�
C program�� Shadow�� �����ϵ��� ����̴� ��� ��������� �ſ�
�����ϴ�. ��� ������ /etc/shadow file�� �����ϱ� ���ؼ��� program��
root(�Ǵ� SUID root)�� ����Ǿ�� �Ѵٴ� ��̴�.
�� ��� Ŀ�ٶ� ���� �ϳ��� �츮���� �����Ѵ�: SUID program�� ���� ��,
�ſ� ���ɽ����� programming�ϴ� ������ �Ǿ� �־�� �Ѵ�. ���� ���,
program�� shell Ż����� ������ �ְ� �� program�� SUID root���, ��
���� root ����� �־�� �ȵȴ�.
password�� �˻��� �� �� ����� �ٸ� ���� root������� ������ �ʿ䰡
���� program�� shadow ���� ���� �������ν�, SUID program���� �ξ�
����� program�� ���� �� �ְ� �Ѵ�. xlock program�� �� �� ���̴�.
�Ʒ� ������, pppd-1.2.1d�� �̹� SUID root�� �����ϰ� ����Ƿ�, shadow
���� ���� ����̴� ��� program�� �� ����ϰ� ���� ��� ��̴�.
8.1. Header files
header file�� /usr/include/shadow�� �ִ�. ����,
/usr/include/shadow.h�� �ִ�. ����, �̰��
/usr/include/shadow/shadow.h�� ���� symbolic link�� ��̴�.
shadow ���� ���� �߰��ϱ� ����, header file�� ���:
#include <shadow/shadow.h>
#include <shadow/pwauth.h>
shadow code�� ��Ȳ�� ���� compile�ϵ��� compiler directive(�����)��
���� ��� ���� ���̴� (�Ʒ� ������ ������).
8.2. libshadow.a library
Shadow Suite�� ��ġ�� ��, libshadow.a file�� /usr/lib�� ���δ�.
shadow �������� program�� �������, linker���� libshadow.a�� ����
link�ϵ��� ������־�� �Ѵ�.
���ó��:
gcc program.c -o program -lshadow
��·��, �Ʒ� ������ ���ٽ���, ��κ� �Ŵ��� program�� Makefile��
����ϰ�, �츮�� ��ĥ LIBS=...��� ������ �밳 ����.
8.3. Shadow ����ü
libshadow.a library�� /etc/shadow file��� ��� ������ spwd���
����ü�� ��´�. spwd ����ü�� ���� ���Ǵ�
/usr/include/shadow/shadow.h file�� �ִ�:
______________________________________________________________________
struct spwd
{
char *sp_namp; /* ���� �̸� */
char *sp_pwdp; /* encrypt�� password */
sptime sp_lstchg; /* �ֱ� data ������ */
sptime sp_min; /* �����۾����� �ּ� ��¥(�ᱹ �ѹ� ������
��� �� ������ �����Ѱ��� ���� ���) */
sptime sp_max; /* �����۾����� �ִ� ��¥(password ��ȿ�Ⱓ) */
sptime sp_warn; /* password�� ��ȿ�� �DZ� �� ����ϴ� �Ⱓ */
sptime sp_inact; /* password�� ��ȿ�� ��, ���� ���Ҵ��
�� ������ �Ⱓ. */
sptime sp_expire; /* ��¥(�����Ҵ� - 1/1/70) */
unsigned long sp_flag; /* ����� ���� ��� */
};
______________________________________________________________________
Shadow Suite�� sp_pwdp field�� encode�� passwd�� �Բ� �ٸ� �� ��� ��
�ִ�. password field�� ���ó�� �� �� �ִ�:
username:Npge08pfz4wuk;@/sbin/extra:9479:0:10000::::
�̴� password�� ���ٿ�, /sbin/extra program�� �� ��ȭ�� ����� ����
ȣ��ȴٴ� ��� �ǹ��Ѵ�. ȣ��Ǵ� program�� username, ȣ������
�˷��ִ� switch�� ��� �� �־�� �� ��̴�. �ڼ��� �� �˰� �ʹٸ�,
/usr/include/shadow/pwauth.h�� pwauth.c�� ���� �ٶ���.
�̰�� �ǵ��ϴ� �ٴ� -�ι� ���� Ȯ���ϴ� �� ����� ���� �ִ�- �ٸ�
����ϴ�(actual) ���� Ȯ�� ���� ������ �� �ֵ��� pwauth ����
���� ��̴�.
Shadow Suite�� ���ڴ� ����ϴ� ��κ�� program��� �� ���� ����
��� ����� �����ϸ鼭, Shadow Suite ��� version���� ���ų�, �ٲ�
��̶�� �Ѵ�.
8.4. Shadow �Լ���
shadow.h file�� libshadow.a library�� �ִ� �Լ���� �⺻��� ����ϰ�
�ִ�:
______________________________________________________________________
extern void setspent __P ((void));
extern void endspent __P ((void));
extern struct spwd *sgetspent __P ((__const char *__string));
extern struct spwd *fgetspent __P ((FILE *__fp));
extern struct spwd *getspent __P ((void));
extern struct spwd *getspnam __P ((__const char *__name));
extern int putspent __P ((__const struct spwd *__sp, FILE *__fp));
______________________________________________________________________
�������� �� �Լ���: getspnam - spwd ����ü���� ���� �̸��� ��������
�Լ� - �̴�.
8.5. Example
�̰�� shadow �������� �ʿ������ �⺻�������� �Ǿ� ��� ���
program�� �װ�� �߰��ϴ� �����̴�.
�� ������, PAP�̳� CHAP��� /etc/passwd file�� �ִ� ����̸���
password�� ����Ͽ� PAP ����� �����ϴ� mode�� ����, Point-to-Point
Protocol Server (pppd-1.2.1d)�� ��� �ִ�.
pppd�� �̷� ���� �� ��� ���̰� ��� �ʴ�. ���� Shadow Suite��
��ġ�Ǹ� �� ���� �� ���� �� ��̴�. �ֳ��ϸ� password�� �� �̻�
/etc/passwd�� ��� �ʱ� �����̴�.
ppad-1.2.1d���� ���� ����ϴ� code��
/usr/src/pppd-1.2.1d/pppd/auth.c file�� �ִ�.
��� code�� #include ����ڰ� ��ġ�ϴ� file�� ���κп� ���� �ʿ䰡
�ִ�. �츮�� ��������(conditional directive)�� #include�� �ѷ��մ�
(Ư��� shadow �������� �־� compile�� ���� ����ϵ���)
______________________________________________________________________
#ifdef HAS_SHADOW
#include <shadow.h>
#include <shadow/pwauth.h>
#endif
______________________________________________________________________
����� ��� code�� ��ġ�� ��̴�. ����� auth.c file�� ��ġ�� �ִ�.
��ġ�� ���� auth.c��:
______________________________________________________________________
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
/*
* XXX If no passwd, let them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHACK);
}
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
______________________________________________________________________
���� password�� pw->pw_passwd�� ��ġ�Ѵ�. ���� �� ��� getspnam
�Լ��� �߰��ϴ� ��� ���δ�. �� �Լ��� spwd->sp_pwdp�� password��
�Ҵ��Ѵ�.
�츮�� �ٸ� ����ϴ�(actual) ���� Ȯ�� �۾��� �����ϵ��� pwauth
�Լ��� ��� ��̴�. �̴� shadow file�� �����Ǿ� ����� �ڵ�������
�ι�° ����� �����Ѵ�.
shadow�� �����ϵ��� ��ģ auth.c��:
______________________________________________________________________
/*
* login - Check the user name and password against the system
* password database, and login the user if OK.
*
* This function has been modified to support the Linux Shadow Password
* Suite if USE_SHADOW is defined.
*
* returns:
* UPAP_AUTHNAK: Login failed.
* UPAP_AUTHACK: Login succeeded.
* In either case, msg points to an appropriate message.
*/
static int
login(user, passwd, msg, msglen)
char *user;
char *passwd;
char **msg;
int *msglen;
{
struct passwd *pw;
char *epasswd;
char *tty;
#ifdef USE_SHADOW
struct spwd *spwd;
struct spwd *getspnam();
#endif
if ((pw = getpwnam(user)) == NULL) {
return (UPAP_AUTHNAK);
}
#ifdef USE_SHADOW
spwd = getspnam(user);
if (spwd)
pw->pw_passwd = spwd->sp-pwdp;
#endif
/*
* XXX If no passwd, let NOT them login without one.
*/
if (pw->pw_passwd == '\0') {
return (UPAP_AUTHNAK);
}
#ifdef HAS_SHADOW
if ((pw->pw_passwd && pw->pw_passwd[0] == '@'
&& pw_auth (pw->pw_passwd+1, pw->pw_name, PW_LOGIN, NULL))
|| !valid (passwd, pw)) {
return (UPAP_AUTHNAK);
}
#else
epasswd = crypt(passwd, pw->pw_passwd);
if (strcmp(epasswd, pw->pw_passwd)) {
return (UPAP_AUTHNAK);
}
#endif
syslog(LOG_INFO, "user %s logged in", user);
/*
* Write a wtmp entry for this user.
*/
tty = strrchr(devname, '/');
if (tty == NULL)
tty = devname;
else
tty++;
logwtmp(tty, user, ""); /* Add wtmp login entry */
logged_in = TRUE;
return (UPAP_AUTHACK);
}
______________________________________________________________________
����ؼ� ���� �츮�� �� �ٸ� ��ȭ�� �� �� ��� ��̴�. /etc/passwd
file�� password�� ���ٸ�, �� version�� UPAP_AUTHACK�� �����ְ� �����
����ߴ�. �̰� �� ����. �ֳ��ϸ�, �� login���� �Ϲ���� �뵵�� PPP
process�� ������ ���, PAP�� ���� �����Ǵ� ���� �̸��� password��
/etc/passwd�� �ִ� ���� �̸��� /etc/shadow�� �ִ� password�� �´��
�����ϵ��� ����ϴ�, �� ���� ����ϴ� ��̱� �����̴�.
����, �� version�� ����(Ư�, ppp)�� ���� shell�� �����Ű����
�����ߴٸ�, ������ ��� PAP�� ����̸��� ppp, password�� null��
����ν� ppp ���� ȹ���� �� �־���.
�츮�� �̰�� password�� ���ٸ� UPAP_AUTHACK��� UPAP_AUTHNAK��
�ǵ����ֵ��� ���ƴ�.
��̷ӰԵ� pppd-2.2.0�� ���� ������ ���ϰ� �ִ�.
����� �ΰ��� ��� �Ͼ �� �ֵ��� Makefile�� ���� ��̴�:
USE_SHADOW�� ����Ǿ� �־�� �ϰ�, libshadow.a�� link�ǵ��� �� �ʿ䰡
�ִ�.
Makefile������:
LIBS = -lshadow
������ ��� ���:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t
����:
COMPILE_FLAGS = -I.. -D_linux_=1 -DGIDSET_TYPE=gid_t -DUSE_SHADOW
�� �ٲ۴�.
��� ���� ��ġ�϶�.
9. ��� ���� ������.
��: /etc/securettys file�� �Ἥ root�� �� �� �ִ� tty��
�����ؿ���ϴٸ�, ����� �� �˴ϴ�. ���� �߸��ϱ��?
��: /etc/securettys file�� Shadow Suite�� ��ġ�� �ڿ��� ���̻� �� ��
�����ϴ�. login ���� file�� /etc/login.defs���� root�� �� �� �ִ�
tty�� ���� �� ����ϴ�. �� file�� �� �� �ٸ� file�� ����ų ��
����ϴ�.
��: Shadow Suite�� ��ġ�ߴ���, login�� �� �����ϴ�. ���� ���� ��
�Ծ�����?
��: �Ƹ� Shadow program�� ��ġ�����, pwconv�� �����Ű�� �ʾҴ���,
/etc/npasswd�� /etc/nshadow�� /etc/passwd�� /etc/shadow�� �����ϴ�
��� �ؾ��� �̴ϴ�. ���� login.defs�� /etc�� �����ؾ� �˴ϴ�.
��: xlock section����, /etc/shadow�� group ����ڸ� shadow�� �ٲٶ��
�մϴ�. ���� shadow group�� ������ ��� �ʽ��ϴ�. �� �ؾߵ����?
��: �߰��Ͻø� �˴ϴ�. ����� /etc/group file�� ��� �߰��ϸ� �˴ϴ�.
�ٸ� group���� ���̰� ��� ��� group number�� �Ҵ��ؼ� nogroup
��� ����ϸ� �˴ϴ�. �Ǵ� xlock�� SUID root�� �ϸ� �˴ϴ�.
��: Linux Shadow Password Suite�� ���� mailing list�� ����ϱ�?
��: ��, ����� ��� Linux Shadow Suite�� beta test�� ����� ����
�̴ϴ�. shadow-list-request@neptune.cin.net�� ����(subject)��
subscribe�� �ؼ� mail�� �����ø� list�� �߰��ǽ� �� ����ϴ�. ��
list�� ����� Linux shadow-YYMMSS series�� ���ؼ� ����ϰ� ����ϴ�.
���� ���߿� ����ϰ� �Ͱų�, ���� system�� Suite�� ��� �ֱ�
release�� ���� ������ ��� �ʹٸ�, ����ϼŵ� �˴ϴ�.
��: Shadow Suite�� ��ġ����ϴ�. ����, userdel ���� ����� ������,
"userdel: cannot open shadow group file"�̶� message�� ���ϴ�. ��
�߸������?
��: Shadow Suite�� SHADOWGRP option������� compile�����,
/etc/gshadow file�� ���� ��Դϴ�. config.h�� ���ؼ� �ٽ�
compile�ϰų�, /etc/group file�� ����ʽÿ�. shadow group�� ����
section�� ����Ͻñ� �ٶ��ϴ�.
��: Shadow Suite�� ��ġ�����, ���� /etc/passwd�� encode�� password��
����ϴ�. ���� �߸������?
��: Shadow config.h file�� AUTOSHADOW option �����ϰ� �߰ų�, libc��
SHADOW_COMPAT option�� �ְ� compile��� �̴ϴ�. �� ������� Ȯ���ؼ�
�ٽ� compile�Ͻʽÿ�.
10. ���۱ǿ� ���ؼ�.
The Linux Shadow Password HOWTO is Copyright (c) 1996 Michael H.
Jackson.
��� �纻�� ���۱ǿ� �� �㰡 ��� �����Ǵ� �� ������ ������ �纻��
����� ����ϴ� ��� �㰡�մϴ�.
���� ���� ������ �纻�� ���� �����Ͽ���, ������ ������ ��̶��
����� ��� ������ ������ ���� ��ԵǾ�, �� ������ ������ version��
�����ϰ� ����ϴ� ���� �㰡�մϴ�.
���� ������ version�� ���� ������ �����Ͽ���, �� ������ �ٸ� ���
�������� �����ϰ� ����ϴ� ��� �㰡�մϴ�