我正在尝试将我的点文件和一些个人配置文件推送到服务器(我不是root或sudoer)。Ansible以我的用户身份连接,以便编辑我的主文件夹中的文件。
我想将我的默认shell设置为usr/bin/fish
。我不允许编辑/etc/passwd
,所以
user:
name: shaka
shell: /usr/bin/fish
不会跑的。
我还检查了chsh
命令,但可执行程序提示我的密码。
我怎么能在这样的机器上换壳呢?(Debian 8,Ubuntu 16,Opensuse)
4条答案
按热度按时间nfs0ujit1#
我知道这是旧的,但我想张贴这一点的情况下,其他人回来这里寻找建议像我一样:
如果您正在运行本地playbook,则可能没有指定用户,并期望更改运行playbook的用户的shell。
问题是,如果不提升特权(
become: yes
),您就不能更改shell,但是当您这样做时-您是以root身份运行的。这只会改变root用户的shell。您可以通过查看/etc/passwd并查看根shell是什么来仔细检查是否是这种情况。下面是我改变运行playbook的用户的shell的方法:
这将把变量
the_user
设置为当前运行的用户,但会使用root更改该用户的shell。sulc1iza2#
最后我使用了两个Ansible模块:
首先,我记录了我的密码,并提示:
然后我使用模块
expect
将密码发送到chsh命令:creates
设置一个锁定文件,避免再次触发此任务。这可能是危险的,因为shell可能会在之后被更改,而ansible不会更新它(因为锁仍然存在)。你可能想避免这种行为。mzsu5hc03#
我是这样做的:
uubf1zoe4#
Ubuntu 16
在
~/.bashrc
中添加第一行/usr/bin/fish && exit