Linux: ни chsh, ни ypchsh не работают, могу ли я изменить свою оболочку?


8

Я парень из Unix старой школы, так что мои навыки в Linux, вероятно, немного устарели. Но, похоже, это должно быть достаточно просто.

В системе Red Hat Linux, где у меня нет root (он администрируется ИТ-отделом компании), я хочу иметь возможность изменить свою оболочку входа в систему. Запуск 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?
Игнасио Васкес-Абрамс

Я почти уверен, что наша сеть использует LDAP, так как NIS довольно устарел на данный момент.
Огр псалом33

Ответы:


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посмотреть)

  • Гесиод: Спросите системного администратора.

  • Active Directory : спросите системного администратора.


Коллега сказал мне, что они думают, что это LDAP, но ldapwhoami выдает «ldap_sasl_interactive_bind_s: неизвестный метод аутентификации (-6) дополнительную информацию: SASL (-4): механизм недоступен:», поэтому я предполагаю Active Directory на данный момент. Я должен спросить это.
Огр Псалом 33

@Ogre: проверьте /etc/nsswitch.conf (строка 'passwd'), чтобы убедиться.
user1686

5

Я использовал один обходной путь, чтобы изменить мою оболочку при входе в систему. Я только что положил, bashкоторый используется для изменения оболочки в моем .profileфайле.

Вы можете найти .profileв домашнем каталоге пользователя - используйте, ls -laчтобы увидеть его.

Ваш .profileфайл может иметь что-то вроде этого:

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

7
Это справедливый обходной путь. Хотя было бы проще иметь только / usr / bin / bash в одной строке. Также, вероятно, лучше выполнить новую оболочку, тем самым заменив текущий процесс.
Питер Дженкинс

Я делаю то же самое с .shellrc(изменено на правильное имя файла), но я также объявляю переменную среды раньше, и exec bashтолько если она не установлена, чтобы разрешить выполнение оболочки вручную и предотвратить нежелательные циклы. Обратите внимание, что вам не нужно использовать определенный диалект оболочки, так как вы можете просто выполнить сценарий с правильным shebang для выполнения этих операций.
MayeulC

4

Таким образом, реальный ответ в моем случае заключается в том, что системные администраторы (ИТ) хотят заблокировать стандартную конфигурацию, поэтому вы должны спросить их. Но в процессе я обнаружил еще несколько полезных команд для выяснения вашей конфигурации LDAP (если это происходит именно так, как вы настроили), на тот случай, если ваша система сообщает об одной и той же ошибке SASL "ldap_sasl_interactive_bind_s: неизвестный метод аутентификации (-6) дополнительная информация : SASL (-4): механизм недоступен: "

Перечислите методы аутентификации SASL, которые поддерживает ваша система:

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

Результаты могут быть примерно такими:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Затем вы можете передать метод аутентификации командам LDAP, используя опцию -Y, например так:

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

4

Другое решение - просто переопределить вашу оболочку YP:

Добавьте эту строку в ваш /etc/passwd:

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

Пример:

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

И добавьте следующее к себе /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

Как я уже говорил, у меня нет root в моей системе (поэтому файлы в / etc запрещены для редактирования). Но этот ответ может помочь кому-то еще с подобной проблемой.
Огр Псалом 33

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.