首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在脚本中自动切换用户密码

问在脚本中自动切换用户密码
EN

Ask Ubuntu用户
提问于 2010-10-28 08:48:46
回答 3查看 2.5K关注 0票数 0

我必须编写一个脚本,它需要根特权来执行某些linux逗号,并停止和启动一些服务。我被要求完全禁用对所有用户的sudo访问(因为普通用户可以使用命令sudo-s来访问root用户),我做到了。因此,我正在寻找脚本,以自动切换用户密码(Su),这不需要用户干预。

编辑:1

在进一步的研究中,我得到了我需要的脚本:

代码语言:javascript
复制
#!/usr/bin/python
import pexpect
import os
passwd = "my-root-password-here"
child = pexpect.spawn('su root')
child.expect('Password:')
child.sendline(passwd)
child.expect('我已经检查了这个脚本,它以普通用户的身份手动执行登录,并且切换到root,没有任何问题。但是,当我输入exit/ctrl+d以切换回正常用户时,我会得到以下错误:Traceback (most recent call last):
 File "./su3.py", line 9, in <module>
  child.interact()
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1492, in interact
  self.__interact_copy(escape_character, input_filter, output_filter)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1520, in __interact_copy
  data = self.__interact_read(self.child_fd)
File "/usr/lib/python2.6/dist-packages/pexpect.py", line 1510, in __interact_read
  return os.read(fd, 1000)
OSError: [Errno 5] Input/output error任何帮助..。)
child.interact()

我已经检查了这个脚本,它以普通用户的身份手动执行登录,并且切换到root,没有任何问题。但是,当我输入exit/ctrl+d以切换回正常用户时,我会得到以下错误:

A2

任何帮助..。

EN

回答 3

Ask Ubuntu用户

回答已采纳

发布于 2010-11-03 18:58:44

如果用户没有运行任何SHELL的权限,则无法运行sudo -s。

您想要的是让用户确切地告诉您他们想要运行哪些命令。特别要注意的是,他们想要运行的任何命令都是根用户拥有的,这样他们就不能用后来提升其权限的东西来替换它们。

例如,如果他们希望能够运行ifconfig,

代码语言:javascript
复制
%netadmins ALL=(ALL) NOPASSWD: /sbin/ifconfig

尝试一下,您将看到netadmins组只能运行/sbin/ifconfig,而不需要输入作为root的密码。

票数 3
EN

Ask Ubuntu用户

发布于 2010-10-28 09:05:23

如果您需要以非根用户的身份运行该脚本,则应该配置sudo以允许这样做。您可以为每个用户或组配置sudo,以允许所有或仅允许某些命令,无论是否有密码。所有用户完全禁用sudo可能不是您想要的..。

票数 2
EN

Ask Ubuntu用户

发布于 2010-10-28 09:47:39

您可以在该脚本上设置执行粘性位,以便它始终作为脚本的所有者执行。有点像chmod 4750 script_name

期望可用于自动化脚本中的响应。请注意这两种方法中的任何一种,因为它们可能会带来安全风险,特别是当授予常规用户更高的权限时。

正确配置sudo,而不是像JanC所说的完全禁用它,可能是最好的解决方案。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/9942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档