LINUX.ORG.RU

Проблема с окружением пользователя.

 , , ,


0

1

Дистр. Debian 4.12.6-1 x86_64 GNU/Linux (Kali linux)

Добрый день! Столкнулся с неприятной проблемой после обновления дистрибутива, или установки библиотеки(не знаю точно после той или другой или вообще они связаны могут быть) Проблема в том что на каждое обновление или установку программ, ругается на...

/** Чтение журнала изменений... Выполнено dpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH, или не является исполняемым dpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных в PATH, или не является исполняемым dpkg: ошибка: в каталогах PATH не найдено 2 ожидаемые программы или исполняемых файла Замечание: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin, /usr/sbin и /sbin E: Sub-process /usr/bin/dpkg returned an error code (2) */

Хорошо, скорее всего поломался sudoers подумал я, но оказалось что там все в порядке ։ ВЫХЛОП

/**

cat /etc/sudoers && cat /etc/profile             
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaultс secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "`id -u`" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi 
*/ *******/ echo $PATH сказал - /usr/local/bin:/usr/bin:/bin:/usr/local/games ЧТО?!

Попробовал экспортировать требуемые пути PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin || export PATH

echo $PATH исправился.

После закрытия терминала или перезагрузки опять все ломается :(

Приходиться перед установкой и обновлением явно указывать ключ

Пример :

echo $PATH |show| /usr/local/bin:/usr/bin:/bin:/usr/local/games |next comand|sudo -s |next| echo $PATH |show| /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Странности еще в том что если пытаюсь сделать апдейт и выскакивает ошибка -----Замечание: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin, /usr/sbin и /sbin и т.д.

То диод клавы сразу загорается и не отключается (SCROLL LOCK). Что-бы отключить приходится отключать и включать NUM LOCK. Плюс к диоду перемещение папок/файлов - мышкой, сразу дает сбой (папка остается на месте, зависает браузер и другие программы) Двигать перемещать приходиться командами из терминала .... Вот такие баги и глюки, помогите пока не поздно :(


Ответ на: комментарий от anonymous

Более понятие растяжимое

Kali - это дебиан. Ставил не для хакинга. А для тестирования своих серверов.

А насчет проблемы, идеи есть?

AXIOM ()

Хорошо, скорее всего поломался sudoers подумал я, но оказалось что там все в порядке

Хотелось бы понять как ты к такому выводу пришел.

После закрытия терминала или перезагрузки опять все ломается :(

Пропиши себе в /root/.bashrc еще две строчки

PATH=$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
mandala ★★★★ ()

Вот такие баги и глюки, помогите пока не поздно :(

пришло время переустанавливать калилинакс! :D

mandala ★★★★ ()
Ответ на: комментарий от mandala

Хотелось бы понять как ты к такому выводу пришел.

Если после обновления dist-upgrade видите такое.

Замечание: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin, /usr/sbin и /sbin E: Sub-process /usr/bin/dpkg returned an error code (2)

То исправлять надо именно sudoers. У меня файл не был изменен, и все пути в порядке.

Если дело только было в .bashrc mandala...проблема именно в окружении рута. Когда пытаешься взять папку и переместить ее, то все что открыто зависает.(конфликт) Приходится завершать процессы. И почему когда это случается, включается индикатор скролл на клаве мне тоже интересно.

Все таки debian прав, не нужны нам non-free и non-free contrib.

Да думаю, что все таки придется переустанавливать систему. Я скорее всего все таки выстрелил себе в ногу, постоянно сидя под рутом. Хана дистрибутиву :( год настраивал под себя.

AXIOM ()
Ответ на: комментарий от Karthago

Спасибо что написал

Но перенаправлять в маны очень не круто, притом что данный ман не имеет отношения к моей проблеме. Если понятия не имеете что случилось лучше и не писать.

AXIOM ()

1. Исправь верхнее сообщение, заключив цитаты из своих конфигов между тегами [code] и [/code], иначе невозможно читать.

В PATH суперпользователя обычно должны присутствовать /usr/local/sbin, /usr/sbin и /sbin

Соответственно:

2. Посмотри, что показывает

echo $PATH
при запуске от рута (в приглашении командной строки должна стоять решётка #).

3. Запусти команды

which ldconfig
which start-stop-daemon

и which другие_команды, на которые ругается твоя apt или что-там у тебя используется при установке. Убедись, что каждая команда which выводит путь к нужной программе, присутствующий в PATH (собственно, which выведет только пути, присутствующие в PATH или не выведет ничего).

4. Убедись, что запускаешь установку/обновление от рута.

aureliano15 ★★ ()
Ответ на: комментарий от bass

Возникла еще проблема, минут 20 назад. sudo -s перестал отвечать. sudo -s bash: dircolors: команда не найдена bash: figlet: команда не найдена

AXIOM ()
Ответ на: комментарий от mandala

Это было бы даже смешно, если бы не так грустно. Откуда они (новички с kali) берутся? Почему бы просто не использовать дистрибутив общего назначения, а для инструментов из kali развернуть debootstrap/chroot с тестингом и прописать туда соответствующие репы? Даже автоматизированное решение уже есть.

Karthago ★★ ()
Последнее исправление: Karthago (всего исправлений: 2)
Ответ на: комментарий от aureliano15

Напишу подробнее чтобы не подумал что этого не делал))

alien-sh# echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/games alien-sh# which ldconfig ldconfig not found alien-sh#

Конечно нот фоунд. Надо поправить. alien-sh# sudo -s alien-sh# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/sbin:/bin
Далее which ldconfig /sbin/ldconfig Находит.

AXIOM ()
Ответ на: Сори от AXIOM

Находит.

Ну и попробуй теперь запустить установку/обновление.

aureliano15 ★★ ()
Ответ на: Сори от AXIOM
alien-sh# echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/games 

alien-sh# which ldconfig 
ldconfig not found

alien-sh# sudo -s 
alien-sh# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/sbin:/bin

Похоже, у тебя переменная $PS1 для обычного пользователя установлена как для рута, в результате от обычного пользователя у тебя приглашение в виде решётки (#), хотя обычно принято выставлять доллар ($). Это очень неудобно: не видно, рут ты сейчас или нет. Лучше поправь в файле /home/user/.bashrc, где user - имя твоего пользователя и домашнего каталога.

aureliano15 ★★ ()

если переустанавливать будешь

Оставь хомяк (если ты под рутом, то твой хомяк это /root), т.е. забекапь его на фат32-флешку (чтоб с правами потом не мучаться). Если переустановишь, добавляй обычного пользователя, делай его wheel, настраивай sudo. Можешь и /etc забекапить, если там у тебя много правок, потом перенесешь нужное.

mandala ★★★★ ()
Ответ на: если переустанавливать будешь от mandala

Так и сделал, забэкапил то что настраивал под систему. Спасибо за советы и внимание. Тему отмечу как «решенною». Под конец даже терминал начал глючить.

AXIOM ()
Ответ на: комментарий от aureliano15

Я постоянно под рутом. Как ты правильно заметил

$PS1 - if [ "`id -u`" -eq 0 ]; then
      PS1='# '
у меня установлена для рута т.к. kali и нех ее ставить если бояться рута (в лес не ходить).

Система была угроблена под конец из за non-free contrib библиотек которые пришлось тестить... и лени бэкапить всю систему на такие случаи.

AXIOM ()
Ответ на: комментарий от AXIOM

В кали ни кто не мешает сделать пользователя. Так намного меньше вероятности что-то сломать (даже случайно, хоть от очепятки в команде). Рут еще можно оправдать для лайф системы (но все взрослые дистры и на лайфе делают пользователя), но на обычном хосте — так не принято, а многие приложения даже не запускаются (в других дистрах). Часто у рута и пароль залочен (можно юзать sudo -i чтоб судо не дергать постоянно).

mandala ★★★★ ()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от AXIOM

Я постоянно под рутом.

AXIOM и mandala, тогда я не понимаю, почему

alien-sh# echo $PATH 
/usr/local/bin:/usr/bin:/bin:/usr/games 

alien-sh# which ldconfig 
ldconfig not found

но дальше

alien-sh# sudo -s 
alien-sh# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/sbin:/bin

which ldconfig
/sbin/ldconfig

Что произошло при вводе команды «sudo -s», и почему изменилась переменная $PATH, благодаря чему which стала находить ldconfig, если с самого начала все команды вводились из-под рута?

kali и нех ее ставить если бояться рута (в лес не ходить).

Бояться рута не надо, но и сидеть под ним без надобности тоже не нужно. Это моветон.

Система была угроблена под конец из за non-free contrib библиотек

А откуда эти библиотеки? Из официального репозитория? Не знаю как в Kali, но в Debian они обычно систему не гробят, если только не смешивать репозитории из разных веток, особенно unstable.

забекапь его на фат32-флешку (чтоб с правами потом не мучаться)

Имхо, права лучше сохранить. Потом при необходимости можно будет и поменять. На фат - ради бога, но в tar-архиве с linux-правами, иначе потом все файлы станут исполняемыми (или наоборот неисполняемыми, в зависимости от параметров монтирования).

aureliano15 ★★ ()
Ответ на: комментарий от AXIOM

а с диском (накопителем информации) у тебя всё хорошо? а то может он у тебя HDD и отказал...

Einstok_Fair ★★☆ ()
Ответ на: комментарий от aureliano15

Что произошло

А хз что там судо творит, это надо смотреть детальнее.

Имхо, права лучше сохранить.

Можно, тем более меняются они легко: # chown -R user:user /backdirname

mandala ★★★★ ()
Ответ на: комментарий от aureliano15

Если я вызывал

echo $PATH 
ПОД рутом, то получал неправильные пути
/usr/local/bin:/usr/bin:/bin:/usr/games

И при вызове

which ldconfig 
получал ldconfig not found. И правильно, откуда ему взяться в bin -ах, если он установлен в
sbin

Ничего не экспортируя просто указывал ключ

 sudo -s
И путь исправлялся. Вбиваю после указания ключа
 echo $PATH 
Получаю
 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/sbin:/bin 

Все как надо. После, опять проверяю и файл находится там где и была

which ldconfig 
/sbin/ldconfig

После магии

sudo -s
можно и ставить и удалять пакеты. Закроешь терминал, опять надо не забыть потом прописать sudo s чтоб пакеты ставились.

Библиотеки не из офиц., сторонние, пробовал выковырять их с корнем, дернул libc6... Перенастраивал пакет... Проблема осталась. Вот я и здесь. :(

AXIOM ()
Ответ на: комментарий от AXIOM

Система была угроблена под конец из за non-free contrib библиотек

Бред. Проблема в конфигах, которые ты правил. Какие, сейчас выяснить тяжко. Скорее всего вводил какие-нить команды из какого-нибудь «универсального HOWTO».

shell-script ★★★★★ ()
Ответ на: комментарий от aureliano15
Run the shell specified by the SHELL environment variable if it is set or the shell specified by the invoking user's password database entry.  If a command is specified, it is passed to the shell for execution via the shell's -c option.  If no command is specified, an interactive shell is executed.

(c) man sudo

Т.е. переписал часть конфигов и при обычном входе от рута, переменные окружения читались фиг пойми откуда. После sudo -s они перечитывались и наступало счастье.

shell-script ★★★★★ ()
Ответ на: комментарий от shell-script

Конфиги как раз не поменялись, нужные логи скинул. Ваш сарказм насчет подхода теста серверов мне не понятен. Если kali то новичек? 2-й год уже как сидел под рутом и штатные случаи падения или отказа нормальной работы в системе решал сам. Представь как же все было плохо, что я вбил в поиск форумы, выбрал эту, зарегался, и написал так многобукв чтоб подробнее описать проблему.

А ты тут, про подходы. Зря я поторопился с переустановкой, надо было дать тебе удаленно глянуть чтоб охренел. У тебя система сама играет с клавой? Все зависает от простого перетаскивания скажем картинки? Никогда не слышал? Я вот охренел когда увидел такое в лунсоидной системе.

Может быть и переписал конфиги о которых я даже не знаю, и даже не догадывался. И все свелось к тому что, да

переменные окружения читались фиг пойми откуда
Отсюда и зависания. Папки или файла когда перетаскиваются на десктоп рута и все замирает.

AXIOM ()

Всем спасибо. Проблема не решилась. Переустановил систему.

Много интересный мнений и догадок прочел. Еще раз спасибо! Даже тем кто зашел просто потеребонькать свое чсв. Всем удачи ;)

AXIOM ()
Ответ на: комментарий от AXIOM

Конфиги как раз не поменялись, нужные логи скинул.

Ну расскажи тогда, какие конфиги шелла, когда и в каком порядке читаются при разных способах входа в систему. Какие при логине, какие при интерактивном режиме, какие при sudo -s, какие при sudo -i, например. И так далее. Потом решай, где тебе надо искать неверный PATH.

А после этого ещё раз попробуй объяснить, что происходит при ошибке в конфигах sudo и каким макаром contrib и non-free повлияли на твои настройки. Для справки, в дебиане пакетный менеджер при установке либо вообще не даёт изменить конфиги, изменённые пользователем, либо явно об этом говорит.

У тебя система сама играет с клавой? Все зависает от простого перетаскивания скажем картинки? Никогда не слышал?

У меня нет. Я не запускаю на системе того, чего не знаю, пока не проверю. Тем более от рута.

Может быть и переписал конфиги о которых я даже не знаю, и даже не догадывался.

Об этом я в первом абзаце данного комментария написал. В том-то и дело, что я это знаю. Да и чего тут знать? Это в мане описано и в табличках подробно разрисовано в инетах. Проблема же очевидна. Поэтому и сарказм по поводу подхода(странные догадки про судо и странные догадки про подключенные официальные репы).

shell-script ★★★★★ ()
Ответ на: комментарий от AXIOM

Условие для PS1 Видели? Разбираетесь в программировании? Понятие условия?

Условие понятно. А ещё понятно, что ты привёл не полный код условия. Как минимум забыл закрыть условие. Или else, который там может идти до закрытия.

shell-script ★★★★★ ()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от AXIOM

Даже тем кто зашел просто потеребонькать свое чсв.

Не в ЧСВ дело. Просто ошибка не в том, что ты описал. Проблему я описал выше. Просто не охота, чтобы другие, зашедшие в тему, решили, что твоя инструкция правильна.

shell-script ★★★★★ ()
Ответ на: комментарий от AXIOM

ПОД рутом, то получал неправильные пути

Ну, сейчас, после переустановки системы, бессмысленно гадать, рут там был или нет. Но на будущее: есть команда whoami, которая показывает имя вызвавшего её пользователя.

Библиотеки не из офиц., сторонние

Там всё может быть. Даже если само ПО собрано не криво, просто банально зависимости легко поломать. Лучше использовать официальные репы или, в крайнем случае, не официальные, но предназначенные для этого же дистра (и этой же версии) и проверенные. Всё остальное надо портировать.

дернул libc6

А libc менять на левый или из другой версии вообще никогда не надо. На него практически всё завязано, поэтому очень велика вероятность полностью разрушить систему. Вплоть до невозможности загрузки.

aureliano15 ★★ ()
Ответ на: комментарий от shell-script

переписал часть конфигов и при обычном входе от рута, переменные окружения читались фиг пойми откуда. После sudo -s они перечитывались

Тоже может быть.

В PS1 можно писать всё, что угодно. Надеяться, что там под рутом будет исключительно решётка, крайне глупо.

Можно-то можно, но не нужно. :-) А так можно root'а в admin'а переименовать, хомяк в /usr/ записать и т. д. Только зачем? Чтоб никто не догадался?

Ведь есть какие-то традиции, помогающие ориентироваться.

aureliano15 ★★ ()
Ответ на: комментарий от AXIOM

Если kali то новичек?

Просто обычно это так.

2-й год уже как сидел под рутом

Никогда не надо сидеть под рутом, особенно более года. Под рутом надо выполнять административные задачи, а сидеть - под ограниченным пользователем. Именно этот подход и делает nix-системы более безопасными. А сидеть под рутом в UNIX ещё опаснее, чем под виндой, потому что руту позволено куда больше, чем windows-админу. Ну и всем потенциальным троянам, запущенным из-под него, соответственно тоже.

aureliano15 ★★ ()
Ответ на: комментарий от shell-script

Просто не охота, чтобы другие, зашедшие в тему, решили, что >твоя инструкция правильна.

Хорошо, правильно сделал если это так.

Условие понятно. А ещё понятно, что ты привёл не полный код >условия. Как минимум забыл закрыть условие. Или else, который >там может идти до закрытия.

Когда система будет раскладывать файлы по полочкам то первое условие начнет читать отсюда. Можешь поставить брэкпоинт и посмотреть.

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games"
fi
export PATH

А условие для PS1 читает, если рут то поставь '#' (char symbol), esle доллар.

У меня и так и так читает как РУТ. Других пользователей кроме системных демонов у меня нету и не было.

По моим скорее всего скудным знаниям я понял одно из этой проблемы что случилось, а именно когда я заходил в систему то не был рутом почему то. И когда перетаскивал файл - то система зависала т.к. Desctop был рутовым и я таскал файл на desktop и репозитории рута. Конфликт в привилегиях = зависание системы т.к нету скорее всего условия как поступать системе если пользователь рут и НЕ рут одновременно.Не знаю такая теория верна или нет. Потом, когда указывал

sudo - s
все таки получал правильный shell, для распаковки и расфасовки программы средствами aptitude and apt.

AXIOM ()
Ответ на: комментарий от aureliano15

А libc менять на левый или из другой версии вообще никогда не >надо. На него практически всё завязано, поэтому очень велика вероятность полностью разрушить систему. Вплоть до невозможности загрузки.

Вот когда были зависимости от нее, так все и сломалось по моему. Мне пришлось его дернуть что бы проверить, но не помогло.

AXIOM ()
Ответ на: комментарий от AXIOM

По моим скорее всего скудным знаниям я понял одно из этой проблемы что случилось, а именно когда я заходил в систему то не был рутом почему то.

Понял неправильно, о чём я и пытаюсь сказать. Не надо на ровном месте выдумывать космические теории.

Повторяю. Ты был рутом, но у тебя были неверные переменные окружения. Из-за этого как минимум появлялись проблемы с ненайденным ldconfig'ом. После запуска sudo -s перечитывались файлы профиля и конфигов шелла и переменные окружения выставлялись верно.

Это линукс. Тут ты не можешь быть и не быть рутом одновременно. Ты или рут, или кто-то другой. А вот переменные окружения влияют на то, что тебе доступно. Как минимум $PATH показывает, где искать программы для запуска.

По поводу зависаний сейчас можно только гадать. При конфликте привелегий система просто скажет тебе о недостатке прав. Для этого не надо никаких дополнительныхх условий. Не важно, под каким аккаунтом ты залогинен. Да-да. Рут тоже не всегда имеет все права. Плюс в переусложнённых дистрибутивах типа kali помимо обычных юниксовых прав доступа имеются всякие расширенные механизмы защиты, про которые надо читать и настройки на них смотреть отдельно.

shell-script ★★★★★ ()
Ответ на: комментарий от aureliano15

А libc менять на левый или из другой версии вообще никогда не надо, если не понимаешь, что делаешь.

fixed

shell-script ★★★★★ ()
Ответ на: комментарий от shell-script

Ты был рутом, но у тебя были неверные переменные окружения.

Теперь понял, дело было в окружении все таки. Об этом я написал, название шапки. Ок, буду знать и такие нюансы ;)

AXIOM ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.