Linux:chsh和ypchsh都不起作用,我可以更改shell吗?


8

我是一个老派的Unix家伙,所以我的Linux技能可能稍微过时了。但这看起来应该很简单。

在我没有root的Red Hat Linux系统上(由公司IT部门管理),我希望能够更改我的登录shell。运行chsh给了我:

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

所以,我改为运行ypchsh:

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

是什么赋予了?有没有其他想法?


3
你是 使用NIS?或者它是像LDAP?
Ignacio Vazquez-Abrams

我很确定我们的网络正在使用LDAP,因为此时NIS非常陈旧。
Ogre Psalm33

Answers:


8
  • NIS: ypchsh

  • LDAP:

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    YOUR_DN 可能是在形式 uid=$USER,ou=people,dc=example,dc=org;尝试 ldapwhoami 查看)

  • 赫西奥德: 询问系统管理员。

  • 活动目录 :询问系统管理员。


一位同事告诉我他们认为这是LDAP,但是ldapwhoami给出了“ldap_sasl_interactive_bind_s:未知的身份验证方法(-6)附加信息:SASL(-4):没有可用的机制:”,所以我在这一点上猜测Active Directory。我不得不问问。
Ogre Psalm33

@Ogre:检查/etc/nsswitch.conf(行'passwd')以确保。
grawity

5

我在登录时使用了一种解决方法来更改我的shell。 我刚刚放了 bash 用来改变我的shell .profile 文件。

你可以找到 .profile 在用户的主目录中 - 使用 ls -la 看见了。

您的 .profile 文件可能有这样的东西:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
这是一个公平的解决方法。虽然,在一行上只有/ usr / bin / bash会更容易。此外,“执行”新shell可能更好,从而取代当前的流程。
Peter Jenkins

我也这样做 .shellrc (更改为正确的文件名),但我之前也声明了一个环境变量,和 exec bash 只有在没有设置的情况下,才允许手动执行shell,并防止不幸的循环。请注意,您不必使用特定的shell方言,因为您可以使用正确的shebang执行脚本来执行这些操作。
MayeulC

4

所以在我的案例中真正的答案是系统管理员(IT)想要锁定标准配置,所以你必须问他们。但是在处理过程中,我发现了一些更有用的命令来确定你的LDAP配置(如果这恰好是你的配置),以防你的系统报告相同的SASL错误“ldap_sasl_interactive_bind_s:未知的身份验证方法(-6)其他信息:SASL(-4):没有可用的机制:“

列出系统支持的SASL身份验证方法:

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

结果可能是这样的:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

然后,您可以使用-Y选项将身份验证方法传递给LDAP命令,如下所示:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

另一种解决方案是简单地覆盖您的YP shell:

将此行添加到您的 /etc/passwd

+<USERNAME>::::::/bin/bash

例:

+psalm33::::::/bin/bash

并将以下内容添加到您的 /etc/nsswitch.conf

passwd: compat

passwd_compat: nis

正如我所说,我的系统上没有root(所以/ etc中的文件是禁止编辑的)。但是,这个答案可能会帮助其他有类似问题的人。
Ogre Psalm33

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.