Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
7cafbde5
Commit
7cafbde5
authored
9 years ago
by
yumaojun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update sudo
parent
4d844548
master
auditor_jym
audits
dev
dev_beta
dev_beta_db
gengmei
lagacy-0.4.0
node_service
password
rbac
restrict_access
test
v52
wph
1.5.2
1.5.1
1.5.0
1.4.10
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.0
0.3.3
0.3.2
0.3.2-rc2
0.3.1
0.3.0-beta
v1.4.10
v1.4.7
v1.4.4
No related merge requests found
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
32 additions
and
26 deletions
+32
-26
ansible_api.py
jperm/ansible_api.py
+6
-18
views.py
jperm/views.py
+2
-3
role_sudo.j2
templates/jperm/role_sudo.j2
+24
-5
No files found.
jperm/ansible_api.py
View file @
7cafbde5
...
...
@@ -248,6 +248,7 @@ class Tasks(Command):
forks
=
10
,
group
=
'default_group'
,
pattern
=
'*'
,
become
=
False
,
):
"""
run command from andible ad-hoc.
...
...
@@ -261,7 +262,7 @@ class Tasks(Command):
subset
=
group
,
pattern
=
pattern
,
forks
=
forks
,
become
=
Fals
e
,
become
=
becom
e
,
)
self
.
results
=
hoc
.
run
()
...
...
@@ -324,7 +325,7 @@ class Tasks(Command):
"""
encrypt_pass
=
sha512_crypt
.
encrypt
(
password
)
module_args
=
'name=
%
s shell=/bin/bash password=
%
s'
%
(
username
,
encrypt_pass
)
self
.
__run
(
module_args
,
"user"
)
self
.
__run
(
module_args
,
"user"
,
become
=
True
)
return
{
"status"
:
"failed"
,
"msg"
:
self
.
msg
}
if
self
.
msg
else
{
"status"
:
"ok"
}
...
...
@@ -402,7 +403,7 @@ class Tasks(Command):
default_mac is string
product_name is string
"""
self
.
__run
(
''
,
'setup'
)
self
.
__run
(
''
,
'setup'
,
become
=
True
)
result
=
{}
all
=
self
.
results
.
get
(
"contacted"
)
...
...
@@ -439,21 +440,8 @@ class Tasks(Command):
:return:
"""
module_args1
=
file_path
ret1
=
self
.
__run
(
module_args1
,
"script"
)
module_args2
=
'visudo -c | grep "parsed OK" &> /dev/null && echo "ok" || echo "failed"'
ret2
=
self
.
__run
(
module_args2
,
"shell"
)
ret2_status
=
[
host_value
.
get
(
"stdout"
)
for
host_value
in
ret2
[
"result"
][
"contacted"
]
.
values
()]
result
=
{}
if
not
ret1
[
"msg"
]:
result
[
"step1"
]
=
"ok"
else
:
result
[
"step1"
]
=
"failed"
if
not
ret2
[
"msg"
]
and
"failed"
not
in
ret2_status
:
result
[
"step2"
]
=
"ok"
else
:
result
[
"step2"
]
=
"failed"
result
=
self
.
__run
(
module_args1
,
"script"
)
print
result
return
result
...
...
This diff is collapsed.
Click to expand it.
jperm/views.py
View file @
7cafbde5
...
...
@@ -463,9 +463,8 @@ def perm_role_push(request):
add_sudo_script
=
get_add_sudo_script
(
role_chosen_aliase
,
sudo_alias
)
ret_sudo
=
task
.
push_sudo_file
(
add_sudo_script
)
if
ret_sudo
[
"step1"
]
!=
"ok"
or
ret_sudo
[
"step2"
]
!=
"ok"
:
ret_failed
[
"step3"
]
=
"failed"
os
.
remove
(
add_sudo_script
)
print
add_sudo_script
# os.remove(add_sudo_script)
print
ret
...
...
This diff is collapsed.
Click to expand it.
templates/jperm/role_sudo.j2
View file @
7cafbde5
...
...
@@ -2,8 +2,12 @@
sudo_file
=
/etc/sudoers
sudo_file_bak
=
/etc/sudoers.bak
# Backup sudoers file
cp
${
sudo_file
}
${
sudo_file_bak
}
# Add Command Aliases
add_cmd_alias
()
{
{
%
for
sudo
in
sudo_alias %
}
...
...
@@ -16,18 +20,33 @@ add_cmd_alias() {
}
# Add Command Aliases to role
add_role_chosen
()
{
{
%
for
role, sudos
in
role_chosen_aliase.items %
}
{
%
for
sudo
in
sudos %
}
if
$(
grep
'^{{ role }}.*
sudo.name
'
${
sudo_file
}
&> /dev/null
)
;
then
sed
-i
's@^{{ role }}.*
sudo.name@{{ role }} ALL = ({{ sudo.runas }})
NOPASSWD: {{ sudo.name }}@g'
${
sudo_file
}
if
$(
grep
'^{{ role }}.*
{{ sudo.name }}
'
${
sudo_file
}
&> /dev/null
)
;
then
sed
-i
's@^{{ role }}.*
{{ sudo.name }}@{{ role }} ALL =
NOPASSWD: {{ sudo.name }}@g'
${
sudo_file
}
else
echo
"{{ role }} ALL =
({{ sudo.runas }})
NOPASSWD: {{ sudo.name }}"
>>
${
sudo_file
}
echo
"{{ role }} ALL = NOPASSWD: {{ sudo.name }}"
>>
${
sudo_file
}
fi
{
% endfor %
}
{
% endfor %
}
}
# Check sudoers file configured correctly
check_sudo_file
()
{
status
=
$(
visudo
-c
&> /dev/null
&&
echo
"ok"
||
echo
"failed"
)
if
[
${
status
}
==
"failed"
]
;
then
mv
${
sudo_file_bak
}
${
sudo_file
}
ret
=
"failed"
else
ret
=
"ok"
fi
}
add_cmd_alias
add_role_chosen
\ No newline at end of file
add_role_chosen
check_sudo_file
echo
${
ret
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
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