Как настроить расположение стартового файла для пользователя с помощью FTP

Вы можете сделать несколько вещей, чтобы помочь себе понять это .

ldd / usr / bin / cat

На моем ноутбуке это дает следующий результат:

1771 % ldd /usr/bin/cat 
        linux-vdso.so.1 (0x00007ffc37fba000)
        libc.so.6 => /usr/lib/libc.so.6 (0x00007f1ea7018000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f1ea73bc000)

Вы заметите, что linux-vdso.so.1 и libc.so .6 не имеют полного пути, и что ldd показывает вам, какой фактический путь будет использоваться для динамического связывания в libc.so.6 .

Вы можете проверить это (и немного узнать), снова выполнив ldd с небольшими вариациями:

1790 % export LD_LIBRARY_PATH=/lib
1791 % ldd /usr/bin/cat 
        linux-vdso.so.1 (0x00007fff0a5a0000)
        libc.so.6 => /lib/libc.so.6 (0x00007fa257535000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fa2578d9000)

Присмотревшись, вы можете увидеть, что динамический компоновщик ( / lib64 / ld-linux-x86-64.so.2 в данном случае) теперь выберет /lib/libc.so.6 в качестве библиотеки C. Таким образом, переменная окружения LD_LIBRARY_PATH важна для принятия решения о том, какие файлы действительно используются при динамической компоновке.

Еще вы можете сделать strace :

strace -o cat.trace /usr/bin/cat /etc/motd

Файл cat.trace будет содержать запись о том, какие системные вызовы выполняет ваш подчиненный процесс. Некоторые из них будут mmap () из файлов, показываемых ldd как динамически подключаемые. Затем выполните поиск в Google для mmap .

Дополнительная литература: man ld.so .

Посмотрите, установлена ​​ли у вас команда readelf , можно ли ее установить или скомпилировать. Запустите readelf -a / usr / bin / cat . Фактическая спецификация ELF , на мой взгляд, непонятна, но есть некоторая хорошая информация о формате ELF там. Попробуй его найти.

Если у вас установлена ​​ musl libc или вы можете ее установить, то выполнение тех же экспериментов, что и выше, с простым исполняемым файлом, скомпилированным с помощью musl libc, может быть очень информативным. Даже такая сложная вещь, как динамическое связывание, может иметь две разные рабочие реализации в одной и той же операционной системе.

2
13.02.2018, 00:12
1 ответ

Es muy probable que solo necesite

  1. actualizar el directorio de inicio del usuario, podría vi /etc/passwdy cambiar /var/somewhere/somewheredeepera /var/somewherepero luego necesitará
  2. actualice los permisos en /var/somewherepara tener propiedad y permisos que permitan al usuario rootftpacceder ftpa ese directorio
1
27.01.2020, 22:18

Теги

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