我必须编写一个脚本,它需要根特权来执行某些linux逗号,并停止和启动一些服务。我被要求完全禁用对所有用户的sudo访问(因为普通用户可以使用命令sudo-s来访问root用户),我做到了。因此,我正在寻找脚本,以自动切换用户密码(Su),这不需要用户干预。
编辑:1
在进一步的研究中,我得到了我需要的脚本:
#!/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
任何帮助..。
发布于 2010-11-03 18:58:44
如果用户没有运行任何SHELL的权限,则无法运行sudo -s。
您想要的是让用户确切地告诉您他们想要运行哪些命令。特别要注意的是,他们想要运行的任何命令都是根用户拥有的,这样他们就不能用后来提升其权限的东西来替换它们。
例如,如果他们希望能够运行ifconfig,
%netadmins ALL=(ALL) NOPASSWD: /sbin/ifconfig尝试一下,您将看到netadmins组只能运行/sbin/ifconfig,而不需要输入作为root的密码。
发布于 2010-10-28 09:05:23
如果您需要以非根用户的身份运行该脚本,则应该配置sudo以允许这样做。您可以为每个用户或组配置sudo,以允许所有或仅允许某些命令,无论是否有密码。所有用户完全禁用sudo可能不是您想要的..。
发布于 2010-10-28 09:47:39
您可以在该脚本上设置执行粘性位,以便它始终作为脚本的所有者执行。有点像chmod 4750 script_name
期望可用于自动化脚本中的响应。请注意这两种方法中的任何一种,因为它们可能会带来安全风险,特别是当授予常规用户更高的权限时。
正确配置sudo,而不是像JanC所说的完全禁用它,可能是最好的解决方案。
https://askubuntu.com/questions/9942
复制相似问题