Когда я SSH на сервер, как и все, кроме root, он показывает только $, а не путь. Это также не позволяет мне нажимать клавишу «вверх» и просматривать историю команд, когда я не использую SSH в качестве пользователя root. Как я могу дать другим пользователям упомянутые варианты?
3 ответа
Для этого есть два шага.
Шаг 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> '
либо
- Файл каждого пользователя
.bash_profile
; ИЛИ ЖЕ - Общесистемный файл
/etc/profile
Эта строка назначает переменную PS1
, которая представляет основной запрос оболочки. Я рекомендую поместить его в /etc/profile
поскольку это проще и предоставляет полезную подсказку всем вашим пользователям. Если пользователь хочет что-то еще для своего приглашения, он всегда может отредактировать свой собственный файл .bash_profile
.
Примечание: если в вашей системе есть /etc/bash.bashrc
поместите туда строку вместо /etc/profile
.
Моя справочная страница passwd(5)
говорит об этом в последнем поле записи /etc/passwd
, которое называется «интерпретатор команд»:
Поле интерпретатора команд содержит имя интерпретатора командного языка пользователя или имя исходной программы для выполнения. Программа входа в систему использует эту информацию для установки значения переменной среды $ SHELL. Если это поле пустое, по умолчанию используется значение /bin/sh.
Итак, похоже, ваши варианты:
- Поместите своих пользователей в файл
/etc/passwd
. - Предоставьте своим пользователям информацию, доступную через NIS или другие сетевые средства.
- Ссылка
/bin/sh
на другую оболочку. Я не рекомендую этого, потому что программы, скорее всего, полагаются на поведение существующего/bin/sh
.
Это звучит довольно странно, так как по умолчанию любой пользователь без полномочий 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]