Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Crans Passwords
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
Crans Passwords
Commits
7dacd6bb
Commit
7dacd6bb
authored
Jul 28, 2013
by
Vincent Le gallic
Committed by
root
Jul 28, 2013
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Makefile côté serveur.
parent
dca1572b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
17 deletions
+45
-17
Makefile
Makefile
+12
-0
README
README
+15
-3
server
server
+1
-1
server.py
server.py
+17
-13
No files found.
Makefile
View file @
7dacd6bb
...
...
@@ -11,6 +11,12 @@ after=cmd_name = '${cmd_name}'
before2
=
cmd_name
=
${cmd_original_name}
after2
=
cmd_name
=
${cmd_name}
# Path du sudoer-file utilisé pour autoriser l'accès au script serveur
sudoer_file_path
=
/etc/sudoers.d/
${cmd_name}
# Groupe qui aura le droit de lire les fichiers de mot de passe
# (indépendamment de pouvoir les déchiffrer)
sudoer_group
=
respbats
build
:
@
echo
"Pour installer
${cmd_name}
:"
@
echo
"Exécutez make install pour installer le client pour vous."
...
...
@@ -35,3 +41,9 @@ install:
@
if
[
"
${cmd_name}
"
!=
"
${cmd_original_name}
"
]
;
then
make
--quiet
rerename
;
fi
install-server
:
@
echo
"Création du sudoer-file."
@
echo
"# Autorisation locale d'éxécution de
${cmd_name}
"
>
${sudoer_file_path}
@
echo
" %
${sudoer_group}
ALL=(root) NOPASSWD: /usr/local/bin/
${cmd_name}
-server"
>>
${sudoer_file_path}
install
server.py /usr/local/bin/
${cmd_name}
-server
install
-d
/etc/
${cmd_name}
install
serverconfig.example.py /etc/
${cmd_name}
/serverconfig.py
README
View file @
7dacd6bb
...
...
@@ -5,17 +5,29 @@ ordinateur) et le serveur.
== Nom de la commande ==
Si vous voulez appeler votre commande autrement que "cranspasswords",
c'est possible. Il faut pour cela changer la variable cmd_name dans le Makefile
avant de lancer make install.
avant de lancer make install
ou make install-server
.
== Installation et configuration du client ==
* Copie
r
le dépôt git sur votre machine :
* Copie
z
le dépôt git sur votre machine :
$ git clone git://git.crans.org/git/cranspasswords.git
* Installe
r
le package python-gnupg
* Installe
z
le package python-gnupg
* Si ce n'est déjà fait, indiquer votre clé publique sur gest_crans
* Lancez make install
* Assurez-vous d'avoir ~/bin dans votre $PATH
* Exécutez cranspasswords test pour voir si vous arrivez à récupérer le mot de passe de test
== Installation et configuration du serveur ==
* Copiez le dépôt git sur le serveur :
$ git clone git://git.crans.org/git/cranspasswords.git
* Lancez sudo make install-server
* Il va installer un suoder-file, si vous voulez paramétrer
le groupe qui aura les accès en lecture aux fichiers de mot de passe,
changez la variable sudoer_group au début de Makefile.
La possibilité de lire les fichiers est indépendante de la capacité
à les déchiffrer.
* Éditez /etc/cranspasswords/serverconfig.py pour qu'il soit conforme
à vos désirs.
== Complétion ==
* Pour avoir la bash-complétion, dans votre .bashrc :
* Sourcez le fichier bash_completion présent dans le dépôt
...
...
server
View file @
7dacd6bb
...
...
@@ -2,4 +2,4 @@
# sudo-wrapper pour exécuter cranspasswords côté serveur
cmd_name
=
cranspasswords
sudo
/
root
/
${
cmd_name
}
/server.py
$*
sudo
/
usr/local/bin
/
${
cmd_name
}
/server.py
$*
server.py
View file @
7dacd6bb
...
...
@@ -13,7 +13,11 @@ import datetime
from
email.mime.text
import
MIMEText
from
email.mime.multipart
import
MIMEMultipart
from
serverconfig
import
READONLY
,
CRANSP_MAIL
,
DEST_MAIL
,
KEYS
,
ROLES
,
STORE
,
cmd_name
# Même problème que pour le client, il faut bootstraper le nom de la commande
# Pour accéder à la config
cmd_name
=
os
.
path
.
split
(
sys
.
argv
[
0
])[
1
].
replace
(
"-server"
,
""
)
sys
.
path
.
append
(
"/etc/%s/"
%
(
cmd_name
,))
import
serverconfig
MYUID
=
pwd
.
getpwuid
(
os
.
getuid
())[
0
]
if
MYUID
==
'root'
:
...
...
@@ -26,13 +30,13 @@ def validate(roles, mode='r'):
for
role
in
roles
:
if
mode
==
'w'
:
role
+=
'-w'
if
ROLES
.
has_key
(
role
)
and
MYUID
in
ROLES
[
role
]:
if
serverconfig
.
ROLES
.
has_key
(
role
)
and
MYUID
in
serverconfig
.
ROLES
[
role
]:
return
True
return
False
def
getpath
(
filename
,
backup
=
False
):
"""Récupère le chemin du fichier ``filename``"""
return
os
.
path
.
join
(
STORE
,
'%s.%s'
%
(
filename
,
'bak'
if
backup
else
'json'
))
return
os
.
path
.
join
(
serverconfig
.
STORE
,
'%s.%s'
%
(
filename
,
'bak'
if
backup
else
'json'
))
def
writefile
(
filename
,
contents
):
"""Écrit le fichier avec les bons droits UNIX"""
...
...
@@ -43,15 +47,15 @@ def writefile(filename, contents):
def
listroles
():
"""Liste des roles existant et de leurs membres"""
return
ROLES
return
serverconfig
.
ROLES
def
listkeys
():
"""Liste les usernames et les (mail, fingerprint) correspondants"""
return
KEYS
return
serverconfig
.
KEYS
def
listfiles
():
"""Liste les fichiers dans l'espace de stockage, et les roles qui peuvent y accéder"""
os
.
chdir
(
STORE
)
os
.
chdir
(
serverconfig
.
STORE
)
filenames
=
glob
.
glob
(
'*.json'
)
files
=
{}
...
...
@@ -128,14 +132,14 @@ def backup(corps, fname, old):
def
notification
(
subject
,
corps
,
fname
,
old
):
"""Envoie par mail une notification de changement de fichier"""
conn
=
smtplib
.
SMTP
(
'localhost'
)
frommail
=
CRANSP_MAIL
tomail
=
DEST_MAIL
frommail
=
serverconfig
.
CRANSP_MAIL
tomail
=
serverconfig
.
DEST_MAIL
msg
=
MIMEMultipart
(
_charset
=
"utf-8"
)
msg
[
'Subject'
]
=
subject
msg
[
'X-Mailer'
]
=
cmd_name
.
decode
()
msg
[
'From'
]
=
CRANSP_MAIL
msg
[
'To'
]
=
DEST_MAIL
msg
.
preamble
=
u
"%s report"
%
(
cmd_name
.
decode
(),)
msg
[
'X-Mailer'
]
=
serverconfig
.
cmd_name
.
decode
()
msg
[
'From'
]
=
serverconfig
.
CRANSP_MAIL
msg
[
'To'
]
=
serverconfig
.
DEST_MAIL
msg
.
preamble
=
u
"%s report"
%
(
serverconfig
.
cmd_name
.
decode
(),)
info
=
MIMEText
(
corps
+
u
"
\n
La version précédente a été sauvegardée."
+
u
"
\n\n
--
\n
Cranspasswords.py"
,
_charset
=
"utf-8"
)
...
...
@@ -150,7 +154,7 @@ if __name__ == "__main__":
if
len
(
argv
)
not
in
[
1
,
2
]:
sys
.
exit
(
1
)
command
=
argv
[
0
]
if
READONLY
and
command
in
WRITE_COMMANDS
:
if
serverconfig
.
READONLY
and
command
in
WRITE_COMMANDS
:
raise
IOError
(
"Ce serveur est read-only."
)
filename
=
None
try
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment