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 досить застаріла.
Псалом Огре3333

Відповіді:


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 на даний момент. Мені доведеться запитати його.
Псалом Огре3333

@Ogre: Перевірте /etc/nsswitch.conf (рядок 'passwd'), щоб переконатися.
користувач1686

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лише якщо вона не встановлена, щоб дозволити виконувати оболонку вручну та запобігти нещасним циклам. Зауважте, що вам не потрібно використовувати конкретний діалект оболонки, оскільки ви можете просто виконати сценарій з правильним шебангом для виконання цих операцій.
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

Потім ви можете передати метод аутентифікації командам 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

Як я вже заявив, у мене немає кореня в моїй системі (тому файли в / etc є поза межами для редагування). Але ця відповідь може допомогти комусь із подібним питанням.
Псалом Огре 3333

0

Ще один спосіб побачити повноваження для головної відповіді ldapsearch -x

ldapsearch -x uid=$(whoami)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.