Укажите на мою ошибку при конвертации TIFF в PNG/JPG

Чтобы создать учетную запись пользователя без доступа к оболочке,

sudo adduser --shell /bin/false mysftpfriend

Вы должны создать каталог и структуру каталогов для mysftpfriend и сделать его доступным для них.

sudo mkdir -p /var/mysftpfriends/storage

Дать доступ,

sudo chown mysftpfriend:mysftpfriend /var/mysftpfriends/storage

Просто установите root, чтобы иметь полный доступ (владельца и владельца группы )к каталогу mysftpfriends.

sudo chown root:root /var/mysftpfriends
sudo chmod 0766 /var/mysftpfriends

Члены группы могут читать/записывать, но не могут выполнять.

Теперь, чтобы настроить SSH, предназначенный только для SFTP, откройте /etc/ssh/sshd_configв текстовом редакторе (nano или vim ),

sudo nano /etc/ssh/sshd_config

добавить следующие строки в конец файла,

Match User mysftpfriend
    ForceCommand internal-sftp
    PasswordAuthentication yes
    ChrootDirectory /var/mysftpfriends
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

сохраните файл, выйдите из редактора и перезапустите ssh.

sudo service ssh restart

это все, теперь попробуйте подключиться к консоли по ssh и проверить чтение/запись файла и убедиться, что пользователь sftpfriend не может выполнить его.

sftp mysftpfriend@myserver

Готово!

2
22.11.2021, 05:30
2 ответа

Решением, которое я нашел, было сначала преобразовать YCbCrв RGBAс помощью tiff2rgba . (входит в комплект libtiff). Затем конвертируйте этот RGB tiff в любые другие форматы.

$ tiff2rgba input.tiff out.tiff
$ convert out.tiff final.png

Дополнительная информация:

$ identify input.tiff
input.tiff TIFF 640x480 640x480+0+0 8-bit YCbCr 618733B 0.000u 0:00.000
$ identify out.tiff
out.tiff TIFF 640x480 640x480+0+0 8-bit sRGB 858070B 0.000u 0:00.000

Если у вас есть более компактные ответы, такие как использование только imagemagickбез tiff2rgba, или вы даже знаете, почему это произойдет, Пожалуйста, не стесняйтесь поделиться. Спасибо.

1
23.11.2021, 02:10

Поскольку информация о цветовом пространстве является частью файла TIFF (, это частично то, что означает T :в файле есть реальная информация о структуре изображения, помеченная ), это означает ваш новообращенный делает что-то не так (или ваш входной файл поврежден таким образом, что ваш другой зритель может "неправильно" обработать "успешно" ).

Итак, обходной путь :Не используйте convert/imagemagick (, который также является одним из крупнейших источников уязвимостей серверов в истории Интернета ). В любом случае, по моему опыту, это чертовски медленно.

Попробуйтеeconvertиз проекта ExactImage .

Помимо этого, Python PIL/Pillow может прекрасно работать; это буквально первый пример в их туториале(с минимальными изменениями ); сохраните это в текстовый файл, пометьте его как исполняемый файл и используйте в своих файлах.

#!/usr/bin/env python3
import os, sys
from PIL import Image

for infile in sys.argv[1:]:
    filename, extension = os.path.splitext(infile)
    outfile = f"{filename}.jpg"
    if infile != outfile:
        try:
            with Image.open(infile) as im:
                im.save(outfile)
        except OSError:
            print(f"cannot convert {infile}")
3
22.11.2021, 10:51

Теги

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