Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Crans Passwords
Manage
Activity
Members
Labels
Plan
Issues
5
Issue boards
Milestones
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Nounous
Crans Passwords
Commits
7dacd6bb
Commit
7dacd6bb
authored
11 years ago
by
Vincent Le gallic
Committed by
root
11 years ago
Browse files
Options
Downloads
Patches
Plain Diff
Makefile côté serveur.
parent
dca1572b
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
Makefile
+12
-0
12 additions, 0 deletions
Makefile
README
+15
-3
15 additions, 3 deletions
README
server
+1
-1
1 addition, 1 deletion
server
server.py
+17
-13
17 additions, 13 deletions
server.py
with
45 additions
and
17 deletions
Makefile
+
12
−
0
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
This diff is collapsed.
Click to expand it.
README
+
15
−
3
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
...
...
This diff is collapsed.
Click to expand it.
server
+
1
−
1
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
$*
This diff is collapsed.
Click to expand it.
server.py
+
17
−
13
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
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment