我想使用su命令从hadoopmaster切换到hduser。当我在终端上这样做时,我会这样做:
su - hduser
然后,它要求我输入密码,我输入密码,然后进入hduser。我怎样才能在shell脚本中做同样的事情而不用担心密码呢?我尝试了sudoers文件方法,在其中我放置了:
root ALL=(ALL:ALL) ALL
hduser ALL=(ALL:ALL) ALL
hadoopmaster ALL=(ALL:ALL) NOPASSWD: /bin/su hduser
(here I tried different combinations of the line with a
我在SLES11SP4上配置了LDAP服务器(使用YaST),并创建了3个用户。我可以(从根用户)到任何用户,但我不能作为他们中的任何一个登录或更改他们的密码。
当我尝试在/var/ log /消息中登录(使用su作为标准用户)时,我有:
suse1 su: pam_ldap: error trying to bind as user "uid=user3,dc=linux" (Invalid credentials)
suse1 su: FAILED SU (to user3) root on /dev/pts/0
当我尝试更改/var/log/messages中的密码时:
我所要做的事情的整个目标是成为根用户并运行一个进程。但是,我创建了一个进程,调用一个辅助主机,并运行一个脚本来获取我想要的Linux主机的根密码。在此之后,我将密码传回var ansible_become_password:。尽管每次我传递它时,它都会抛出"password is undefined“错误。
我查找变量优先级,但当我尝试另一种方式时,我收到了相同的错误。
代码:
# Root
- name: Run as root user. privileged escalation using su
hosts: 10.x.x.1
gather_facts: false
我需要一种方法来执行os.system()模块作为不同的UID,它的行为需要类似于下面的BASH代码(注意,这些并不是我正在执行的命令):
su user1
ls ~
mv file1
su user2
ls ~
mv file1
目标平台是GNU Linux Generic。
当然,我可以只将它们传递给os.system模块,但是如何发送密码呢?当然,我可以以root用户身份运行该脚本,但这是草率和不安全的。
我最好不要求任何密码是纯文本的。
当我做sudo su - john时,我就变成了用户john ,而不需要提供密码。
但是当我这么做的时候:sudo su - john /usr/share/script_to_run.pl我被要求提供一个密码。sudo -u john /usr/share/script_to_run.pl也一样
为什么?我在这里做错什么了?
Linux (安装在我的电脑上)不想再启动了。因此,我通过从可引导的Linux棒运行Linux来访问硬盘上的数据。但是我的硬盘上的一些文件只能用本地用户名读取。我试着使用终端:苏-用户名,但是它找不到这个用户名。
那么,如何(从我的Live )告诉"su“使用本地硬盘上存在的用户名登录呢?我需要这样做,因为我忘记了我的电子邮件密码,这是由mozilla雷鸟的密码管理器本地存储。