Как я переключаюсь от неизвестной оболочки для избиения?

Это могло бы сделать это:

import glob
import zlib
import sys

for filename in sys.argv:
    with open(filename, 'rb') as compressed:
        with open(filename + '-decompressed', 'wb') as expanded:
            data = zlib.decompress(compressed.read())
            expanded.write(data)

Затем выполните его как это:

$ python expander.py data/*
41
30.08.2010, 04:59
3 ответа

Принимая неизвестные поддержки оболочки, выполняющие абсолютную команду, Вы могли попробовать: /bin/bash

Для изменения оболочки по умолчанию я использовал бы chsh(1). Демонстрационное использование: chsh -s /bin/bash $USER

62
27.01.2020, 19:35
  • 1
    chsh постоянно изменяют оболочку или только для текущей сессии? –  mouche 30.08.2010, 05:35
  • 2
    @mouche Постоянно; это изменяет Вашу запись в /etc/passwd –  Michael Mrozek♦ 30.08.2010, 05:36
  • 3
    @mouche, chsh(1) только позволит изменяться на оболочку, которая перечислена в /etc/shells (и доступно, по-видимому). chsh -l перечисляет альтернативы. Будьте осторожны, некоторые (как nologin) определяются для учетных записей, которые никогда не должны использоваться для входа в систему (хороший способ заблокировать себя), могли бы быть локальные дополнения для специального использования. –  vonbrand 29.02.2016, 17:56

Вы вводите bash. Если Вы хотите, чтобы это было постоянным изменением оболочка по умолчанию к /bin/bash путем редактирования /etc/passwd.

Вот некоторые отрывки от моего /etc/passwd:

avahi:x:84:84:Avahi daemon:/:/bin/false
xenoterracide:x:1000:100::/home/xenoterracide:/bin/zsh
postgres:x:88:88::/var/lib/postgres:/bin/zsh
bob:x:1001:1001::/home/bob:/bin/bash
usbmux:x:140:140:usbmux user:/:/sbin/nologin

Самое последнее поле содержит оболочку, Изменяя поле после последнего : к допустимой или недопустимой оболочке будет работать. /bin/false и /sbin/nologin оба подразумевают, что у пользователя нет реальной оболочки входа в систему, хотя, если pam не настраивается право, это не означает, что они не могут войти в систему (я сообщил об ошибке на этом в Дуге Linux, потому что можно войти в систему графически, не имея оболочки входа в систему). /bin/bash и /bin/zsh оба допустимые оболочки, видят /etc/shells для списка допустимых оболочек в Ваших системах. Вот мой /etc/shells если Вам интересно.

/bin/sh
/bin/bash
/bin/ksh
/bin/zsh
/bin/dash

Да можно использовать chsh или usermod чтобы сделать то же самое, помните, что это просто файлы структурированного текста и TIMTOWTDI.

19
27.01.2020, 19:35
  • 1
    Вы, вероятно, хотите использовать chsh вместо ручного редактирования passwd –  Michael Mrozek♦ 30.08.2010, 05:38
  • 2
    @Michael там является приблизительно 5 различными способами (POOMA) изменить оболочку в /etc/passwd Я не испытывал желание перечислять любого из них, потому что я всегда делаю это вручную. chsh и usermod могут оба сделать это. –  xenoterracide 30.08.2010, 15:27
  • 3
    Бездельничанием с конфигурационными файлами является Bad Idea(TM), ошибка могла бы сделать систему неприменимой. Да, это часто - единственный/самый быстрый путь, но затем сделайте это с большой осторожностью. прекрасная идея –  vonbrand 29.02.2016, 17:58

Если chsh или вручную редактирование конфигурации не будут работать, но ~/.profile сценарий выполняется при входе в систему, добавьте эту строку:

exec /bin/bash --login
12
27.01.2020, 19:35
  • 1
    После оглядывания некоторое время, это было решением, в котором я нуждался.Спасибо! –  PearsonArtPhoto 08.08.2012, 16:13
  • 2
    , особенно если оболочка выбрала источники, что файл на запуске... –  vonbrand 29.02.2016, 17:59
  • 3
    touch ~/.bash_profile или иначе удар будет должностное лицо сам в цикле: удар берет ~/.profile в случае, если ~/.bash_profile не существует. –  har-wradim 31.12.2017, 16:44

Теги

Похожие вопросы