4

Когда я SSH на сервер, как и все, кроме root, он показывает только $, а не путь. Это также не позволяет мне нажимать клавишу «вверх» и просматривать историю команд, когда я не использую SSH в качестве пользователя root. Как я могу дать другим пользователям упомянутые варианты?

3 ответа3

6

Для этого есть два шага.

Шаг 1) Убедитесь, что ваши пользователи используют оболочку bash. Посмотрите на запись для каждого пользователя в /etc /passwd и убедитесь, что она заканчивается в /bin /bash. Например, если вы видите это:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/sh

затем измените это на это:

joeuser:x:1234:1234:Joe User:/home/joeuser:/bin/bash

Использование bash должно исправить проблему со стрелкой вверх и включит следующий шаг.

Шаг 2) Если вы все еще не видите подсказку с текущим рабочим каталогом, то скажите bash, что вы хотите. Есть два способа сделать это. Добавьте следующую строку:

export PS1='\w> '

либо

  1. Файл каждого пользователя .bash_profile ; ИЛИ ЖЕ
  2. Общесистемный файл /etc/profile

Эта строка назначает переменную PS1 , которая представляет основной запрос оболочки. Я рекомендую поместить его в /etc/profile поскольку это проще и предоставляет полезную подсказку всем вашим пользователям. Если пользователь хочет что-то еще для своего приглашения, он всегда может отредактировать свой собственный файл .bash_profile .

Примечание: если в вашей системе есть /etc/bash.bashrc поместите туда строку вместо /etc/profile .

1

Моя справочная страница passwd(5) говорит об этом в последнем поле записи /etc/passwd , которое называется «интерпретатор команд»:

Поле интерпретатора команд содержит имя интерпретатора командного языка пользователя или имя исходной программы для выполнения. Программа входа в систему использует эту информацию для установки значения переменной среды $ SHELL. Если это поле пустое, по умолчанию используется значение /bin/sh.

Итак, похоже, ваши варианты:

  1. Поместите своих пользователей в файл /etc/passwd .
  2. Предоставьте своим пользователям информацию, доступную через NIS или другие сетевые средства.
  3. Ссылка /bin/sh на другую оболочку. Я не рекомендую этого, потому что программы, скорее всего, полагаются на поведение существующего /bin/sh .
1

Это звучит довольно странно, так как по умолчанию любой пользователь без полномочий root должен иметь базовую функциональность, которую вы описываете. Тем не менее, этот вопрос звучит знакомо. Всякий раз, когда я настраиваю пользователя в Ubuntu (Debian), я использую adduser который отлично работает; но у меня всегда были проблемы с useradd. Как говорится на официальной странице man для useradd:

useradd - это утилита низкого уровня для добавления пользователей. В Debian администраторы обычно должны использовать вместо этого adduser(8).

Причина кроется в том, что useradd - это, в конечном счете, низкоуровневый системный двоичный файл, который требует больше команд, чем просто имя пользователя, для добавления путей и информации оболочки для нового пользователя. В отличие от этого, adduser представляет собой Perl-скрипт-оболочку для useradd который обеспечивает более удобный и удобный рабочий процесс для создания нового пользователя в системе без особых раздумий. Просто подумайте о adduser как о «мастере» настройки для useradd .

Таким образом, если вы добавили пользователя с помощью useradd скорее всего, вы пропустили настройку конфигурации в параметрах командной строки. Технически, вы добавили пользователя в систему, но не более того, в конфигурации системы. В отличие от этого, adduser предназначен для работы со всеми основными функциями.

Зная это, я бы порекомендовал вам удалить любого пользователя, которого вы уже создали, вот так; конечно измените [username] на фактическое имя пользователя:

sudo deluser --remove-home [username]

А затем воссоздайте этого пользователя с adduser следующим образом:

sudo adduser [username]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .