summaryrefslogtreecommitdiffstats
path: root/zarb-ml/mageia-sysadm/2010-November/000567.html
diff options
context:
space:
mode:
Diffstat (limited to 'zarb-ml/mageia-sysadm/2010-November/000567.html')
-rw-r--r--zarb-ml/mageia-sysadm/2010-November/000567.html212
1 files changed, 212 insertions, 0 deletions
diff --git a/zarb-ml/mageia-sysadm/2010-November/000567.html b/zarb-ml/mageia-sysadm/2010-November/000567.html
new file mode 100644
index 000000000..32eff9794
--- /dev/null
+++ b/zarb-ml/mageia-sysadm/2010-November/000567.html
@@ -0,0 +1,212 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+ <HEAD>
+ <TITLE> [Mageia-sysadm] [262] - import mandriva script to export ssh keys ( need some cleaning )
+ </TITLE>
+ <LINK REL="Index" HREF="index.html" >
+ <LINK REL="made" HREF="mailto:mageia-sysadm%40mageia.org?Subject=Re%3A%20%5BMageia-sysadm%5D%20%5B262%5D%20-%20import%20mandriva%20script%20to%20export%20ssh%20keys%20%28%0A%09need%20some%20cleaning%20%29&In-Reply-To=%3C20101117141729.D82DE3FC09%40valstar.mageia.org%3E">
+ <META NAME="robots" CONTENT="index,nofollow">
+ <META http-equiv="Content-Type" content="text/html; charset=us-ascii">
+ <LINK REL="Previous" HREF="000566.html">
+ <LINK REL="Next" HREF="000568.html">
+ </HEAD>
+ <BODY BGCOLOR="#ffffff">
+ <H1>[Mageia-sysadm] [262] - import mandriva script to export ssh keys ( need some cleaning )</H1>
+ <B>root at mageia.org</B>
+ <A HREF="mailto:mageia-sysadm%40mageia.org?Subject=Re%3A%20%5BMageia-sysadm%5D%20%5B262%5D%20-%20import%20mandriva%20script%20to%20export%20ssh%20keys%20%28%0A%09need%20some%20cleaning%20%29&In-Reply-To=%3C20101117141729.D82DE3FC09%40valstar.mageia.org%3E"
+ TITLE="[Mageia-sysadm] [262] - import mandriva script to export ssh keys ( need some cleaning )">root at mageia.org
+ </A><BR>
+ <I>Wed Nov 17 15:17:29 CET 2010</I>
+ <P><UL>
+ <LI>Previous message: <A HREF="000566.html">[Mageia-sysadm] [261] - renable ml domain after fixing the CNAME issue
+</A></li>
+ <LI>Next message: <A HREF="000568.html">[Mageia-sysadm] [263] - adapt the script to our infrastructure ( ie, use our domain, and create the directory holding the key )
+</A></li>
+ <LI> <B>Messages sorted by:</B>
+ <a href="date.html#567">[ date ]</a>
+ <a href="thread.html#567">[ thread ]</a>
+ <a href="subject.html#567">[ subject ]</a>
+ <a href="author.html#567">[ author ]</a>
+ </LI>
+ </UL>
+ <HR>
+<!--beginarticle-->
+<PRE>Revision: 262
+Author: misc
+Date: 2010-11-17 15:17:29 +0100 (Wed, 17 Nov 2010)
+Log Message:
+-----------
+- import mandriva script to export ssh keys ( need some cleaning )
+
+Modified Paths:
+--------------
+ puppet/modules/restrictshell/manifests/init.pp
+
+Added Paths:
+-----------
+ puppet/modules/restrictshell/templates/ldap-sshkey2file.py
+
+Modified: puppet/modules/restrictshell/manifests/init.pp
+===================================================================
+--- puppet/modules/restrictshell/manifests/init.pp 2010-11-17 02:45:43 UTC (rev 261)
++++ puppet/modules/restrictshell/manifests/init.pp 2010-11-17 14:17:29 UTC (rev 262)
+@@ -26,4 +26,21 @@
+ mode =&gt; 755,
+ content =&gt; template(&quot;restrictshell/membersh-conf.pl&quot;),
+ }
++
++ package { 'python-ldap':
++ ensure =&gt; installed,
++ }
++
++ file { '/usr/local/bin/ldap-sshkey2file.py':
++ ensure =&gt; present,
++ owner =&gt; root,
++ group =&gt; root,
++ mode =&gt; 755,
++ content =&gt; template(&quot;restrictshell/ldap-sshkey2file.py&quot;),
++ requires =&gt; Package['python-ldap']
++ }
++
++
++
++
+ }
+
+Added: puppet/modules/restrictshell/templates/ldap-sshkey2file.py
+===================================================================
+--- puppet/modules/restrictshell/templates/ldap-sshkey2file.py (rev 0)
++++ puppet/modules/restrictshell/templates/ldap-sshkey2file.py 2010-11-17 14:17:29 UTC (rev 262)
+@@ -0,0 +1,92 @@
++#!/usr/bin/python
++
++import sys
++import os
++import random
++
++try:
++ import ldap
++except ImportError, e:
++ print &quot;Please install python-ldap before running this program&quot;
++ sys.exit(1)
++
++basedn=&quot;dc=mandriva,dc=com&quot;
++peopledn=&quot;ou=people,%s&quot; % basedn
++uris=['<A HREF="ldap://kenobi.mandriva.com">ldap://kenobi.mandriva.com</A>','<A HREF="ldap://svn.mandriva.com">ldap://svn.mandriva.com</A>']
++random.shuffle(uris)
++uri = &quot; &quot;.join(uris)
++timeout=5
++binddn=&quot;uid=sshkeyreader,ou=System Accounts,%s&quot; % basedn
++pwfile=&quot;/etc/sshkeyreader.pw&quot;
++# filter out disabled accounts also
++# too bad uidNumber doesn't support &gt;= filters
++filter=&quot;(&amp;(objectClass=inetOrgPerson)(objectClass=ldapPublicKey)(objectClass=posixAccount)(sshPublicKey=*)(!(shadowExpire=*)))&quot;
++keypathprefix=&quot;/var/lib/config/pubkeys&quot;
++
++def usage():
++ print &quot;%s&quot; % sys.argv[0]
++ print
++ print &quot;Will fetch all enabled user accounts under %s&quot; % peopledn
++ print &quot;with ssh keys in them and write each one to&quot;
++ print &quot;%s/&lt;login&gt;/authorized_keys&quot; % keypathprefix
++ print
++ print &quot;This script is intented to be run from cron as root&quot;
++ print
++
++def get_pw(pwfile):
++ try:
++ f = open(pwfile, 'r')
++ except IOError, e:
++ print &quot;Error while reading password file, aborting&quot;
++ print e
++ sys.exit(1)
++ pw = f.readline().strip()
++ f.close()
++ return pw
++
++def write_keys(keys, user, uid, gid):
++ try:
++ os.makedirs(&quot;%s/%s&quot; % (keypathprefix,user), 0700)
++ except:
++ pass
++ keyfile = &quot;%s/%s/authorized_keys&quot; % (keypathprefix,user)
++ f = open(keyfile, 'w')
++ for key in keys:
++ f.write(key.strip() + &quot;\n&quot;)
++ f.close()
++ os.chmod(keyfile, 0600)
++ os.chown(keyfile, uid, gid)
++ os.chmod(&quot;%s/%s&quot; % (keypathprefix,user), 0700)
++ os.chown(&quot;%s/%s&quot; % (keypathprefix,user), uid, gid)
++
++if len(sys.argv) != 1:
++ usage()
++ sys.exit(1)
++
++bindpw = get_pw(pwfile)
++
++try:
++ ld = ldap.initialize(uri)
++ ld.set_option(ldap.OPT_NETWORK_TIMEOUT, timeout)
++ ld.start_tls_s()
++ ld.bind_s(binddn, bindpw)
++ res = ld.search_s(peopledn, ldap.SCOPE_ONELEVEL, filter, ['uid','sshPublicKey','uidNumber','gidNumber'])
++ try:
++ os.makedirs(keypathprefix, 0701)
++ except:
++ pass
++ for result in res:
++ dn, entry = result
++ # skip possible system users
++ if int(entry['uidNumber'][0]) &lt; 500:
++ continue
++ write_keys(entry['sshPublicKey'], entry['uid'][0], int(entry['uidNumber'][0]), int(entry['gidNumber'][0]))
++ ld.unbind_s()
++except Exception, e:
++ print &quot;Error&quot;
++ raise
++
++sys.exit(0)
++
++
++# vim:ts=4:sw=4:et:ai:si
+
+
+Property changes on: puppet/modules/restrictshell/templates/ldap-sshkey2file.py
+___________________________________________________________________
+Added: svn:executable
+ + *
+-------------- next part --------------
+An HTML attachment was scrubbed...
+URL: &lt;/pipermail/mageia-sysadm/attachments/20101117/f94d7af2/attachment.html&gt;
+</PRE>
+
+
+
+
+
+
+
+
+
+
+<!--endarticle-->
+ <HR>
+ <P><UL>
+ <!--threads-->
+ <LI>Previous message: <A HREF="000566.html">[Mageia-sysadm] [261] - renable ml domain after fixing the CNAME issue
+</A></li>
+ <LI>Next message: <A HREF="000568.html">[Mageia-sysadm] [263] - adapt the script to our infrastructure ( ie, use our domain, and create the directory holding the key )
+</A></li>
+ <LI> <B>Messages sorted by:</B>
+ <a href="date.html#567">[ date ]</a>
+ <a href="thread.html#567">[ thread ]</a>
+ <a href="subject.html#567">[ subject ]</a>
+ <a href="author.html#567">[ author ]</a>
+ </LI>
+ </UL>
+
+<hr>
+<a href="https://www.mageia.org/mailman/listinfo/mageia-sysadm">More information about the Mageia-sysadm
+mailing list</a><br>
+</body></html>