Erinevus lehekülje "Sshd mysql" redaktsioonide vahel
1. rida: | 1. rida: | ||
===Sissejuhatus=== | ===Sissejuhatus=== | ||
− | + | Näide kuidas saada unix süsteemis autentimine mysql baasi peale. | |
− | + | ||
Antud näidet on testitud linux serveris kuid sama tarkvara on olemas ka FreeBSD | Antud näidet on testitud linux serveris kuid sama tarkvara on olemas ka FreeBSD |
Redaktsioon: 29. oktoober 2007, kell 16:15
Sissejuhatus
Näide kuidas saada unix süsteemis autentimine mysql baasi peale.
Antud näidet on testitud linux serveris kuid sama tarkvara on olemas ka FreeBSD
all ning peaks töötama seal samahästi (/etc asendub arvatavasti /usr/loca/etc jms radade muutused)
Install ja sedaistus
Süsteemi on vaja paigaldada kaks paketti
- mysql-pam
- libnss-mysql (versiooniks 1.5 näites)
Tekitame enda andmebaasiserverisse uue kasutajanime (kasutaja,parool) Loome enda andmebaasi uue baasi nimega auth ja sinna sisse järgneva struktuuriga tabelid.
CREATE TABLE IF NOT EXISTS `grouplist` ( `rowid` int(11) NOT NULL auto_increment, `gid` int(11) NOT NULL default '0', `username` char(16) NOT NULL default , PRIMARY KEY (`rowid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; CREATE TABLE IF NOT EXISTS `groups` ( `name` varchar(16) NOT NULL default , `password` varchar(34) NOT NULL default 'x', `gid` int(11) NOT NULL auto_increment, PRIMARY KEY (`gid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5001 ; CREATE TABLE IF NOT EXISTS `users` ( `username` varchar(16) NOT NULL default , `uid` int(11) NOT NULL auto_increment, `gid` int(11) NOT NULL default '5000', `gecos` varchar(128) NOT NULL default , `homedir` varchar(255) NOT NULL default , `shell` varchar(64) NOT NULL default '/bin/bash', `password` varchar(34) NOT NULL default 'x', `lstchg` bigint(20) NOT NULL default '1', `min` bigint(20) NOT NULL default '0', `max` bigint(20) NOT NULL default '99999', `warn` bigint(20) NOT NULL default '0', `inact` bigint(20) NOT NULL default '0', `expire` bigint(20) NOT NULL default '-1', `flag` bigint(20) unsigned NOT NULL default '0', PRIMARY KEY (`uid`), UNIQUE KEY `username` (`username`), KEY `uid` (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5000 ;
Lisame ka ühe kasutaja ja grupi. Kasutaja nimeks saab kasutaja, parooliks samuti kasutaja
ning kodukataloogiks /home/kasutaja.
INSERT INTO users (username,gecos,homedir,password) VALUES ('kasutaja', 'Eesnimi Perenimi', '/home/kasutaja', ENCRYPT('kasutaja'));
Loome kasutajale grupi nimega kasutaja.
INSERT INTO groups (name) VALUES ('kasutaja');
Seome kasutaja loodud grupiga
INSERT INTO grouplist (gid,username) VALUES (5000,'kasutaja');
/etc/libnss-mysql.cfg
getpwnam SELECT username,'x',uid,gid,gecos,homedir,shell \ FROM users \ WHERE username='%1$s' \ LIMIT 1 getpwuid SELECT username,'x',uid,gid,gecos,homedir,shell \ FROM users \ WHERE uid='%1$u' \ LIMIT 1 getspnam SELECT username,password,lstchg,min,max,warn,inact,expire,flag \ FROM users \ WHERE username='%1$s' \ LIMIT 1 getpwent SELECT username,'x',uid,gid,gecos,homedir,shell \ FROM users getspent SELECT username,password,lstchg,min,max,warn,inact,expire,flag \ FROM users getgrnam SELECT name,password,gid \ FROM groups \ WHERE name='%1$s' \ LIMIT 1x getgrgid SELECT name,password,gid \ FROM groups \ WHERE gid='%1$u' \ LIMIT 1 getgrent SELECT name,password,gid \ FROM groups memsbygid SELECT username \ FROM grouplist \ WHERE gid='%1$u' gidsbymem SELECT gid \ FROM grouplist \ WHERE username='%1$s' host localhost database auth username kasutaja password parool
teine fail mis vaja seadistada /etc/libnss-mysql-root.cfg
sinna piisab kui lisada andmebaasi kasutajanimi ning parool
username kasutaja password parool
Järgnevalt PAM seadistus ssh'ga logimiseks /etc/pam.d/ssh
auth sufficient pam_mysql.so \ verbose=1 \ user=kasutaja \ passwd=parool \ host=localhost \ db=auth \ table=users \ usercolumn=username \ passwdcolumn=password crypt=4 account sufficient pam_mysql.so \ verbose=1 \ user=kasutaja \ passwd=parool \ host=localhost \ db=auth \ table=users \ usercolumn=username \ passwdcolumn=password crypt=4 password sufficient pam_mysql.so \ verbose=1 \ user=kasutaja \ passwd=parool \ host=localhost \ db=auth \ table=users \ usercolumn=username \ passwdcolumn=password crypt=4
lõpuks ka /etc/nsswitch.conf Mille alusel süsteem tunnistab kasutajaid andmebaasist.
passwd: files mysql shadow: files mysql group: files mysql
Ning nii toimib. Võid testida käskude id, finger abil ning proovida ssh'ga üle võrgu logida.
Lingid
http://libnss-mysql.sourceforge.net/
--Jj 26. oktoober 2007, kell 16:45 (EEST)