С недавними ядрами (≥ 2.6.37), см. ответ Petr Uzel. С более старыми ядрами этот предел длины свойственен.
Strace показывает это losetup -a
получает имя через LOOP_GET_STATUS
ioctl, который звонит loop_get_status_old
, который получает его данные из a struct loop_info
. Поле имени в той структуре данных ядра ограничено LO_NAME_SIZE
= 64 байта. (Существует также a loop_get_status64
и struct loop_info64
, но у них есть то же ограничение.), Таким образом, это ограничение является внутренним, Вы не можете сделать немного лучше.
Так или иначе та структура данных показывает настоящее имя базового устройства или файла, но можно переименовать его (или даже удалить его), и это не будет отражено в выводе от losetup
.
Вывод losetup
показывает идентификатор файловой системы (st_dev
) и inode (st_ino
) из файла, например, [fc03]:33030504
. Можно найти блочное устройство для файловой системы путем поиска его в /proc/partitions
(начало строки 252 3
). Затем ищите точку монтирования того блочного устройства в /proc/mounts
. Затем выполненный find /mount/point -inum 33030504
определять местоположение файла. Да, это является замысловатым, и не, нет никакого более быстрого пути (хорошо, существует debugfs
для некоторых типов файловой системы).
Если Вы хотите изменить оболочку, работать chsh -s /bin/bash
Если Вы хотите выполнить оболочку однажды, в то время как зарегистрированный как корень, просто выполненный bash
или /bin/bash
chsh
после изменения корневой оболочки:
# Changing user information for root.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Login: root
Uid [#]: 0
Gid [# or name]: 0
Generated uid: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000000
Home directory: /var/root
Shell: /bin/bash
Full Name: System Administrator
Office Location:
Office Phone:
Home Phone:
Если Вы не используете удар, Вы не можете использовать ту функцию удара.
Вы могли начать использовать sudo bash
пойти корень вместо этого, или sudo bash -l
пойти корень с оболочкой входа в систему, прочитать конфигурацию удара.
root
окружите к bash
, или просто вызовите его при входе в систему как корень (оболочки являются просто программами, можно запустить оболочку из оболочки (просто выполненный bash
), единственная вещь, которая происходит, состоит в том, что при отъезде его, Вы вернулись к оболочке, которую Вы запустили bash
от),
– njsg
13.07.2012, 19:47
sh
для оболочек восстановления, в особенности системы, где они включают статически связанный sh
в /bin
, и библиотеки могли бы быть недоступными во время восстановления (например, потому что они находятся в размонтированных файловых системах как /usr
).
– mrb
13.07.2012, 19:51
sudo bash -l
для этого. Немного неловкий, к сожалению.
– mrb
13.07.2012, 20:13
sh
как оболочка корня так, чтобы это могло работать во время начальной загрузки восстановления, даже если библиотеки не доступны (например, на размонтированном/usr
файловая система). См. также,toor
учетная запись: freebsd.org/doc/en_US.ISO8859-1/books/faq / … – mrb 13.07.2012, 19:54chsh -l /Local/Default -s /opt/local/bin/bash
или простоchsh -s /opt/local/bin/bash
будет достаточен. – Tim 13.07.2012, 20:33