React Native

React Native

1680028080

ChatGPT Web Application using React.js

A web application that allows users to interact with OpenAI's GPT-3 language model through a simple and user-friendly interface. This app is for demo purpose to test OpenAI API and may contain issues/bugs.

If you are looking for a simple HTML/vanilla JavaScript version, check here

Demo Gif

Features

  • User-friendly interface for making requests to the OpenAI API
  • Responses are displayed in a chat-like format
  • Select Models (Davinci, Codex, Create Image) based on your needs
  • Highlight code syntax

Technologies Used

  • For client, I used React.js.
  • For server, I used express.

Setup Introduction

This guide will help you set up the repository on your local machine. Please follow these steps carefully to ensure a smooth setup process.

Cloning the repository

Use the following command to clone the repository:

git clone https://github.com/ioanmo226/chatgpt-web-application

Backend Setup

  • Navigate to server directory
cd server # Navigate to the server directory:
  • Install dependencies
npm install #install the backend dependencies
  • Set the OPENAI_API_KEY in the .env file:
OPENAI_API_KEY=YOUR_OPENAI_API_KEY
  • Start the backend server by running the following command:
node index.js

Frontend Setup

  • Navigate to the client directory:
cd client
  • Run the following command to install the frontend dependencies:
npm install
  • Set the REACT_APP_BACKEND_URL in the .env file to the URL of your backend server. For local development, use the following URL:
REACT_APP_BACKEND_URL=http://localhost:3001/
  • Start the frontend app by running the following command:
npm start

Hosting Backend and Frontend in Same Port/URL

If you wish to host both the backend and frontend on the same port/URL, follow these steps:

  • Build the frontend by running the following command in the client directory:
npm run build

Copy the build directory to the server directory and rename it to frontend.

Start the backend server using the instructions in the "Backend Setup" section.

Once the setup process is complete, the frontend will be accessible at the URL of your backend server.

Usage

  • Type in the input field and press enter or click on the send button to make a request to the OpenAI API
  • Use control+enter to add line breaks in the input field
  • Responses are displayed in the chat-like format on top of the page
  • Generate code, including translating natural language to code
  • You can also create AI images using DALL·E models

Contributing

This project welcomes contributions and suggestions for improvements. If you have any ideas, please feel free to open an issue or create a pull request.

Thank you for your consideration.


Download details:

Author: ioanmo226
Source: https://github.com/ioanmo226/chatgpt-react-application

License: MIT license

#react-native #react #chatgpt #openai 

ChatGPT Web Application using React.js
Lawson  Wehner

Lawson Wehner

1679550660

Xcode-install: Install and update your Xcodes

Xcode::Install

This project is being sunset. See the migration guide here: MIGRATION.md

Install and update your Xcodes automatically.

$ gem install xcode-install
$ xcversion install 6.3

This tool uses the Downloads for Apple Developer page.

Installation

$ gem install xcode-install

Note: unfortunately, XcodeInstall has a transitive dependency on a gem with native extensions and this is not really fixable at this point in time. If you are installing this on a machine without a working compiler, please use these alternative instructions instead:

$ curl -sL -O https://github.com/neonichu/ruby-domain_name/releases/download/v0.5.99999999/domain_name-0.5.99999999.gem
$ gem install domain_name-0.5.99999999.gem
$ gem install --conservative xcode-install
$ rm -f domain_name-0.5.99999999.gem

Usage

XcodeInstall needs environment variables with your credentials to access the Apple Developer Center, they are stored using the credentials_manager of fastlane:

XCODE_INSTALL_USER
XCODE_INSTALL_PASSWORD

List

To list available versions:

$ xcversion list
6.0.1
6.1
6.1.1
6.2 (installed)
6.3

Already installed versions are marked with (installed). (Use $ xcversion installed to only list installed Xcodes with their path).

To update the list of available versions, run:

$ xcversion update

Install

To install a certain version, simply:

$ xcversion install 8
###########################################################               82.1%
######################################################################## 100.0%
Please authenticate for Xcode installation...

Xcode 8
Build version 6D570

This will download and install that version of Xcode. Then you can start it from /Applications as usual. The new version will also be automatically selected for CLI commands (see below).

GMs and beta versions

Note: GMs and beta versions usually have special names, e.g.

$ xcversion list
7 GM seed
7.1 beta

They have to be installed using the full name, e.g. xcversion install '7 GM seed'.

.xcode-version

We recommend the creation of a .xcode-version file to explicitly declare and store the Xcode version to be used by your CI environment as well as your team.

12.5

Read the proposal of .xcode-version.

Select

To see the currently selected version, run

$ xcversion selected

To select a version as active, run

$ xcversion select 8

To select a version as active and change the symlink at /Applications/Xcode, run

$ xcversion select 8 --symlink

Command Line Tools

XcodeInstall can also install Xcode's Command Line Tools by calling xcversion install-cli-tools.

Simulators

XcodeInstall can also manage your local simulators using the simulators command.

$ xcversion simulators
Xcode 6.4 (/Applications/Xcode-6.4.app)
iOS 7.1 Simulator (installed)
iOS 8.1 Simulator (not installed)
iOS 8.2 Simulator (not installed)
iOS 8.3 Simulator (installed)
Xcode 7.2.1 (/Applications/Xcode-7.2.1.app)
iOS 8.1 Simulator (not installed)
iOS 8.2 Simulator (not installed)
iOS 8.3 Simulator (installed)
iOS 8.4 Simulator (not installed)
iOS 9.0 Simulator (not installed)
iOS 9.1 Simulator (not installed)
tvOS 9.0 Simulator (not installed)
watchOS 2.0 Simulator (installed)

To install a simulator, use --install and the beginning of a simulator name:

$ xcversion simulators --install='iOS 8.4'
###########################################################               82.1%
######################################################################## 100.0%
Please authenticate to install iOS 8.4 Simulator...

Successfully installed iOS 8.4 Simulator

Limitations

Unfortunately, the installation size of Xcodes downloaded will be bigger than when downloading via the Mac App Store, see #10 and feel free to dupe the radar. 📡

XcodeInstall automatically installs additional components so that it is immediately usable from the commandline. Unfortunately, Xcode will load third-party plugins even in that situation, which leads to a dialog popping up. Feel free to dupe the radar. 📡

XcodeInstall normally relies on the Spotlight index to locate installed versions of Xcode. If you use it while indexing is happening, it might show inaccurate results and it will not be able to see installed versions on unindexed volumes.

To workaround the Spotlight limitation, XcodeInstall searches /Applications folder to locate Xcodes when Spotlight is disabled on the machine, or when Spotlight query for Xcode does not return any results. But it still won't work if your Xcodes are not located under /Applications folder.

Thanks

Thanks to @neonichu, the original (and best) author.

This downloading script which has been used for some inspiration, also this for doing the installation. Additionally, many thanks to everyone who has contributed to this project, especially @henrikhodne and @lacostej for making XcodeInstall C extension free.

Contributing

  1. Fork it ( https://github.com/xcpretty/xcode-install/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Running tests

bundle exec rake spec

Running code style linter

bundle exec rubocop -a

Download Details:

Author: xcpretty
Source Code: https://github.com/xcpretty/xcode-install 
License: MIT license

#ruby #hacktoberfest #xcode #install 

Xcode-install: Install and update your Xcodes

Как установить, настроить и использовать Linux NIS Server

Мы используем сервер Linux NIS ( сетевая информационная служба ) для обмена важными данными, хранящимися в неструктурированных файлах, между системами в сети. Часто идеально иметь общий репозиторий (например, NIS) для хранения информации о пользователях и группах, а не хранить ее в однородных файлах, таких как /etc/passwd.

Так какая в этом польза?

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

NIS не предназначена для обмена файлами. Вы можете поделиться любым табличным файлом, в котором хотя бы один столбец имеет уникальное значение, через NIS, например файл /etc/services.

Основное преимущество использования NIS-сервера заключается в том, что вы сохраняете свои данные и файлы и распространяете любые обновления среди всех пользователей.

Некоторые пользователи, особенно пользователи Windows, могут подумать, что это своего рода служба, подобная Active Directory. Сервер Linux NIS старше Active Directory и не является его репликой.

Что такое НИС?

NIS — это база данных, содержащая ряд таблиц. Он создает таблицы из текстовых файлов, таких как /etc/passwd, /etc/services и любых других табличных файлов.

Каждая таблица может содержать один или несколько столбцов с уникальным ключом в каждой строке.

Вы можете думать об этом как о любой обычной базе данных.

Вы можете запросить эти таблицы двумя способами:

  • Список всей таблицы
  • Вытягивание определенной записи путем поиска

Когда программа запрашивает поиск сведений о пароле пользователя, клиент проверяет файл /etc/passwd, чтобы убедиться, что пользователя там нет; затем клиент просит NIS-сервер найти его в таблице /etc/passwd с NIS-сервера.

Вы можете использовать любые службы и инструменты, поставляемые с сервером NIS:

ypserv : эта служба ожидает запросов и дает ответы клиентам NIS.

ypbind : Это клиентская часть NIS.

ypxfrd : вы можете использовать эту службу для отправки баз данных NIS с главных серверов MIS на подчиненные серверы.

NIS-серверы Linux

Типы серверов Linux NIS:

  • Главный сервер: хранит исходные файлы.
  • Подчиненный (вторичный) сервер: мы можем использовать его для балансировки нагрузки и полезно в случае отказа главного сервера.

Вы можете иметь несколько вторичных серверов NIS, если они вам нужны.

Первичный и вторичный серверы NIS синхронизируются и обновляются. Этот процесс называется проталкиванием сервера .

доменное имя НИС

Домены NIS аналогичны доменам контроллера домена в Windows, но разница в том, что клиент может присоединиться к сети, не дожидаясь согласия администратора.

Имейте в виду, что имена, используемые для доменных имен NIS, ДОЛЖНЫ отличаться от ваших доменных имен DNS.

Установка Master Linux NIS-сервера

В дистрибутивах на основе Red Hat вы можете установить его следующим образом:

$ dnf -y install ypserv

В дистрибутивах на основе Debian вы можете установить его следующим образом:

$ apt-get -y install nis

После успешной установки вам необходимо задать доменное имя NIS с помощью команды domainname.

Назовем его nis.example.com.

$ domainname nis.example.com

Чтобы сохранить наше доменное имя NIS в дистрибутивах на основе Red Hat, мы можем создать переменную с именем NISDOMAIN в файле /etc/sysconfig/network .

В дистрибутивах на основе Debian вы можете добиться того же результата, добавив команду domainname с правильным значением в один из сценариев rc, которые запускаются во время загрузки.

Настройка НИС

Как мы упоминали ранее, ypserv ожидает запросов и дает ответы клиентам NIS.

NIS — это служба RPC, поэтому вам необходимо убедиться, что программа rpcbind запущена и работает, прежде чем пытаться запустить сервер Linux NIS.

В новых дистрибутивах Linux, использующих systemd в качестве диспетчера служб, systemd автоматически позаботится о внутренних зависимостях служб, существующих между rpcbind и ypserv.

Если ваш дистрибутив не входит в их число, вы можете запустить rpcbind следующим образом:

$ systemctl start rpcbind

В нашем дистрибутиве с systemd мы можем запустить службу следующим образом:

$ systemctl start ypserv

Чтобы убедиться, что служба запущена, вы можете использовать команду rpcinfo.

$ rpcinfo -p | grep ypserv

Редактирование Makefile

Команда make отвечает за подготовку списка файлов, требующих компиляции, и необходимой программы для компиляции для каждого из них.

Команда make компилирует файл Makefile.

Использовать эту концепцию для работы с NIS несложно. В этом случае ряд текстовых файлов необходимо преобразовать в формат базы данных. Нам нужен инструмент, который будет повторно конвертировать любые файлы, которые были изменены. Мы можем использовать команду make.

Makefile находится в каталоге /var/yp. Этот файл содержит все общие файлы сервера NIS.

Давайте обсудим параметры в Makefile.

Вариант NOPUSH

Если вы планируете использовать подчиненные NIS-серверы, вам нужно указать главному NIS-серверу Linux передать полученные карты на подчиненные серверы. Измените переменную NOPUSH на false , если вы хотите иметь поддержку подчиненных серверов.

NOPUSH=true

Имейте в виду, что вам нужно указать имена хостов подчиненных серверов в файле /var/yp/ypservers и обязательно указать соответствующую запись в файле /etc/hosts .

Минимальные идентификаторы GID

У каждого пользователя в Linux есть идентификатор пользователя и идентификатор группы. Вы можете получить свой идентификатор, введя команду id и команду gid соответственно.

Вы можете установить минимальные разрешения для файлов, которые будут доступны через NIS, используя MINUID и MINGID следующим образом:

MINUID=500

MINGID=500

Объединение теневых паролей с реальными

NIS-сервер Linux можно использовать для аутентификации своих пользователей, NIS-сервер автоматически возьмет зашифрованное поле из файла /etc/shadow и объединит его с общей копией NIS /etc/passwd .

Вы можете сделать это с помощью опции MERGE_PASSWD:

MERGE_PASSWD=true

Объединение групповых теневых паролей с реальными

Файл /etc/group позволяет применять пароли к настройкам группы. Поскольку файл /etc/group должен быть общедоступным для чтения, большинство дистрибутивов поддерживают файлы теневых групп /etc/gshadow .

Опция называется MERGE_GROUP:

MERGE_GROUP=true

Общие записи

В Makefile есть опция, которая позволяет вам указать, чем вы хотите поделиться; это (все) вариант.

all: passwd group hosts services shadow networks

Параметр YPPWDDIR указывает расположение файлов passwd, group и shadow, поэтому вам не нужно вводить полный путь.

Инициализировать сервер NIS с помощью ypinit

Закончив редактирование опций в Makefile, вы можете инициализировать сервер NIS следующим образом:

$ /usr/lib64/yp/ypinit -m

Вы можете использовать параметр -m для инициализации сервера в качестве главного сервера.

Или, если вы используете 32-битную систему, команда будет такой:

$ /usr/lib/yp/ypinit

Этот инструмент спросит о вторичных серверах NIS, если они у вас есть.

Сервер сохранит эти записи в файле /var/yp/ypservers .

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

Настройка NIS-клиента

В дистрибутивах на основе Red Hat вы можете установить клиент NIS следующим образом:

$ dnf -y install ypbind

В дистрибутивах на основе Debian вы можете установить его следующим образом:

$ apt-get install nis

Файл /etc/yp.conf — это конфигурация демона на стороне клиента.

Вы можете запустить ypbind прямо сейчас:

$ systemctl start ypbind

$ systemctl enable ypbind

Файл /etc/nsswitch.conf

Этот файл содержит записи объектов и соответствующих им файлов и сервисов, которые система будет использовать для поиска.

passwd:               files nis

Эта запись указывает серверу искать записи паролей в файле /etc/passwd и, если сервер NIS ничего не находит, проверять сервер NIS.

инструменты НИС

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

ypcat : вы можете использовать этот инструмент для получения данных с сервера NIS, извлекая их из карты NIS.

ypthat : получает имя NIS-сервера Linux, отвечающего на ваши запросы.

ypmatch : вместо того, чтобы захватывать всю карту, или вы можете искать по ключу, чтобы получить конкретную запись.

Оригинальный источник статьи: https://likegeeks.com/

#linux #server #install #configure 

Как установить, настроить и использовать Linux NIS Server
津田  淳

津田 淳

1679393242

如何安装、配置和使用 Linux NIS 服务器

我们使用 Linux NIS 服务器(网络信息服务)在网络上的系统之间共享存储在平面文件中的关键数据。通常最好有一个共享存储库(例如 NIS)来存储用户和组信息,而不是将它们存储在像 /etc/passwd 这样的平面文件中。

那么这样做有什么好处呢?

通过 NIS 服务器提供此类文件,这将允许任何远程 NIS 客户端计算机访问或查询这些共享文件中的数据,并将它们用作本地版本的扩展。

NIS 不用于共享文件。您可以通过 NIS 共享任何至少有一个具有唯一值的列的表格文件,例如 /etc/services 文件。

使用 NIS 服务器的主要好处是您可以保留数据和文件,并将任何更新传播给所有用户。

一些用户,尤其是 Windows 用户,可能认为这是一种类似于 Active Directory 的服务。Linux NIS 服务器比 Active Directory 旧并且不是它的副本。

什么是 NIS?

NIS 是一个包含一系列表的数据库。它从文本文件(如 /etc/passwd、/etc/services 和任何其他表格文件)创建表格。

每个表可能包含一列或多列,每行都有一个唯一的键。

您可以将其视为任何普通数据库。

您可以通过两种方式查询这些表:

  • 列出整个表
  • 通过搜索拉取特定条目

当程序请求搜索用户密码详细信息时,客户端会检查 /etc/passwd 文件以检查该用户是否不存在;然后客户端要求 NIS 服务器在 NIS 服务器的 /etc/passwd 表中搜索它。

您可以使用 NIS 服务器附带的任何服务和工具:

ypserv:此服务等待查询并向 NIS 客户端提供答复。

ypbind:这是 NIS 的客户端。

ypxfrd:您可以使用此服务将 NIS 数据库从主 MIS 服务器发送到从属服务器。

Linux NIS 服务器

Linux NIS 服务器类型有:

  • 主服务器:存放原始文件。
  • 从(辅助)服务器:我们可以使用它来进行负载平衡,并在主服务器发生故障时提供帮助。

如果需要,您可以拥有多个辅助 NIS 服务器。

主要和次要 NIS 服务器保持同步和更新。这个过程称为服务器推送

域名

NIS 域就像 Windows 中域控制器的域,但不同之处在于客户端无需等待管理员接受即可加入网络。

请记住,用于 NIS 域名的名称必须与您的 DNS 域名不同。

安装 Master Linux NIS 服务器

在基于 Red Hat 的发行版上,您可以像这样安装它:

$ dnf -y install ypserv

在基于 Debian 的发行版上,您可以像这样安装它:

$ apt-get -y install nis

安装成功后,需要使用domainname命令设置NIS域名。

我们将其命名为 nis.example.com

$ domainname nis.example.com

为了在基于 Red hat 的发行版中保留我们的 NIS 域名,我们可以在/etc/sysconfig/network文件中创建一个名为NISDOMAIN的变量。

在基于 Debian 的发行版上,您可以通过将具有正确值的域名命令添加到在引导时运行的 rc 脚本之一来获得相同的结果。

配置 NIS

正如我们前面提到的,ypserv等待查询并向 NIS 客户端提供答案。

NIS 是一种 RPC 服务,因此在尝试启动 Linux NIS 服务器之前,您需要确保 rpcbind 程序已启动并正在运行。

在依赖 systemd 作为服务管理器的新 Linux 发行版上,systemd 将自动处理 rpcbind 和 ypserv 之间存在的服务内部依赖关系。

如果您的发行版不是其中之一,您可以像这样启动 rpcbind:

$ systemctl start rpcbind

在我们有 systemd 的发行版上,我们可以像这样启动服务:

$ systemctl start ypserv

要确认该服务正在运行,您可以使用 rpcinfo 命令。

$ rpcinfo -p | grep ypserv

编辑生成文件

make 命令负责为每个文件准备需要编译的文件列表和编译所需的程序。

make 命令编译一个名为 Makefile 的文件。

将此概念应用于 NIS 非常简单。在这种情况下,需要将一系列文本文件转换为数据库格式。我们需要一个工具来重新转换任何已更改的文件。我们可以使用 make 命令。

Makefile 位于 /var/yp 目录中。此文件包含 NIS 服务器的所有共享文件。

让我们讨论 Makefile 中的选项。

NOPUSH 选项

如果您计划拥有 NIS 从属服务器,则需要告诉主 Linux NIS 服务器将生成的映射推送到从属服务器。如果您想支持从属服务器,请将NOPUSH变量更改为false 。

NOPUSH=true

请记住,您需要在/var/yp/ypservers文件中列出从属服务器的主机名,并确保在/etc/hosts文件中列出相应的条目。

最小 UID GID

Linux 上的每个用户都有一个用户 ID 和组 ID。您可以通过分别输入 id 命令和 gid 命令来获取您的 id。

您可以使用 MINUID 和 MINGID 为将通过 NIS 共享的文件设置最小权限,如下所示:

MINUID=500

MINGID=500

将影子密码与真实密码合并

Linux NIS 服务器可用于验证其用户,NIS 服务器将自动从/etc/shadow文件中取出加密字段并将其合并到/etc/passwd的 NIS 共享副本中。

您可以使用 MERGE_PASSWD 选项执行此操作:

MERGE_PASSWD=true

将组影子密码与真实密码合并

/etc/group文件允许将密码应用于组设置。由于/etc/group文件需要公开可读,因此大多数发行版都支持影子组文件/etc/gshadow

该选项称为 MERGE_GROUP:

MERGE_GROUP=true

共享条目

在 Makefile 中,有一个选项可以让您指定需要共享的内容;这是(所有)选项。

all: passwd group hosts services shadow networks

YPPWDDIR选项指定密码、组和影子文件的位置,因此您无需键入完整路径。

使用 ypinit 初始化 NIS 服务器

在 Makefile 中完成编辑选项后,您可以像这样初始化 NIS 服务器:

$ /usr/lib64/yp/ypinit -m

您可以使用 -m 选项将服务器初始化为主服务器。

或者,如果您使用的是 32 位系统,则命令为:

$ /usr/lib/yp/ypinit

此工具将询问辅助 NIS 服务器(如果有)。

服务器会将这些条目存储在/var/yp/ypservers文件中。

恭喜,现在您的 NIS 服务器应该可以正常工作,并且您的地图将位于辅助服务器上(如果有的话)。

配置 NIS 客户端

在基于 Red Hat 的发行版上,您可以像这样安装 NIS 客户端:

$ dnf -y install ypbind

在基于 Debian 的发行版上,您可以像这样安装它:

$ apt-get install nis

/etc/yp.conf文件是客户端守护进程的配置。

您现在可以启动 ypbind:

$ systemctl start ypbind

$ systemctl enable ypbind

/etc/nsswitch.conf 文件

该文件包含系统将用于搜索的设施及其相应文件和服务的条目。

passwd:               files nis

该条目告诉服务器在 /etc/passwd 文件中搜索密码条目,如果 NIS 服务器没有找到任何内容,请检查 NIS 服务器。

NIS 工具

有一些有用的工具可以帮助您管理数据库中的信息。

ypcat:您可以使用此工具通过从 NIS 映射中提取数据来从 NIS 服务器获取数据。

ypwhich:获取响应您的请求的 Linux NIS 服务器的名称。

ypmatch:而不是抓取整个地图,或者您可以按键搜索以获取特定条目。

文章原文出处:https: //likegeeks.com/

#linux #server #install #configure 

如何安装、配置和使用 Linux NIS 服务器
Bongani  Ngema

Bongani Ngema

1679389380

How to Install, Configure and Use Linux NIS Server

We use the Linux NIS server (Network Information Service) for sharing critical data stored in flat files between systems on a network. It is often ideal to have a shared repository (such as NIS) for storing users and groups information instead of storing them in flat files like /etc/passwd.

So what is the benefit of that?

By making such files available via the NIS server, that would allow any remote NIS client machine to access or query the data in these shared files and use them as extensions to the local versions.

NIS is not for sharing files. You can share any tabular file which at least has one column with a unique value via NIS like /etc/services file.

The main benefit of using the NIS server is that you keep your data and files, and propagate any updates to all users.

Some users, especially Windows users, might think this is sort of Active Directory like service. The Linux NIS server is older than Active Directory and not a replicate for it.

What is NIS?

The NIS is a database that contains a series of tables. It creates tables from text files like /etc/passwd, /etc/services, and any other tabular files.

Each table may contain one column or more with a unique key on each row.

You can think of it like any normal database.

You can query these tables in two ways:

  • Listing the entire table
  • Pulling a specific entry by searching

When a program requests to search for a user password details, the client checks the /etc/passwd file to check if the user doesn’t exist there; the client then asks the NIS server to search for it in the /etc/passwd table from the NIS server.

You can use any of the services and tools that come with the NIS server:

ypserv: This service waits for queries and gives answers to NIS clients.

ypbind: This is the client-side of NIS.

ypxfrd: You can use this service for sending the NIS databases from master MIS servers to slave servers.

Linux NIS servers

Linux NIS server types are:

  • Master server: stores original files.
  • Slave (secondary) server: we can use it for load balancing and helpful in case of master server failure.

You can have multiple secondary NIS servers if you need them.

Primary and secondary NIS servers are kept synced and updated. This process is called server push.

NIS domain name

NIS domains are just like the domains of a domain controller in Windows, but the difference is that client can join the network without having to wait for admin acceptance.

Keep in mind that the names used for NIS domain names MUST be different from your DNS domain names.

Installing Master Linux NIS Server

On Red Hat based distros, you can install it like this:

$ dnf -y install ypserv

On Debian-based distros, you can install it like this:

$ apt-get -y install nis

After successful installation, you need to set the NIS domain name by using the domainname command.

Let’s name it nis.example.com

$ domainname nis.example.com

To persist our NIS domain name in Red hat based distros, we can create a variable called NISDOMAIN in the /etc/sysconfig/network file.

On Debian-based distros, you can achieve the same result by adding the domainname command with the correct value to one of the rc scripts which run at boot time.

Configuring NIS

As we mentioned earlier, the ypserv waits for queries and gives answers to NIS clients.

NIS is an RPC service, so you need to ensure that the rpcbind program is up and running before you attempt to start the Linux NIS server.

On new Linux distros that rely on systemd as the service manager, systemd will automatically take care of service intra-dependencies that exist between rpcbind and ypserv.

If your distro is not one of them, you can start rpcbind like this:

$ systemctl start rpcbind

On our distro which has systemd, we can start the service like this:

$ systemctl start ypserv

To confirm that the service is running, you can use the rpcinfo command.

$ rpcinfo -p | grep ypserv

Editing the Makefile

The make command is responsible for preparing the list of files that need compilation and the required program for compilation for each of them.

The make command compiles a file called Makefile.

Taking this concept to work on NIS is straightforward. In this case, a series of text files need to be converted into a database format. We want a tool that will re-convert any files that have been changed. We can use the make command.

The Makefile is in /var/yp directory. This file contains all the shared files by the NIS server.

Let’s discuss the options in the Makefile.

NOPUSH Option

If you plan to have NIS slave servers, you will need to tell the master Linux NIS server to push the resulting maps to the slave servers. Change the NOPUSH variable to false if you want to have support for slave servers.

NOPUSH=true

Keep in mind that you need to list the hostnames of your slave servers in /var/yp/ypservers file and ensure to list a corresponding entry in the /etc/hosts file.

Min UIDs GIDs

Every user on Linux has a user id and group id. You can get your id by typing the id command and gid command respectively.

You can set the minimum permissions for the files that will be shared via NIS using MINUID and MINGID like this:

MINUID=500

MINGID=500

Merging shadow passwords with real ones

The Linux NIS server can be used to authenticate their users, NIS server will automatically take the encrypted field from the /etc/shadow file and merge it into the NIS shared copy of /etc/passwd.

You can do this using the MERGE_PASSWD option:

MERGE_PASSWD=true

Merging group shadow passwords with real ones

The /etc/group file allows passwords to be applied to group settings. Since the /etc/group file needs to be publicly readable, most distros have taken to support shadow group files /etc/gshadow.

The option is called MERGE_GROUP:

MERGE_GROUP=true

Shared entries

In Makefile,  there is an option that enables you to specify what you need to share; it is (all) option.

all: passwd group hosts services shadow networks

The option YPPWDDIR specifies the location of the passwd, group, and shadow files, so you don’t need to type the full path.

Initialize NIS server using ypinit

Once you’ve finished editing options in Makefile, you can initialize the NIS server like this:

$ /usr/lib64/yp/ypinit -m

You can use the -m option to initialize the server as a master server.

Or if you are using a 32bit system, the command will be:

$ /usr/lib/yp/ypinit

This tool will ask about the secondary NIS servers if you have any.

The server will store these entries in the /var/yp/ypservers file.

Congratulations, now your NIS server should work OK, and your map will be on the secondary servers if you have any.

Configuring NIS client

On Red Hat based distros, you can install NIS client like this:

$ dnf -y install ypbind

On Debian-based distros, you can install it like this:

$ apt-get install nis

The /etc/yp.conf file is the configuration for the client-side daemon.

You can start ypbind now:

$ systemctl start ypbind

$ systemctl enable ypbind

The/etc/nsswitch.conf file

This file contains entries of facilities and their corresponding files and services that the system will use for searching.

passwd:               files nis

This entry tells the server to search for password entries in the /etc/passwd file, and if the  NIS server finds nothing, check the NIS server.

NIS tools

There are some useful tools that can help you manage the information in the database.

ypcat: You can use this tool to get data from the NIS server by extracting it from the NIS map.

ypwhich: gets the name of the Linux NIS server that is responding to your requests.

ypmatch: rather than grabbing the entire map, or you can search by key to get a specific entry.

Original article source at: https://likegeeks.com/

#linux #server #install #configure 

How to Install, Configure and Use Linux NIS Server

Сила визуального ChatGPT с искусственным интеллектом и изображениями

В этом руководстве по ChatGPT мы узнаем о силе визуального ChatGPT: общение с ИИ и изображениями!

В последнее время большие языковые модели (LLM) добились больших успехов. Одним из наиболее заметных достижений является ChatGPT, который предназначен для взаимодействия с пользователями посредством разговоров, поддержания контекста, обработки дополнительных вопросов и исправления себя. Однако ChatGPT ограничен в обработке визуальной информации, так как он обучается на одном языке.

Модели Visual Foundation продемонстрировали потенциал компьютерного зрения благодаря своей способности понимать и генерировать сложные изображения. Он построен на основе ChatGPT и включает в себя модели Visual Foundation, чтобы восполнить этот пробел. Для поддержки этой интеграции предлагается диспетчер подсказок, четко информирующий ChatGPT о возможностях каждого VFM, определяющий форматы ввода-вывода, преобразовывающий визуальную информацию в языковой формат и обрабатывающий истории, приоритеты и конфликты Visual Foundation Model. Используя Prompt Manager, ChatGPT может итеративно использовать модели Visual Foundation до тех пор, пока не будут выполнены требования пользователя или не будет достигнуто конечное условие.

Например, пользователь загружает изображение красного цветка и запрашивает синий цветок на основе прогнозируемой глубины, превращенный в мультфильм. Visual ChatGPT применяет связанные модели Visual Foundation, такие как оценка глубины и модели преобразования глубины в изображение, для создания запрошенных выходных данных.

Цели обучения

  1. Понимать основополагающие концепции «Visual Foundation Models» и их потенциал в компьютерном зрении.
  2. Узнайте об архитектуре и компонентах системы Visual ChatGPT.
  3. Поймите, как работает его система, в том числе как она многократно вызывает модели Visual Foundation для предоставления ответов на запросы пользователей.
  4. Узнайте, как настроить среду Visual ChatGPT.
  5. Поймите его потенциальное применение.
  6. Поймите ограничения системы Visual ChatGPT.

Визуальный ChatGPT: системная архитектура

В тексте описывается, как Visual ChatGPT работает для генерации ответов на запросы пользователей. Система включает ряд моделей Visual Foundation и промежуточные результаты этих моделей для получения окончательного ответа.

1. Компоненты

  • Системный принцип: Системный принцип обеспечивает основные правила для Visual ChatGPT.
  • Модель Visual Foundation: это комбинация различных моделей Visual Foundation, где каждая базовая модель содержит определенную функцию с явными входными и выходными данными.
  • История диалога: Отслеживание разговора с момента первого взаимодействия с системой или запроса на это.
  • Пользовательский запрос: то, что пользователь хочет сделать, может быть запрошено в форме пользовательского запроса.
  • История рассуждений: используется для решения сложных вопросов при сотрудничестве нескольких моделей Visual Foundation. Все предыдущие истории рассуждений из нескольких моделей Visual Foundation объединяются для определенного раунда обсуждения.
  • Промежуточный ответ: он пытается получить окончательный ответ на сложный запрос, последовательно вызывая различные модели Visual Foundation в логическом порядке, что приводит к нескольким промежуточным ответам.
  • Менеджер подсказок: диспетчер подсказок преобразует все визуальные сигналы в язык, чтобы модель ChatGPT могла их понять. Текст содержит формальное определение Visual ChatGPT, включая его основные правила и различные задействованные компоненты. Обзор этого. В левой части показан диалог из трех раундов. Средние части рисунка показывают, как он постоянно вызывает модели Visual Foundation и предоставляет ответы. В правой части рисунка показан процесс второго QA.

2. Обзор

"Визуальный чатGPT

Текст содержит формальное определение Visual ChatGPT, включая его основные правила и различные задействованные компоненты. Центр отображает блок-схему итеративного вызова моделей Visual Foundation и предоставляет ответы. В левой части отображается трехраундовое взаимодействие. Справа показан тщательный процесс второго QA.

3. Обзор диспетчера подсказок

"быстрый менеджер

Как настроить Visual ChatGPT?

"визуальный чатGPT

Команды

# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirement.txt
# download the visual foundation models
bash download.sh
# prepare your private openAI private key
export OPENAI_API_KEY={Your_Private_Openai_Key}
# create a folder to save images
mkdir ./image
#install pytorch with pip or conda command based on your CUDA version. For example
# below command is for the CUDA version 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# Start Visual ChatGPT !
python visual_chatgpt.py

Демо
Вот URL для демонстрации.

Приложения Visual ChatGPT

Visual ChatGPT может выполнять различные задачи компьютерного зрения и предварительной обработки изображений, как показано ниже, с использованием текста.

  • Генерация синтетического изображения: пользователь может попросить создать любое изображение с его описанием. Visual ChatGPT сгенерирует то же самое в течение нескольких секунд, в зависимости от вычислительной мощности машины, на которой он работает. Его бэкэнд Генерация изображений основан на Stable Diffusion, платформе с открытым исходным кодом, обученной генерировать изображения из текста.
  • Изменение фона изображения: он может быть в краске или вне краски, как и стабильная диффузия. Пользователь может попросить чат-бота изменить или отредактировать фон изображения с любым описанием. Стабильная модель диффузии закрашивает фон на бэкенде в соответствии с текстовым описанием.
  • Обнаружение краев на изображениях: пользователь может попросить его выделить края любого изображения в оттенках серого или других форматах. Visual ChatGPT будет использовать комбинацию своих предварительно обученных моделей и OpenCV на бэкенде, чтобы выделить края изображения. Это полезно во многих сценариях, например, при использовании краевых изображений и исходных изображений в качестве комбинированных входных данных для обучения таких моделей, как условные GAN .
  • Замена или удаление объектов на изображении: пользователь может редактировать, удалять или изменять любую часть или объект на изображении с помощью простого текстового описания. Например, пользователь может попросить чат-бота изменить лицо кошки на лицо собаки, и Visual ChatGPT сможет создать то же самое. Эта функция требует большей вычислительной мощности.

Ограничения

Хотя Visual ChatGPT является многообещающим методом мультимодального общения, он имеет ряд недостатков.

  • В значительной степени зависит от моделей ChatGPT и Visual Foundation, поэтому точность и эффективность этих моделей влияют на его производительность.
  • Требует значительного объема оперативных инженерных работ, которые могут занимать много времени и требуют компьютерного зрения и навыков обработки естественного языка.
  • Visual ChatGPT может вызывать несколько моделей Visual Foundation при выполнении определенных задач, что может привести к ограниченным возможностям в реальном времени по сравнению со специально обученными экспертными моделями.
  • Возможность легко подключать и отключать модели фундамента может вызвать проблемы с безопасностью и конфиденциальностью, поэтому необходимо тщательное рассмотрение и автоматические проверки, чтобы гарантировать, что конфиденциальные данные не будут раскрыты или скомпрометированы.

"ChatGPT

Заключение

Visual ChatGPT, открытая система, позволяет пользователям взаимодействовать с ChatGPT за пределами языкового формата, используя различные модели Visual Foundation. Для этого разработан ряд подсказок, которые помогают ChatGPT понимать визуальную информацию и шаг за шагом решать сложные визуальные вопросы. Потенциал и компетентность системы демонстрируются посредством экспериментов и отдельных случаев. Однако есть опасения относительно неудовлетворительных результатов из-за сбоев модели Visual Foundation и нестабильности подсказок. Модуль самокоррекции необходим для проверки соответствия результатов выполнения намерениям человека и внесения соответствующих правок. Такое поведение увеличивает время вывода модели, но приводит к более сложному мышлению. Будущая работа будет решать эту проблему.

Ключевые выводы

  • Visual ChatGPT — это система, которая включает модели Visual Foundation в ChatGPT, чтобы он мог обрабатывать визуальную информацию.
  • Менеджер подсказок является ключевым компонентом этой системы и информирует ChatGPT о возможностях каждой модели Visual Foundation, форматах ввода-вывода и истории.
  • Visual ChatGPT позволяет пользователям выполнять различные задачи компьютерного зрения и предварительную обработку изображений с помощью текстовых или голосовых команд, включая создание синтетических изображений, изменение фона, обнаружение краев, а также замену или удаление объектов.
  • Система предоставляет подробный обзор своих компонентов и архитектуры, а также инструкции по ее настройке.

Оригинальный источник статьи: https://www.analyticsvidhya.com

#ai #chatgpt #openai

Сила визуального ChatGPT с искусственным интеллектом и изображениями
佴 芬嘉

佴 芬嘉

1679135340

Visual ChatGPT 与 AI 和图像的力量

在此 ChatGPT 教程中,我们将了解 Visual ChatGPT 的强大功能:与 AI 和图像的对话!


最近,大型语言模型 (LLM) 取得了很大进步。最显着的突破之一是 ChatGPT,它旨在通过对话与用户互动、维护上下文、处理后续问题并自我纠正。然而,ChatGPT 在处理视觉信息方面受到限制,因为它是使用单一语言模态进行训练的。

视觉基础模型凭借其理解和生成复杂图像的能力显示了计算机视觉的潜力。它基于 ChatGPT 构建,并结合了 Visual Foundation Models 来弥合这一差距。建议使用 Prompt Manager 来支持这种集成,明确告知 ChatGPT 每个 VFM 的能力,指定输入输出格式,将视觉信息转换为语言格式,以及处理视觉基础模型历史、优先级和冲突。使用提示管理器,ChatGPT 可以迭代地利用 Visual Foundation Models,直到它满足用户要求或达到结束条件。

例如,用户上传了一张红色花朵的图像,并请求根据预测的深度将蓝色花朵制作成卡通。Visual ChatGPT 应用相关的视觉基础模型,例如深度估计和深度到图像模型,来生成请求的输出。

学习目标

  1. 了解“视觉基础模型”的基本概念及其在计算机视觉中的潜力。
  2. 了解 Visual ChatGPT 系统架构和组件。
  3. 了解其系统的工作原理,包括它如何反复调用 Visual Foundation Models 来为用户查询提供答案。
  4. 了解如何设置 Visual ChatGPT 环境。
  5. 了解它的潜在应用。
  6. 了解 Visual ChatGPT 系统的局限性。

Visual ChatGPT:系统架构

该文本描述了 Visual ChatGPT 如何工作以生成对用户查询的响应。该系统涉及一系列视觉基础模型和这些模型的中间输出以获得最终响应。

1. 组件

  • 系统原理:系统原理为Visual ChatGPT 提供了基本规则。
  • 视觉基础模型:它是各种视觉基础模型的组合,其中每个基础模型包含一个确定的函数,具有明确的输入和输出。
  • 对话的历史:从与系统的第一次交互或对它的请求开始的对话。
  • 用户查询:可以通过用户查询的形式查询用户想做什么。
  • 推理的历史:用于通过多个视觉基础模型的协作来解决复杂的问题。来自多个 Visual Foundation Models 的所有先前推理历史被组合用于特定对话回合。
  • 中间答案:它试图通过以逻辑方式逐步调用各种可视化基础模型来获得复杂查询的最终答案,从而产生多个中间答案。
  • 提示管理器:提示管理器将所有视觉信号转换为语言,以便 ChatGPT 模型可以理解它们。文本提供了 Visual ChatGPT 的正式定义,包括其基本规则和涉及的不同组件。它的概况。左侧显示了三轮对话。该图的中间部分显示了它如何不断调用 Visual Foundation Models 并提供答案。右图为第二次QA的流程。

2.概述

"可视聊天GPT

文本提供了 Visual ChatGPT 的正式定义,包括其基本规则和涉及的不同组件。该中心显示了它如何迭代调用 Visual Foundation Models 并提供回复的流程图。左侧显示三轮交互。右侧显示了第二次质量检查的完整过程。

3.提示管理器概述

“提示经理

如何设置 Visual ChatGPT?

》可视聊天GPT

命令

# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirement.txt
# download the visual foundation models
bash download.sh
# prepare your private openAI private key
export OPENAI_API_KEY={Your_Private_Openai_Key}
# create a folder to save images
mkdir ./image
#install pytorch with pip or conda command based on your CUDA version. For example
# below command is for the CUDA version 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# Start Visual ChatGPT !
python visual_chatgpt.py

演示
这是演示的 URL。

Visual ChatGPT 的应用

Visual ChatGPT 可以执行各种计算机视觉任务和图像预处理,如下面使用文本的任务。

  • 合成图像生成:用户可以要求它生成任何图像及其描述。Visual ChatGPT 将在几秒钟内生成相同的内容,具体取决于运行它的机器的计算能力。它的后端图像生成基于 Stable Diffusion,这是一个开源框架,经过训练可以从文本生成图像。
  • 改变图像的背景:它可以是in-paint或out-paint,就像稳定的扩散一样。用户可以要求聊天机器人更改或编辑带有任何描述的图像背景。稳定的扩散模型将根据文本描述在后端修复背景。
  • 图像边缘检测:用户可以要求它以灰度或其他格式突出显示任何图像的边缘。Visual ChatGPT 将在后端利用其预训练模型和OpenCV的组合来突出显示图像的边缘。这在许多场景中都很有用,例如使用边缘图像和原始图像作为组合输入来训练条件GAN等模型。
  • 替换或删除图像中的对象:用户可以通过简单的文字描述来编辑、删除或修改图像中的任何部分或对象。例如,用户可以要求聊天机器人将猫的脸变成狗的脸,而 Visual ChatGPT 将能够创建相同的脸。此功能需要更多的计算能力。

限制

尽管 Visual ChatGPT 是一种很有前途的多模式通信方法,但它也有许多缺点。

  • 严重依赖 ChatGPT 和 Visual Foundation Models,因此这些模型的准确性和有效性会影响其性能。
  • 需要大量的即时工程,这可能很耗时,并且需要计算机视觉和自然语言处理能力。
  • Visual ChatGPT 在处理特定任务时可能会调用多个 Visual Foundation Models,与专门训练的专家模型相比,这可能导致实时能力有限。
  • 轻松插入和拔出基础模型的能力可能会引发安全和隐私问题,因此需要仔细考虑和自动检查以确保敏感数据不会暴露或泄露。

“聊天GPT

结论

Visual ChatGPT 是一个开放系统,允许用户通过合并不同的 Visual Foundation Models 与 ChatGPT 进行超越语言格式的交互。为此,设计了一系列提示来帮助 ChatGPT 理解视觉信息并逐步解决复杂的视觉问题。该系统的潜力和能力通过实验和选定的案例得到证明。但是,有人担心由于 Visual Foundation Model 故障和提示不稳定导致的结果不尽如人意。需要一个自校正模块来检查执行结果与人的意图之间的一致性并进行相应的编辑。这种行为会增加模型的推理时间,但会导致更复杂的思考。未来的工作将解决这个问题。

关键要点

  • Visual ChatGPT 是一个将 Visual Foundation Models 集成到 ChatGPT 中以使其能够处理视觉信息的系统。
  • Prompt Manager 是该系统的关键组件,它向 ChatGPT 告知每个 Visual Foundation Model 的功能、输入输出格式和历史记录。
  • Visual ChatGPT 允许用户使用文本或语音命令执行各种计算机视觉任务和图像预处理,包括合成图像生成、背景修改、边缘检测以及对象替换或删除。
  • 该系统提供了其组件和架构的详细概述以及设置说明。

文章原文出处:https: //www.analyticsvidhya.com

#ai #chatgpt 

Visual ChatGPT 与 AI 和图像的力量

Как установить и настроить Linux LDAP-сервер

Два дня назад один из посетителей веб-сайта искал на веб-сайте LDAP и ничего не нашел, что побудило меня написать сообщение о сервере LDAP, поэтому мы заполняем пробелы и доносим до посетителей любимый контент.

Что такое LDAP?

Мы знаем, что Linux хранит зарегистрированных пользователей в файле /etc/passwd, поэтому, если вы хотите получить доступ к машине, у вас должен быть пользователь в этом файле.

Если вы работаете с одной или несколькими машинами, это должно быть нормально, но что, если у вас сотни машин или, может быть, тысячи, и как вы будете поддерживать задачи управления пользователями, такие как изменение пароля или любые другие административные задачи, например, кто-то оставил работу, а вы? нужно закрыть его учетную запись, вы бы стали ходить для этого на каждую машину?

Это может быть кошмар, или вам нужно создать новую учетную запись. В этом случае нам нужна централизованная система управления учетными записями пользователей, база данных для хранения всей информации, связанной с учетными записями пользователей.

Наиболее часто используемым решением этой проблемы является облегченный протокол доступа к каталогам (LDAP).

LDAP использует обычную парадигму клиент/сервер.

Использование LDAP

LDAP не только хранит список пользователей, но вы также можете использовать его в качестве хранилища для ваших файлов.

Вы можете использовать его для аутентификации пользователей, как мы упоминали выше. Кроме того, вы можете хранить записи DNS на сервере LDAP.

Еще одно использование LDAP: вы можете использовать его в качестве службы каталогов желтых страниц для организации, чтобы предоставлять информацию о пользователях или сотрудниках, отделах, контактную информацию, номера телефонов, адреса, личные данные или что-то еще.

Реализации сервера LDAP

LDAP — это открытый стандартный протокол, который многие компании внедряют в протокол.

Существуют коммерческие реализации LDAP, такие как:

  • Microsoft Active Directory.
  • Интернет-каталог Oracle.
  • Единый каталог Oracle.
  • Сервер IBM Security Directory.
  • Сервер каталогов UnboundID.
  • NetIQ eDirectory или eDirectory.
  • CA Directory или CA eTrust Directory.

И бесплатные реализации с открытым исходным кодом, такие как:

  • OpenLDAP.
  • ФоржРок Опендиджей.
  • Апач ДС.
  • 389 сервер каталогов.

В этом посте мы будем использовать OpenLDAP, который очень популярен и любим сообществом.

OpenLDAP — это реализация LDAP с открытым исходным кодом, работающая в системах Linux/UNIX.

Установка OpenLDAP

Чтобы установить OpenLDAP, вам необходимо установить пакеты openldap, openldap-servers и openldap-clients.

$ yum -y install openldap openldap-servers openldap-clients

Или, если вы используете CentOS 7, вы можете использовать dnf или Dandified Yum.

$ dnf -y install openldap openldap-servers openldap-clients

Если вы используете систему на основе Debian, такую ​​как Ubuntu, вы можете установить ее следующим образом:

$ sudo apt-get install slapd

$ sudo apt-get install ldap-utils

Затем мы можем включить автоматический запуск службы при запуске:

$ systemctl enable slapd

Настройка LDAP

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

$ ldappasswd

Файлы конфигурации для OpenLDAP находятся в каталоге /etc/openldap/slapd.d.

Вы можете изменить эти файлы напрямую или использовать команду ldapmodify. Настоятельно рекомендуется модифицировать OpenLDAP с помощью команды ldapmodify.

Терминология LDAP

Если мы собираемся иметь дело с протоколом LDAP, нам нужно знать некоторые термины, потому что мы будем их часто использовать.

Запись (или объект): каждая единица в LDAP считается записью.

DN : имя записи.

o : Название организации.

dc : Компонент домена. Например, вы можете написать likegeeks.com так: dc=likegeeks,dc=com.

cn : Обычное имя, например, имя человека или имя какого-либо объекта.

Изменение записей

OpenLDAP хранит свою информацию в файлах bdb или hdb. Вы можете найти файл hdb в:

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

файл.

Чтобы идентифицировать элемент, используйте атрибут dn (уникальное имя). Таким образом, первая строка в нашем LDIF-файле будет такой:

DN: olcDatabase={2}hdb,cn=config

Затем мы указываем, хотим ли мы добавить или изменить

тип изменения: изменить

Мы также должны уточнить, заменим ли мы его или удалим.

заменить: olcSuffix

И, наконец, вводим новое значение измененного атрибута.

olcSuffix: dc=likegeeks,dc=местный

Вернемся к нашему файлу. Измените следующие записи следующим образом:

olcSuffix: dc=мой-домен,dc=com

olcRootDN: cn=менеджер,dc=мой-домен,dc=com

Итак, наш LDIF-файл будет таким:

dn: olcDatabase={2}hdb,cn=config
changeType: modify
replace: olcSuffix
olcSuffix: dc=likegeeks,dc=local
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=local

В нашем файле

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

файл. Атрибут dn: dn:

olcDatabase={2}hdb, а поскольку файл находится в папке конфигурации, полный атрибут dn равен dn:

olcDatabase={2}hdb,cn=config

Затем сохраняем наш файл и используем ldapmodify:

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif

Вы можете использовать команду ldapsearch для проверки изменений:

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*

И да, данные были изменены.

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

$ slaptest -u

Добавление записей

Чтобы добавить записи, используйте команду ldapdd.

Сначала мы создаем наш файл ldif:

dn: dc=likegeeks,dc=local
objectClass: dcObject
objectClass: organization
dc: likegeeks
o: likegeeks

Мы указываем ряд атрибутов, таких как компонент домена (dc), отличительное имя (dn) и организация (o).

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

Вы проверяете схему в соответствии с вашей системой.

В CentOS 6 вы можете перейти к

/etc/openldap/slapd.d/cn=config/cn=schema

В CentOS 7 вы можете перейти к

/etc/openldap/schema

Или вы можете использовать команду grep , чтобы получить файлы .schema из вашей системы.

Организация объекта в нашем примере находится в

core.schema

файл на CentOS 7.

Как мы видим, единственным обязательным атрибутом является o, который является организацией.

Теперь мы можем использовать команду ldapadd для добавления нашего объекта:

$ ldapadd -f myobj.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

Мы указываем имя файла с помощью -f, пользователя-администратора с помощью -D и пароль с помощью -w.

Для поиска записи вы можете использовать команду ldapsearch:

$ ldapsearch -x -b dc=likegeeks,dc=local

Добавление организационных подразделений

Вы можете добавить организационную единицу (OU). Сначала создайте новый файл LDIF. Назовем его users.ldif и напишем так:

dn: ou=users,dc=likegeeks,dc=local
objectClass: organizationalUnit
ou: users

Затем мы используем ldapdd для добавления модуля:

$ ldapadd -f users.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

В этом организационном подразделении содержатся все пользователи LDAP.

Добавление пользователей

Мы можем добавить пользователей во вновь созданное организационное подразделение.

Сначала мы создаем наш файл ldif:

dn: cn=adam,ou=users,dc=likegeeks,dc=local
cn: adam
sn: USA
objectClass: myorg
userPassword: mypass
uid: adam

Затем добавьте пользователя с помощью команды ldapdd:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local 2 -w mypass

Добавление групп

Кроме того, мы сначала создаем файл ldif:

dn: cn=developers,ou=users,dc=likegeeks,dc=local
cn: developers
objectClass: groupOfNames
member: cn=adam,ou=users,dc=likegeeks,dc=local

Затем запустите ldapdd, чтобы добавить группу:

$ ldapadd -f groups.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

Удаление записей

Удалить запись очень просто, просто используйте команду ldapdelete с нужным cn:

$ ldapdelete "cn=adam,ou=users,dc=likegeeks,dc=local" -D cn=admin,dc=likegeeks,dc=local -w mypass

Проверить, удалена ли запись, можно с помощью ldapsearch:

$ ldapsearch -x -b "dc=likegeeks,dc=local"

LDAP-порт

Порт LDAP — 389, и если вы защищаете свой LDAP с помощью TLS, порт будет 636.

Вы можете проверить, на каком порту работает ваш OpenLDAP, используя команду netstat.

$ netstat -ntlp | grep slapd

Аутентификация пользователей с помощью LDAP

По умолчанию Linux аутентифицирует пользователей с помощью файла /etc/passwd. Теперь мы увидим, как аутентифицировать пользователей с помощью OpenLDAP.

Убедитесь, что в вашей системе разрешены порты OpenLDAP (389, 636).

Если вы используете брандмауэр iptables, я рекомендую вам просмотреть сообщение iptables, чтобы понять эти команды брандмауэра Linux iptables .

$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=likegeeks,dc=local" --enableldaptls --update

Теперь сертификаты находятся в /etc/openldap/cacerts.

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

Если вы хотите создать пользователя adam, создайте файл adam.ldif и напишите следующее:

dn: uid=adam,ou=users,dc=likegeeks,dc=local
uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: mypass
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

Если вы используете CentOS 7, вы должны зашифровать пароли с помощью команды slappasswd, прежде чем помещать их в свой файл LDIF следующим образом:

$ slappasswd

Затем мы копируем зашифрованный пароль в файл ldif, поэтому файл будет таким:

uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: {SSHA}sathXSo3XTWrbi20Fp+MsqJHjXkHGhT/
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

Теперь мы можем использовать ldapdd для добавления пользователя:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

Использование веб-интерфейса LDAP (phpldapadmin)

Новичку может быть немного сложно работать с терминала. Однако существует веб-инструмент под названием phpldapadmin, написанный на PHP для упрощения работы с OpenLDAP.

Вы можете установить его следующим образом:

$ yum -y install phpldapadmin

Приведенная выше команда установит веб-сервер Apache, поэтому вам не нужно его устанавливать.

Теперь вам нужно настроить phpldapadmin.

Отредактируйте этот файл:

/etc/phpldapadmin/config.php

И измените эту строку:

$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');

Если вы хотите использовать likegeeks.local в качестве домена, вы должны написать его так:

$servers->setValue('server','base',array('dc=likegeeks,dc=local'));

Также вам нужно изменить строку bind_id следующим образом:

$servers->setValue('login','bind_id','cn=admin,dc= likegeeks,dc=local');

И не забудьте указать свой псевдоним apache:

<IfModule mod_alias.c>
    Alias /ldap /usr/share/phpldapadmin/htdocs
</IfModule>

Теперь вы можете получить доступ к своему phpldapadmin следующим образом:

http://server_domain_name_or_IP/ldap

в моем примере я буду использовать:

http://likegees.local/ldap

В поле DN для входа вы будете использовать что-то вроде следующего:

cn=admin,dc=likegeeks,dc=local

Вы можете делать все то же, что и мы, в этом веб-интерфейсе, добавляя пользователей, организации и группы.

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

Спасибо.

Оригинальный источник статьи: https://likegeeks.com/

#linux #install #configure 

Как установить и настроить Linux LDAP-сервер
木村  直子

木村 直子

1679075160

如何安装和配置 Linux LDAP 服务器

两天前,一位网站访问者在网站上搜索 LDAP,但一无所获,这促使我发了一篇关于 LDAP 服务器的帖子,因此我们填补了空白,将喜爱的内容带给访问者。

什么是 LDAP?

我们知道 Linux 将注册用户保存在 /etc/passwd 文件中,所以如果你想访问机器,你必须在该文件上有一个用户。

如果您正在使用一台或几台机器,那应该没问题,但是如果您有数百台或数千台机器怎么办,以及如何维护用户管理任务,例如密码修改或任何其他管理任务,例如有人离开工作而您需要关闭他的帐户,你会去每台机器做吗?

那可能是一场噩梦,或者您需要创建一个新帐户。在这种情况下,我们需要一个集中的用户账户管理系统,一个数据库来保存与用户账户相关的所有信息。

此问题最常用的解决方案是轻量级目录访问协议 (LDAP)。

LDAP 使用通常的客户端/服务器范例。

LDAP 的使用

LDAP 不仅保留用户列表,而且您还可以将其用作文件的存储。

如上所述,您可以使用它来对用户进行身份验证。此外,您还可以将DNS 记录存储在 LDAP 服务器中。

LDAP 的另一种用途,您可以将其用作组织的黄页目录服务,以提供有关用户或员工、部门、联系信息、电话号码、地址、私人数据或其他任何信息。

LDAP 服务器实现

LDAP 是一个开放的标准协议,许多公司都在实施该协议。

有 LDAP 的商业实现,例如:

  • 微软活动目录。
  • 甲骨文互联网目录。
  • 甲骨文统一目录。
  • IBM 安全目录服务器。
  • UnboundID 目录服务器。
  • NetIQ eDirectory 或 eDirectory。
  • CA 目录或 CA eTrust 目录。

以及免费的开源实现,例如:

  • 打开 LDAP。
  • 锻造摇滚 OpenDJ。
  • 阿帕奇DS。
  • 389 目录服务器。

在这篇文章中,我们将使用 OpenLDAP,它在社区中很常见并且很受欢迎。

OpenLDAP 是在 Linux/UNIX 系统上运行的 LDAP 的开源实现。

安装 OpenLDAP

要安装 OpenLDAP,您必须安装 openldap、openldap-servers 和 openldap-clients 包。

$ yum -y install openldap openldap-servers openldap-clients

或者,如果您使用的是 CentOS 7,则可以使用 dnf 或 Dandified Yum。

$ dnf -y install openldap openldap-servers openldap-clients

如果您使用的是基于 Debian 的系统,例如 Ubuntu,您可以像这样安装它:

$ sudo apt-get install slapd

$ sudo apt-get install ldap-utils

然后我们可以让服务在启动时自动运行:

$ systemctl enable slapd

配置 LDAP

安装成功后,您需要使用 ldappasswd 命令为 admin 用户设置密码:

$ ldappasswd

OpenLDAP 的配置文件位于 /etc/openldap/slapd.d 目录中。

您可以直接修改这些文件或使用 ldapmodify 命令。强烈建议使用 ldapmodify 命令修改 OpenLDAP。

LDAP 术语

如果我们要处理 LDAP 协议,则需要了解一些术语,因为我们会经常使用它们。

条目(或对象):LDAP 中的每个单元都被视为一个条目。

dn:条目名称。

o:组织名称。

dc:域组件。例如,您可以这样写 likegeeks.com dc=likegeeks,dc=com。

cn:通用名称,例如人名或某些对象的名称。

修改条目

OpenLDAP 将其信息存储在 bdb 或 hdb 文件中。您可以在以下位置找到 hdb 文件:

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

文件。

要标识元素,请使用 dn(专有名称)属性。所以我们的 LDIF 文件中的第一行将是:

dn: olcDatabase={2}hdb,cn=config

然后我们指定是否要添加或修改

变更类型:修改

我们还必须澄清我们是要替换它还是删除它

替换:olcSuffix

最后,我们键入已更改属性的新值。

olc后缀:dc=likegeeks,dc=local

回到我们的档案。像这样更改以下条目:

olc后缀:dc=我的域,dc=com

olcRootDN: cn=Manager,dc=my-domain,dc=com

所以我们的 LDIF 文件将是这样的:

dn: olcDatabase={2}hdb,cn=config
changeType: modify
replace: olcSuffix
olcSuffix: dc=likegeeks,dc=local
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=local

在我们的档案中

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

文件。dn 属性为 dn:

olcDatabase={2}hdb,并且因为文件在config文件夹里面,所以完整的dn属性是dn:

olcDatabase={2}hdb,cn=配置

然后我们保存文件并使用 ldapmodify:

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif

您可以使用 ldapsearch 命令来检查更改:

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*

是的,数据已更改。

另外,您可以使用 slaptest 命令来检查配置。

$ slaptest -u

添加条目

要添加条目,请使用 ldapadd 命令。

首先,我们创建我们的 ldif 文件:

dn: dc=likegeeks,dc=local
objectClass: dcObject
objectClass: organization
dc: likegeeks
o: likegeeks

我们指定了一系列属性,例如域组件 (dc)、专有名称 (dn) 和组织 (o)。

根据我们正在创建的对象的类型,在我们的例子中是 dcObject,一些属性是必需的,其他的是可选的。

您根据您的系统检查架构。

在 CentOS 6 上,你可以去

/etc/openldap/slapd.d/cn=config/cn=schema

在 CentOS 7 上,你可以去

/etc/openldap/schema

或者您可以使用grep 命令从您的系统中获取 .schema 文件。

我们示例中的对象组织位于

core.schema

CentOS 7 上的文件。

如我们所见,唯一必需的属性是 o,即组织。

现在我们可以使用 ldapadd 命令来添加我们的对象:

$ ldapadd -f myobj.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

我们使用 -f 指定文件名,使用 -D 指定管理员用户,使用 -w 指定密码。

要搜索条目,您可以使用 ldapsearch 命令:

$ ldapsearch -x -b dc=likegeeks,dc=local

添加组织单位

您可以添加组织单位 (ou)。首先,创建一个新的 LDIF 文件。让我们将其命名为 users.ldif,并放置以下内容:

dn: ou=users,dc=likegeeks,dc=local
objectClass: organizationalUnit
ou: users

然后我们使用 ldapadd 添加单元:

$ ldapadd -f users.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

该组织单位拥有所有 LDAP 用户。

添加用户

我们可以将用户添加到新建的组织单元中。

首先,我们创建我们的 ldif 文件:

dn: cn=adam,ou=users,dc=likegeeks,dc=local
cn: adam
sn: USA
objectClass: myorg
userPassword: mypass
uid: adam

然后使用 ldapadd 命令添加用户:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local 2 -w mypass

添加群组

此外,我们首先创建 ldif 文件:

dn: cn=developers,ou=users,dc=likegeeks,dc=local
cn: developers
objectClass: groupOfNames
member: cn=adam,ou=users,dc=likegeeks,dc=local

然后运行 ​​ldapadd 添加组:

$ ldapadd -f groups.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

删除条目

删除条目非常简单,只需使用 ldapdelete 命令和你想要的 cn:

$ ldapdelete "cn=adam,ou=users,dc=likegeeks,dc=local" -D cn=admin,dc=likegeeks,dc=local -w mypass

您可以使用 ldapsearch 检查条目是否被删除:

$ ldapsearch -x -b "dc=likegeeks,dc=local"

LDAP端口

LDAP 端口为 389,如果您使用 TLS 保护 LDAP,端口将为 636。

您可以使用 netstat 命令确保您的 OpenLDAP 正在运行哪个端口。

$ netstat -ntlp | grep slapd

使用 LDAP 验证用户

默认情况下,Linux使用 /etc/passwd 文件对用户进行身份验证。现在我们将了解如何使用 OpenLDAP 对用户进行身份验证。

确保您允许系统上的 OpenLDAP 端口(389、636)。

如果您正在使用 iptables 防火墙,我建议您查看 iptables 帖子以了解这些命令Linux iptables firewall

$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=likegeeks,dc=local" --enableldaptls --update

现在证书位于 /etc/openldap/cacerts 中。

当我们创建用户时,您必须定义一些需要的字段。

如果你想创建一个用户 adam,你将创建 adam.ldif 文件并写入以下内容:

dn: uid=adam,ou=users,dc=likegeeks,dc=local
uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: mypass
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

如果您使用的是 CentOS 7,您应该在将密码放入 LDIF 文件之前使用 slappasswd 命令加密密码,如下所示:

$ slappasswd

然后我们把加密后的密码复制到ldif文件上,这样文件就会是这样的:

uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: {SSHA}sathXSo3XTWrbi20Fp+MsqJHjXkHGhT/
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

现在我们可以使用 ldapadd 添加用户:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

使用 LDAP 网络界面 (phpldapadmin)

对于初学者来说,在终端上工作可能有点棘手。但是,有一个名为 phpldapadmin 的基于 Web 的工具,它是用 PHP 编写的,可以简化 OpenLDAP 的使用。

您可以像这样安装它:

$ yum -y install phpldapadmin

上面的命令将安装 Apache Web 服务器,所以你不需要安装它。

现在您需要配置 phpldapadmin。

编辑此文件:

/etc/phpldapadmin/config.php

并更改此行:

$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');

如果你想使用 likegeeks.local 作为域,你应该这样写:

$servers->setValue('server','base',array('dc=likegeeks,dc=local'));

此外,您需要像这样更改 bind_id 行:

$servers->setValue('login','bind_id','cn=admin,dc= likegeeks,dc=local');

并且不要忘记输入您的 apache 别名:

<IfModule mod_alias.c>
    Alias /ldap /usr/share/phpldapadmin/htdocs
</IfModule>

现在您可以像这样访问您的 phpldapadmin:

http://server_domain_name_or_IP/ldap

在我的示例中,我将使用:

http://likegees.local/ldap

在登录 DN 字段中,您将使用如下内容:

cn=admin,dc=likegeeks,dc=local

您可以执行我们在此 Web 界面中所做的所有操作,添加用户、组织和组。

我希望您觉得本教程有用且简单。我们无法在一篇文章中涵盖所有 LDAP 服务器的使用,但这是对 LDAP 协议及其使用方法的简要介绍。

谢谢。

文章原文出处:https: //likegeeks.com/

#linux #install #configure 

如何安装和配置 Linux LDAP 服务器
Rui  Silva

Rui Silva

1679072700

O poder do Visual ChatGPT com IA e imagens

Neste tutorial do ChatGPT, aprenderemos sobre o poder do Visual ChatGPT: conversas com IA e imagens!

Recentemente, os Large Language Models (LLMs) fizeram grandes avanços. Uma das inovações mais notáveis ​​é o ChatGPT, projetado para interagir com os usuários por meio de conversas, manter o contexto, lidar com perguntas de acompanhamento e corrigir-se. No entanto, o ChatGPT é limitado no processamento de informações visuais, pois é treinado com uma única modalidade de idioma.

Os modelos de fundação visual mostraram potencial na visão computacional com sua capacidade de entender e gerar imagens complexas. Ele é construído com base no ChatGPT e incorpora Visual Foundation Models para preencher essa lacuna. Um Prompt Manager é proposto para dar suporte a essa integração, informando claramente ao ChatGPT sobre a capacidade de cada VFM, especificando formatos de entrada-saída, convertendo informações visuais em formato de linguagem e lidando com históricos, prioridades e conflitos do Visual Foundation Model. Usando o Prompt Manager, o ChatGPT pode aproveitar os modelos de base visual iterativamente até atender aos requisitos do usuário ou atingir a condição final.

Por exemplo, um usuário carrega uma imagem de uma flor vermelha e solicita uma flor azul, com base na profundidade prevista, transformada em desenho animado. O Visual ChatGPT aplica modelos de base visual relacionados, como estimativa de profundidade e modelos de profundidade para imagem, para gerar a saída solicitada.

objetivos de aprendizado

  1. Entenda os conceitos fundamentais de “Modelos de fundação visual” e seu potencial em visão computacional.
  2. Saiba mais sobre a arquitetura e os componentes do sistema Visual ChatGPT.
  3. Entenda como seu sistema funciona, incluindo como ele invoca de forma iterativa os Modelos de Fundação Visual para fornecer respostas às consultas do usuário.
  4. Aprenda a configurar o ambiente Visual ChatGPT.
  5. Entenda suas possíveis aplicações.
  6. Entenda as limitações do sistema Visual ChatGPT.

O Visual ChatGPT: Arquitetura do Sistema

O texto descreve como o Visual ChatGPT funciona para gerar respostas às consultas do usuário. O sistema envolve uma série de Visual Foundation Models e saídas intermediárias desses modelos para obter a resposta final.

1. Componentes

  • Princípio do sistema: O princípio do sistema fornece as regras básicas para o Visual ChatGPT.
  • Modelo de Fundação Visual: É a combinação de vários Modelos de Fundação Visual, onde cada modelo de fundação contém uma determinada função com entradas e saídas explícitas.
  • História do Diálogo: Acompanhe a conversa desde a primeira interação com o sistema ou solicitação dela.
  • Consulta do usuário: o que o usuário deseja fazer pode ser consultado na forma de uma consulta do usuário.
  • History of Reasoning: Usado para resolver questões complexas com a colaboração de vários Visual Foundation Models. Todas as histórias de raciocínio anteriores de vários Modelos de Fundação Visual são combinadas para uma determinada rodada de conversa.
  • Resposta Intermediária: Tenta obter a resposta final para uma consulta complexa invocando gradualmente vários Modelos de Fundação Visual de maneira lógica, resultando em várias respostas intermediárias.
  • Prompt Manager: O Prompt Manager converte todos os sinais visuais em linguagem para que o modelo ChatGPT possa entendê-los. O texto fornece uma definição formal do Visual ChatGPT, incluindo suas regras básicas e os diferentes componentes envolvidos. Visão geral dele. O lado esquerdo mostra um diálogo de três rodadas. As partes intermediárias da figura mostram como ela invoca continuamente modelos de base visual e fornece respostas. O lado direito da figura mostra o processo do segundo QA.

2. Visão geral

"Visual ChatGPT

O texto fornece uma definição formal do Visual ChatGPT, incluindo suas regras básicas e os diferentes componentes envolvidos. O centro exibe o fluxograma de como chama de forma iterativa os Modelos de Fundação Visual e fornece respostas. O lado esquerdo exibe uma interação de três rodadas. O lado direito exibe o processo completo do segundo controle de qualidade.

3. Visão geral do Gerenciador de Prompts

"gerente imediato

Como configurar o Visual ChatGPT?

"bate-papo visualGPT

Comandos

# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirement.txt
# download the visual foundation models
bash download.sh
# prepare your private openAI private key
export OPENAI_API_KEY={Your_Private_Openai_Key}
# create a folder to save images
mkdir ./image
#install pytorch with pip or conda command based on your CUDA version. For example
# below command is for the CUDA version 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# Start Visual ChatGPT !
python visual_chatgpt.py

Demonstração
Aqui está o URL para a Demonstração.

Aplicações do Visual ChatGPT

O Visual ChatGPT pode executar uma variedade de tarefas de visão computacional e pré-processamento de imagens, como as abaixo, usando texto.

  • Geração de Imagem Sintética: O usuário pode solicitar a geração de qualquer imagem com sua descrição. O Visual ChatGPT gerará o mesmo em segundos, dependendo do poder de computação da máquina em que está sendo executado. Sua geração de imagem de back-end é baseada em difusão estável, que é uma estrutura de código aberto treinada para gerar imagens de texto.
  • Alterando o fundo da imagem: Pode ser pintura interna ou externa, assim como a difusão estável. O usuário pode pedir ao chatbot para alterar ou editar o fundo da imagem com qualquer descrição. Um modelo de difusão estável pintará o plano de fundo no back-end conforme a descrição do texto.
  • Detecção de borda nas imagens: Um usuário pode solicitar que destaque as bordas de qualquer imagem em tons de cinza ou outros formatos. O Visual ChatGPT utilizará uma combinação de seus modelos pré-treinados e OpenCV no back-end para destacar as bordas da imagem. Isso é útil em muitos cenários, como usar imagens de borda e imagens originais como entrada combinada para treinar modelos como GANs condicionais .
  • Substituir ou remover os objetos de uma imagem: O usuário pode editar, remover ou modificar qualquer parte ou objeto da imagem com apenas uma simples descrição de texto. Por exemplo, um usuário pode pedir ao chatbot para mudar o rosto de um gato para o de um cachorro, e o Visual ChatGPT poderá criar o mesmo. Esse recurso requer mais poder de computação.

Limitações

Embora o Visual ChatGPT seja um método promissor para comunicação multimodal, ele apresenta várias desvantagens.

  • Baseia-se fortemente em ChatGPT e Visual Foundation Models, portanto, a precisão e a eficácia desses modelos influenciam seu desempenho.
  • Requer uma quantidade substancial de engenharia imediata, que pode ser demorada e requer visão computacional e proficiência em processamento de linguagem natural.
  • O Visual ChatGPT pode invocar vários Visual Foundation Models ao lidar com tarefas específicas, o que pode resultar em recursos limitados em tempo real em comparação com modelos especializados especificamente treinados.
  • A capacidade de conectar e desconectar facilmente modelos de fundação pode aumentar as preocupações de segurança e privacidade, portanto, consideração cuidadosa e verificações automáticas são necessárias para garantir que dados confidenciais não sejam expostos ou comprometidos.

"ChatGPT

Conclusão

O Visual ChatGPT, um sistema aberto, permite que os usuários interajam com o ChatGPT além do formato de linguagem, incorporando diferentes Modelos de Fundação Visual. Para conseguir isso, uma série de prompts foi projetada para ajudar o ChatGPT a entender as informações visuais e resolver questões visuais complexas passo a passo. O potencial e a competência do sistema são demonstrados através de experimentos e casos selecionados. No entanto, existem preocupações com relação a resultados insatisfatórios devido a falhas do Visual Foundation Model e instabilidade imediata. Um módulo de autocorreção é necessário para verificar a consistência entre os resultados da execução e as intenções humanas e fazer as edições correspondentes. Esse comportamento aumenta o tempo de inferência do modelo, mas leva a um pensamento mais complexo. Trabalhos futuros abordarão essa questão.

Principais conclusões

  • O Visual ChatGPT é um sistema que incorpora modelos de fundação visual no ChatGPT para permitir que ele processe informações visuais.
  • O Prompt Manager é um componente-chave deste sistema e informa ao ChatGPT sobre os recursos, formatos de entrada-saída e históricos de cada Visual Foundation Model.
  • O Visual ChatGPT permite que os usuários executem várias tarefas de visão computacional e pré-processamento de imagem usando comandos de texto ou voz, incluindo geração de imagem sintética, modificação de fundo, detecção de borda e substituição ou remoção de objeto.
  • O sistema fornece uma visão geral detalhada de seus componentes e arquitetura e instruções para configurá-lo.

Fonte do artigo original em: https://www.analyticsvidhya.com

#AI #chatgpt 

O poder do Visual ChatGPT com IA e imagens
Hermann  Frami

Hermann Frami

1679071203

How to Install and Configure Linux LDAP Server

Two days ago, one of the website visitors was searching on the website for LDAP and found nothing, that drives me to make a post about the LDAP server, so we fill the gaps and bring the loved content to the visitors.

What is LDAP?

We know that Linux keeps registered users on /etc/passwd file, so if you want to access the machine, you must have a user on that file.

If you are working with one or few machines, that should be OK, but what if you have hundreds of machines or maybe thousands, and how you will maintain user management tasks like password modification or any other administrative task like somebody left the work and you need to close his account, would you go to every machine to do that?

That could be a nightmare, or you need to create a new account. In this case, we need a centralized user account management system, a database to keep all information related to user accounts.

The most used solution for this problem is the Lightweight Directory Access Protocol (LDAP).

LDAP uses the usual client/server paradigm.

Uses of LDAP

LDAP not only keeps a list of users, but you can also use it as storage for your files.

You can use it for authenticating users as we mentioned above. Also, you can store DNS records in the LDAP server.

Another usage for LDAP, you can use it as a yellow pages directory service for an organization to provide information about users or employees, departments, contact information, phone numbers, addresses, private data, or whatever.

LDAP server implementations

LDAP is an open standard protocol that many companies make their implementation of the protocol.

There are commercial implementations of LDAP like:

  • Microsoft Active Directory.
  • Oracle Internet Directory.
  • Oracle Unified Directory.
  • IBM Security Directory Server.
  • UnboundID Directory Server.
  • NetIQ eDirectory or eDirectory.
  • CA Directory or CA eTrust Directory.

And free open source implementations like:

  • OpenLDAP.
  • ForgeRock OpenDJ.
  • Apache DS.
  • 389 Directory Server.

In this post, we will use OpenLDAP, which is very common and loved by the community.

OpenLDAP is the open-source implementation of LDAP that runs on Linux/UNIX systems.

Installing OpenLDAP

To install OpenLDAP, you have to install openldap, openldap-servers, and openldap-clients packages.

$ yum -y install openldap openldap-servers openldap-clients

Or, if you are using CentOS 7, you can use dnf or Dandified Yum.

$ dnf -y install openldap openldap-servers openldap-clients

If you are using a Debian based system like Ubuntu, you can install it like this:

$ sudo apt-get install slapd

$ sudo apt-get install ldap-utils

Then we can enable the service to run automatically at startup:

$ systemctl enable slapd

Configuring LDAP

After successful installation, you need to make a password for the admin user using the ldappasswd command:

$ ldappasswd

The configuration files for OpenLDAP are in /etc/openldap/slapd.d directory.

You can modify these files directly or use the ldapmodify command. It is strongly recommended to modify OpenLDAP using the ldapmodify command.

LDAP terminology

If we are going to deal with LDAP protocol, there are some terms that we need to know because we will use them a lot.

Entry (or object): every unit in LDAP considered an entry.

dn: the entry name.

o: Organization Name.

dc: Domain Component. For example, you can write likegeeks.com like this dc=likegeeks,dc=com.

cn: Common Name like the person name or name of some object.

Modifying entries

OpenLDAP stores its information in bdb or hdb files. You can find the hdb file in:

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

file.

To identify an element, use the dn (distinguished name) attribute. So the first line in our LDIF file will be:

dn: olcDatabase={2}hdb,cn=config

Then we specify if we want to add or modify

changeType: modify

We also must clarify if we’ll replace it or delete it

replace: olcSuffix

And, finally, we type the new value of the changed attribute.

olcSuffix: dc=likegeeks,dc=local

Back to our file. Change the following entries like this:

olcSuffix: dc=my-domain,dc=com

olcRootDN: cn=Manager,dc=my-domain,dc=com

So our LDIF file will be like this:

dn: olcDatabase={2}hdb,cn=config
changeType: modify
replace: olcSuffix
olcSuffix: dc=likegeeks,dc=local
-
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=local

In our file

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif

file. The dn attribute is dn:

olcDatabase={2}hdb, and because the file is inside the config folder, so the full dn attribute is dn:

olcDatabase={2}hdb,cn=config

Then we save our file and use ldapmodify:

$ ldapmodify -Y EXTERNAL -H ldapi:/// -f myfile.ldif

You can use the ldapsearch command to check the changes:

$ ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase=\*

And yes, the data has been changed.

Also, you can use the slaptest command to check the configuration.

$ slaptest -u

Adding entries

To add entries, use the ldapadd command.

First, we create our ldif file:

dn: dc=likegeeks,dc=local
objectClass: dcObject
objectClass: organization
dc: likegeeks
o: likegeeks

We specify a series of attributes, like domain component ( dc ), distinguished name ( dn ), and organization ( o ).

According to the type of the object we are creating, which is dcObject in our case, some attributes are required, others are optional.

You check the schema according to your system.

On CentOS 6, you can go to

/etc/openldap/slapd.d/cn=config/cn=schema

On CentOS 7, you can go to

/etc/openldap/schema

Or you can use grep command to get the .schema files from your system.

The object organization in our example is in

core.schema

file on CentOS 7.

As we can see, the only required attribute is o which is the organization.

Now we can use the ldapadd command to add our object:

$ ldapadd -f myobj.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

We specify the filename using -f, the admin user using -D, and the password using -w.

To search for an entry, you can use the ldapsearch command:

$ ldapsearch -x -b dc=likegeeks,dc=local

Adding organizational units

You can add an organizational unit (ou). First, create a new LDIF file. Let’s name it users.ldif, and put this:

dn: ou=users,dc=likegeeks,dc=local
objectClass: organizationalUnit
ou: users

Then we use ldapadd to add the unit:

$ ldapadd -f users.ldif -D cn=admin,dc=likegeeks,dc=local -w mypass

This organizational unit holds all LDAP users.

Adding users

We can add users to the newly created organizational unit.

First, we create our ldif file:

dn: cn=adam,ou=users,dc=likegeeks,dc=local
cn: adam
sn: USA
objectClass: myorg
userPassword: mypass
uid: adam

Then add the user using ldapadd command:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local 2 -w mypass

Adding groups

Also, we create the ldif file first:

dn: cn=developers,ou=users,dc=likegeeks,dc=local
cn: developers
objectClass: groupOfNames
member: cn=adam,ou=users,dc=likegeeks,dc=local

Then run ldapadd to add the group:

$ ldapadd -f groups.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

Deleting entries

Deleting an entry is very easy, just use ldapdelete command with the cn you want:

$ ldapdelete "cn=adam,ou=users,dc=likegeeks,dc=local" -D cn=admin,dc=likegeeks,dc=local -w mypass

You can check if the entry is deleted using ldapsearch:

$ ldapsearch -x -b "dc=likegeeks,dc=local"

LDAP port

LDAP port is 389, and in case you secure your LDAP using TLS, the port will be 636.

You can ensure what port your OpenLDAP is running using the netstat command.

$ netstat -ntlp | grep slapd

Authenticating users with LDAP

By default, Linux authenticates users using /etc/passwd file. Now we will see how to authenticate users using OpenLDAP.

Make sure you allow the OpenLDAP ports (389, 636) on your system.

If you are using the iptables firewall, I recommend you review the iptables post to understand these commands Linux iptables firewall.

$ authconfig --enableldap --enableldapauth --ldapserver ver=192.168.1.10 --ldapbasedn="dc=likegeeks,dc=local" --enableldaptls --update

Now the certificates are in /etc/openldap/cacerts.

When we create a user, you have to define some needed fields.

If you want to create a user adam, you will create adam.ldif file and write the following:

dn: uid=adam,ou=users,dc=likegeeks,dc=local
uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: mypass
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

If you are using CentOS 7 you should encrypt passwords using slappasswd command before putting it in your LDIF file like this:

$ slappasswd

Then we copy the encrypted password on the ldif file, so the file will be like this:

uid: adam
cn: adam
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: {SSHA}sathXSo3XTWrbi20Fp+MsqJHjXkHGhT/
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 1000
homeDirectory: /home/adam

Now we can use ldapadd to add the user:

$ ldapadd -f adam.ldif -x -D cn=admin,dc=likegeeks,dc=local -w mypass

Using LDAP web interface (phpldapadmin)

It might be a little tricky for a beginner to work from a terminal. However, there is a web-based tool called phpldapadmin, which is written in PHP to simplify working with OpenLDAP.

You can install it like this:

$ yum -y install phpldapadmin

The above command will install the Apache web server, so you don’t need to install it.

Now you need to configure phpldapadmin.

Edit this file:

/etc/phpldapadmin/config.php

And change this line:

$servers->setValue('server','host','PUT YOUR SERVER IP OR DOMAIN HERE');

If you want to use likegeeks.local as a domain you should write it like this:

$servers->setValue('server','base',array('dc=likegeeks,dc=local'));

Also, you need to change the line of bind_id like this:

$servers->setValue('login','bind_id','cn=admin,dc= likegeeks,dc=local');

And don’t forget to put your apache alias:

<IfModule mod_alias.c>
    Alias /ldap /usr/share/phpldapadmin/htdocs
</IfModule>

Now you can access your phpldapadmin like this:

http://server_domain_name_or_IP/ldap

in my example, I will use:

http://likegees.local/ldap

On login DN field you will use something like the following:

cn=admin,dc=likegeeks,dc=local

You can do all we’ve done in this web interface, adding users, organizations, and groups.

I hope you find the tutorial useful and easy. We can’t cover all LDAP server uses in one post, but this was a brief look into LDAP protocol and how to use it.

Thank you.

Original article source at: https://likegeeks.com/

#linux #install #configure 

How to Install and Configure Linux LDAP Server
Phung Dang

Phung Dang

1679064000

Sức mạnh của trò chuyện Chatgpt với AI và hình ảnh

Trong hướng dẫn ChatGPT này, chúng ta sẽ tìm hiểu về Sức mạnh của ChatGPT trực quan : Trò chuyện với AI và Hình ảnh!

Gần đây, Mô hình ngôn ngữ lớn (LLM) đã có những tiến bộ vượt bậc. Một trong những bước đột phá đáng chú ý nhất là ChatGPT, được thiết kế để tương tác với người dùng thông qua các cuộc hội thoại, duy trì ngữ cảnh, xử lý các câu hỏi tiếp theo và tự sửa lỗi. Tuy nhiên, ChatGPT bị hạn chế trong việc xử lý thông tin hình ảnh vì nó được đào tạo với một phương thức ngôn ngữ duy nhất.

Visual Foundation Models đã cho thấy tiềm năng trong thị giác máy tính với khả năng hiểu và tạo ra những hình ảnh phức tạp. Nó được xây dựng dựa trên ChatGPT và kết hợp các Mô hình Visual Foundation để thu hẹp khoảng cách này. Trình quản lý Prompt được đề xuất để hỗ trợ tích hợp này, thông báo rõ ràng cho ChatGPT về từng khả năng của VFM, chỉ định định dạng đầu vào-đầu ra, chuyển đổi thông tin trực quan sang định dạng ngôn ngữ và xử lý lịch sử, mức độ ưu tiên và xung đột của Mô hình Visual Foundation. Sử dụng Trình quản lý nhắc nhở, ChatGPT có thể tận dụng các Mô hình Visual Foundation lặp đi lặp lại cho đến khi nó đáp ứng các yêu cầu của người dùng hoặc đạt đến điều kiện kết thúc.

Ví dụ: người dùng tải lên hình ảnh một bông hoa màu đỏ và yêu cầu một bông hoa màu xanh, dựa trên độ sâu dự đoán, được dựng thành phim hoạt hình. Trò chuyện Trực quanGPT áp dụng các Mô hình Nền tảng Trực quan có liên quan, chẳng hạn như ước tính độ sâu và mô hình độ sâu tới hình ảnh, để tạo đầu ra được yêu cầu.

Mục tiêu học tập

  1. Hiểu các khái niệm cơ bản về “Mô hình nền tảng trực quan” và tiềm năng của chúng trong thị giác máy tính.
  2. Tìm hiểu về các cấu phần và kiến ​​trúc hệ thống Visual ChatGPT.
  3. Hiểu cách hệ thống của nó hoạt động, bao gồm cách nó gọi lặp đi lặp lại các Mô hình Visual Foundation để cung cấp câu trả lời cho các truy vấn của người dùng.
  4. Tìm hiểu cách thiết lập môi trường Visual ChatGPT.
  5. Hiểu các ứng dụng tiềm năng của nó.
  6. Hiểu những hạn chế của hệ thống Visual ChatGPT.

Trò chuyện trực quanGPT: Kiến trúc hệ thống

Văn bản mô tả cách Visual ChatGPT hoạt động để tạo phản hồi cho các truy vấn của người dùng. Hệ thống bao gồm một loạt các Mô hình Nền tảng Trực quan và các đầu ra trung gian từ các mô hình đó để có được phản hồi cuối cùng.

1. Thành phần

  • Nguyên tắc hệ thống: Nguyên tắc hệ thống cung cấp các quy tắc cơ bản cho Visual ChatGPT.
  • Mô hình nền tảng trực quan: Nó là sự kết hợp của nhiều Mô hình nền tảng trực quan khác nhau, trong đó mỗi mô hình nền tảng chứa một chức năng xác định với các đầu vào và đầu ra rõ ràng.
  • Lịch sử đối thoại: Theo dõi cuộc trò chuyện từ thời điểm tương tác đầu tiên với hệ thống hoặc yêu cầu đối với nó.
  • Truy vấn người dùng: những gì người dùng muốn làm có thể được truy vấn dưới dạng truy vấn người dùng.
  • Lịch sử suy luận: Được sử dụng để giải quyết các câu hỏi phức tạp với sự cộng tác của nhiều Mô hình Nền tảng Trực quan. Tất cả lịch sử lập luận trước đó từ nhiều Mô hình Nền tảng Trực quan được kết hợp cho một vòng hội thoại nhất định.
  • Câu trả lời trung gian: Nó cố gắng đạt được câu trả lời cuối cùng cho một truy vấn phức tạp bằng cách gọi dần dần các Mô hình nền tảng trực quan khác nhau theo cách hợp lý, dẫn đến một số câu trả lời trung gian.
  • Trình quản lý lời nhắc: Trình quản lý lời nhắc chuyển đổi tất cả tín hiệu hình ảnh thành ngôn ngữ để mô hình ChatGPT có thể hiểu chúng. Văn bản cung cấp định nghĩa chính thức về Visual ChatGPT, bao gồm các quy tắc cơ bản và các thành phần khác nhau có liên quan. Tổng quan về nó. Phía bên trái hiển thị một cuộc đối thoại ba vòng. Phần giữa của hình cho thấy cách nó liên tục gọi các Mô hình Nền tảng Trực quan và cung cấp câu trả lời. Phía bên phải của hình hiển thị quy trình của QA thứ hai.

2. Tổng quan

"Trò chuyện trực quanGPT

Văn bản cung cấp định nghĩa chính thức về Visual ChatGPT, bao gồm các quy tắc cơ bản và các thành phần khác nhau có liên quan. Trung tâm hiển thị lưu đồ về cách nó gọi lặp đi lặp lại các Mô hình Nền tảng Trực quan và cung cấp các câu trả lời. Phía bên trái hiển thị tương tác ba vòng. Phía bên phải hiển thị quy trình kỹ lưỡng của QA thứ hai.

3. Tổng quan về Prompt Manager

"quản lý nhanh chóng

Làm cách nào để thiết lập Visual ChatGPT?

"trò chuyện trực quanGPT

lệnh

# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirement.txt
# download the visual foundation models
bash download.sh
# prepare your private openAI private key
export OPENAI_API_KEY={Your_Private_Openai_Key}
# create a folder to save images
mkdir ./image
#install pytorch with pip or conda command based on your CUDA version. For example
# below command is for the CUDA version 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# Start Visual ChatGPT !
python visual_chatgpt.py

Demo
Đây là URL cho Demo.

Các ứng dụng của Visual ChatGPT

Trò chuyện bằng hình ảnhGPT có thể thực hiện nhiều tác vụ Thị giác máy tính và xử lý trước hình ảnh giống như các tác vụ bên dưới bằng cách sử dụng văn bản.

  • Tạo hình ảnh tổng hợp: Người dùng có thể yêu cầu nó tạo bất kỳ hình ảnh nào với mô tả của nó. Visual ChatGPT sẽ tạo ra tương tự trong vòng vài giây, tùy thuộc vào khả năng tính toán của máy mà nó đang chạy. Tạo hình ảnh phụ trợ của nó dựa trên Khuếch tán ổn định, đây là một khung nguồn mở được đào tạo để tạo hình ảnh từ văn bản.
  • Thay đổi nền của hình ảnh: Có thể là in-paint hoặc out-paint, giống như độ khuếch tán ổn định. Người dùng có thể yêu cầu chatbot thay đổi, chỉnh sửa nền của hình ảnh với bất kỳ mô tả nào. Một mô hình khuếch tán ổn định sẽ vẽ nền ở phần phụ trợ theo mô tả văn bản.
  • Phát hiện cạnh trên hình ảnh: Người dùng có thể yêu cầu nó đánh dấu các cạnh của bất kỳ hình ảnh nào ở định dạng thang độ xám hoặc các định dạng khác. Visual ChatGPT sẽ sử dụng kết hợp các mô hình được đào tạo trước và OpenCV ở phần phụ trợ để làm nổi bật các cạnh của hình ảnh. Điều này hữu ích trong nhiều tình huống, chẳng hạn như sử dụng hình ảnh cạnh và hình ảnh gốc làm đầu vào kết hợp để huấn luyện các mô hình như GAN có điều kiện .
  • Thay thế hoặc loại bỏ các đối tượng trong ảnh: Người dùng có thể chỉnh sửa, loại bỏ hoặc sửa đổi bất kỳ phần hoặc đối tượng nào trong ảnh chỉ bằng một mô tả văn bản đơn giản. Ví dụ: người dùng có thể yêu cầu chatbot thay đổi khuôn mặt của một con mèo thành khuôn mặt của một con chó và Visual ChatGPT sẽ có thể tạo ra điều tương tự. Tính năng này đòi hỏi nhiều sức mạnh tính toán hơn.

Hạn chế

Mặc dù Visual ChatGPT là một phương pháp hứa hẹn cho giao tiếp đa phương thức, nhưng nó có một số nhược điểm.

  • Chủ yếu dựa vào các Mô hình ChatGPT và Visual Foundation, vì vậy độ chính xác và hiệu quả của các mô hình này ảnh hưởng đến hiệu suất của nó.
  • Yêu cầu một số lượng đáng kể kỹ thuật nhanh chóng, có thể tốn thời gian và yêu cầu thị giác máy tính và trình độ xử lý ngôn ngữ tự nhiên.
  • Trò chuyện trực quanGPT có thể gọi nhiều Mô hình nền tảng trực quan khi xử lý các tác vụ cụ thể, điều này có thể dẫn đến khả năng thời gian thực bị hạn chế so với các mô hình chuyên gia được đào tạo cụ thể.
  • Khả năng cắm và rút phích cắm dễ dàng của các mô hình nền tảng có thể gây lo ngại về bảo mật và quyền riêng tư, vì vậy cần cân nhắc cẩn thận và kiểm tra tự động để đảm bảo rằng dữ liệu nhạy cảm không bị lộ hoặc bị xâm phạm.

"Trò chuyệnGPT

Phần kết luận

Visual ChatGPT, một hệ thống mở, cho phép người dùng tương tác với ChatGPT ngoài định dạng ngôn ngữ bằng cách kết hợp các Mô hình Visual Foundation khác nhau. Để đạt được điều này, một loạt lời nhắc được thiết kế để giúp ChatGPT hiểu thông tin hình ảnh và giải quyết từng bước các câu hỏi hình ảnh phức tạp. Tiềm năng và năng lực của hệ thống được thể hiện thông qua các thí nghiệm và trường hợp chọn lọc. Tuy nhiên, có những lo ngại về kết quả không đạt yêu cầu do lỗi Mô hình Visual Foundation và sự mất ổn định nhanh chóng. Một mô-đun tự sửa lỗi là cần thiết để kiểm tra tính nhất quán giữa kết quả thực hiện và ý định của con người và thực hiện các chỉnh sửa tương ứng. Hành vi này làm tăng thời gian suy luận của mô hình nhưng dẫn đến suy nghĩ phức tạp hơn. Công việc trong tương lai sẽ giải quyết vấn đề này.

Chìa khóa rút ra

  • Visual ChatGPT là một hệ thống kết hợp Visual Foundation Models vào ChatGPT để cho phép nó xử lý thông tin trực quan.
  • Trình quản lý Prompt là thành phần chính của hệ thống này và nó thông báo cho ChatGPT về các khả năng, định dạng đầu vào-đầu ra và lịch sử của từng Mô hình Visual Foundation.
  • Visual ChatGPT cho phép người dùng thực hiện các tác vụ thị giác máy tính khác nhau và xử lý trước hình ảnh bằng cách sử dụng lệnh văn bản hoặc giọng nói, bao gồm tạo hình ảnh tổng hợp, sửa đổi nền, phát hiện cạnh và thay thế hoặc xóa đối tượng.
  • Hệ thống cung cấp một cái nhìn tổng quan chi tiết về các thành phần và kiến ​​trúc của nó và hướng dẫn để thiết lập nó.

Nguồn bài viết gốc tại: https://www.analyticsvidhya.com

#artificial-intelligence  #chatgpt 

Sức mạnh của trò chuyện Chatgpt với AI và hình ảnh

The Power of Visual ChatGPT with AI and Images

In this ChatGPT tutorial, we will learn about Power of Visual ChatGPT : Conversations with AI and Images!

Recently, Large Language Models (LLMs) have made great advancements. One of the most notable breakthroughs is ChatGPT, which is designed to interact with users through conversations, maintain the context, handle follow-up questions, and correct itself. However, ChatGPT is limited in processing visual information since it’s trained with a single language modality.

Visual Foundation Models have shown potential in computer vision with their ability to understand and generate complex images. It is built based on ChatGPT and incorporates Visual Foundation Models to bridge this gap. A Prompt Manager is proposed to support this integration, clearly informing ChatGPT of each VFM’s ability, specifying input-output formats, converting visual information to language format, and handling Visual Foundation Model histories, priorities, and conflicts. Using the Prompt Manager, ChatGPT can leverage Visual Foundation Models iteratively until it meets user requirements or reaches the ending condition.

For example, a user uploads an image of a red flower and requests a blue flower, based on predicted depth, made into a cartoon. Visual ChatGPT applies related Visual Foundation Models, such as depth estimation and depth-to-image models, to generate the requested output.

Learning Objectives

  1. Understand the foundational concepts of “Visual Foundation Models” and their potential in computer vision.
  2. Learn about the Visual ChatGPT system architecture and components.
  3. Understand how its system works, including how it iteratively invokes Visual Foundation Models to provide answers to user queries.
  4. Learn how to set up the Visual ChatGPT environment.
  5. Understand its potential applications.
  6. Understand the limitations of the Visual ChatGPT system.

The Visual ChatGPT: System Architecture

The text describes how Visual ChatGPT works to generate responses to user queries. The system involves a series of Visual Foundation Models and intermediate outputs from those models to get the final response.

1. Components

  • System principle: The System Principle provides the basic rules for Visual ChatGPT.
  • Visual Foundation Model: It is the combination of various Visual Foundation Models, where each foundation model contains a determined function with explicit inputs and outputs.
  • History of Dialogue: Following the conversation from the point of the first interaction with the system or a request for it.
  • User query: what the user wants to do can be queried in the form of a user query.
  • History of Reasoning: Used to solve complex questions with the collaboration of multiple Visual Foundation Models. All previous reasoning histories from multiple Visual Foundation Models are combined for a certain conversation round.
  • Intermediate Answer: It attempts to obtain the final answer to a complex query by gradually invoking various Visual Foundation Models in a logical manner, resulting in several intermediate answers.
  • Prompt Manager: The Prompt Manager converts all visual signals into language so that the ChatGPT model can understand them. The text provides a formal definition of Visual ChatGPT, including its basic rules and the different components involved. Overview of it. The left side shows a three-round dialogue. The figure’s middle parts show how it continuously invokes Visual Foundation Models and provides answers. The right side of the figure shows the process of the second QA.

2. Overview

"Visual ChatGPT

The text provides a formal definition of Visual ChatGPT, including its basic rules and the different components involved. The center displays the flowchart of how it iteratively invoke Visual Foundation Models and provides replies. The left side displays a three-round interaction. The right side displays the second QA’s thorough process.

3. Overview of the Prompt Manager

"prompt manager

How to Setup Visual ChatGPT?

"visual chatGPT

Commands

# create a new environment
conda create -n visgpt python=3.8
# activate the new environment
conda activate visgpt
# prepare the basic environments
pip install -r requirement.txt
# download the visual foundation models
bash download.sh
# prepare your private openAI private key
export OPENAI_API_KEY={Your_Private_Openai_Key}
# create a folder to save images
mkdir ./image
#install pytorch with pip or conda command based on your CUDA version. For example
# below command is for the CUDA version 11.7
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
# Start Visual ChatGPT !
python visual_chatgpt.py

Demo
Here is the URL for the Demo.

Applications of Visual ChatGPT

Visual ChatGPT can perform a variety of Computer vision tasks and image pre-processing like the ones below using text.

  • Synthetic Image Generation: The user can ask it to generate any image with its description. Visual ChatGPT will generate the same within seconds, depending on the computing power of the machine it’s running on. Its backend Image Generation is based on Stable Diffusion, which is an open-source framework trained to generate images from text.
  • Changing the image’s background: It can be in-paint or out-paint, just like stable diffusion. The user can ask the chatbot to change or edit the background of the image with any description. A stable diffusion model will inpaint the background at the backend as per the text description.
  • Edge detection on the images: A user can ask it to highlight the edges of any image in grayscale or other formats. Visual ChatGPT will utilize a combination of its pretrained models and OpenCV at the backend to highlight the edges of the image. This is helpful in many scenarios, like using edge images and original images as combined input to train models like conditional GANs.
  • Replacing or removing the objects in an image: The user can edit, remove, or modify any part or object in the image with just a simple text description. For example, a user can ask the chatbot to change a cat’s face to that of a dog, and Visual ChatGPT will be able to create the same. This feature requires more computing power.

Limitations

Although Visual ChatGPT is a promising method for multi-modal communication, it has a number of drawbacks.

  • Heavily relies on ChatGPT and Visual Foundation Models, so the accuracy and effectiveness of these models influence its performance.
  • Requires a substantial amount of prompt engineering, which can be time-consuming and requires computer vision and natural language processing proficiency.
  • Visual ChatGPT may invoke multiple Visual Foundation Models when handling specific tasks, which can result in limited real-time capabilities compared to expert models specifically trained.
  • The ability to easily plug and unplug foundation models may raise security and privacy concerns, so careful consideration and automatic checks are necessary to ensure that sensitive data is not exposed or compromised.

"ChatGPT

Conclusion

Visual ChatGPT, an open system, allows users to interact with ChatGPT beyond the language format by incorporating different Visual Foundation Models. To achieve this, a series of prompts are designed to help ChatGPT understand visual information and solve complex visual questions step-by-step. The system’s potential and competence are demonstrated through experiments and selected cases. However, there are concerns regarding unsatisfactory results due to Visual Foundation Model failures and prompt instability. A self-correction module is necessary to check the consistency between execution results and human intentions and make corresponding edits. This behavior increases the model’s inference time but leads to more complex thinking. Future work will address this issue.

Key Takeaways

  • Visual ChatGPT is a system that incorporates Visual Foundation Models into ChatGPT to enable it to process visual information.
  • The Prompt Manager is a key component of this system, and it informs ChatGPT about each Visual Foundation Model’s capabilities, input-output formats, and histories.
  • Visual ChatGPT allows users to perform various computer vision tasks and image pre-processing using text or voice commands, including synthetic image generation, background modification, edge detection, and object replacement or removal.
  • The system provides a detailed overview of its components and architecture and instructions for setting it up.

Original article source at: https://www.analyticsvidhya.com

#ai #chatgpt 

The Power of Visual ChatGPT with AI and Images

Как установить, настроить и защитить FTP-сервер в Linux

FTP или протокол передачи файлов — широко используемый протокол для передачи файлов между компьютерами; один действует как клиент, другой действует как сервер. В этом посте мы поговорим о FTP-сервере в системах Linux, в частности, об очень безопасном FTP-демоне (vsftpd).

Программа vsftpd — это очень популярный FTP-сервер, который сегодня используют многие серверы.

Как работает FTP-сервер?

FTP-сервер работает с архитектурой клиент-сервер для связи и передачи файлов.

FTP — это протокол с отслеживанием состояния, что означает, что соединения между клиентами и серверами остаются открытыми во время сеанса FTP.

Чтобы отправлять или получать файлы с FTP-сервера, вы можете использовать FTP-команды; эти команды выполняются последовательно. Это как очередь, один за другим.

Существует два типа FTP-соединений, которые вы можете инициировать:

  • Управляющее соединение также называется командным соединением.
  • Подключение для передачи данных.

Когда вы устанавливаете FTP-соединение, TCP-порт 21 открывается для отправки ваших учетных данных для входа; это соединение называется управляющим соединением .

Когда вы передаете файл, начинается подключение для передачи данных .

Существует два типа подключения для передачи данных:

  • Пассивный режим.
  • Активный режим.

Активные соединения инициируются удаленным сервером, а клиент ожидает запросов сервера.

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

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

Активный режим

Клиент подключается со случайного эфемерного исходного порта к управляющему порту FTP 21 .

Вы можете проверить свой эфемерный диапазон портов с помощью этой команды:

$ cat /proc/sys/net/ipv4/ip_local_port_range

Когда вам нужно передать файл, удаленный FTP-сервер откроет порт 20 для подключения к FTP-клиенту.

Соединения в активном режиме обычно имеют проблемы с брандмауэрами, TCP- порты 20 и 21 должны быть открыты на вашем брандмауэре.

Из-за этих проблем с брандмауэрами активного режима мы можем использовать пассивный режим.

Если вы используете брандмауэр iptables, я рекомендую вам просмотреть брандмауэр Linux iptables  , чтобы узнать, как разрешать определенные порты.

Пассивный режим

В пассивном режиме клиент запускает управляющее соединение со случайного порта на порт назначения  21 на удаленном сервере.

Если FTP-клиент запрашивает файл, он выдает команду PASV FTP. Сервер откроет случайный порт и передаст этот номер порта клиенту.

Вот почему FTP является протоколом, требующим подключения, потому что каждый раз, когда вы устанавливаете соединение для передачи данных (например, передаете файл), сервер выполняет описанный выше процесс, и это делается со всеми клиентами, подключенными к серверу.

В пассивном режиме соединение для управления и передачи данных запускается FTP-клиентом.

Возможности FTP-сервера vsftpd

Для вас доступно несколько FTP-серверов, коммерческих и с открытым исходным кодом.

Vsftpd имеет некоторые функции безопасности, которые делают его на вершине, например:

  • Может работать как обычный пользователь с разделением привилегий.
  • Поддерживает FTP-соединения SSL/TLS.
  • Может заключать пользователей в их домашние каталоги.

Настройка FTP-сервера

В любом случае, некоторые дистрибутивы Linux поставляются с vsftpd, если вы хотите установить его в системах на основе Red Hat, вы можете использовать следующую команду:

$ sudo dnf -y vsftpd

В дистрибутивах на основе Debian, таких как Ubuntu, вы можете установить его следующим образом:

$ sudo apt-get install vsftpd

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

$ systemctl start vsftpd
$ systemctl enable vsftpd

Файл конфигурации для FTP-сервера vsftpd:

/etc/vsftpd.conf

.

На самом деле FTP-сервер в Linux — один из самых простых серверов, с которыми вы можете работать.

Существует два типа доступа к FTP-серверу:

  • Анонимный FTP-доступ : любой может войти в систему с анонимным именем пользователя без пароля.
  • Логин локального пользователя : всем действительным пользователям в /etc/passwd разрешен доступ к FTP-серверу.

Вы можете разрешить анонимный доступ к FTP-серверу из конфигурации в /etc/vsftpd/vsftpd.conf ,  включив анонимный_enable=YES, если он не включен, и перезагрузите службу.

Теперь вы можете попробовать подключиться к FTP-серверу с помощью любого FTP-клиента. Я буду использовать простую команду FTP.

Вы можете установить его, если его нет в вашей системе:

$ dnf -y install ftp

Теперь вы можете получить доступ к своему FTP-серверу следующим образом:

$ ftp localhost

Затем введите анонимное имя пользователя и без пароля, просто нажмите Enter.

Вы увидите приглашение FTP.

ftp>

И теперь вы можете ввести любую FTP-команду для взаимодействия с FTP-сервером.

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

Поскольку в настройках есть опция, разрешающая локальным пользователям доступ к FTP-серверу local_enable =YES , теперь давайте попробуем получить доступ к FTP-серверу, используя локального пользователя:

$ ftp localhost

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

Настройте FTP-сервер только как анонимный

Этот тип FTP-сервера полезен, если ваши файлы должны быть доступны для пользователей без каких-либо паролей или логинов.

Вам нужно настроить vsftpd, чтобы разрешить только анонимным пользователям.

Откройте файл /etc/vsftpd/vsftpd.conf и измените следующие параметры на соответствующие значения.

listen=NO
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
write_enable=NO

Затем нам нужно создать непривилегированную системную учетную запись, чтобы использовать ее для анонимного доступа по FTP.

$ useradd -c " FTP User" -d /var/ftp -r -s /sbin/nologin ftp

Этот пользователь не имеет привилегий в системе, поэтому безопаснее использовать его при доступе к FTP-серверу.

Не забудьте перезапустить FTP-сервер после изменения файла конфигурации.

Вы можете получить доступ к FTP-серверу из браузера, просто набрав ftp://youdomain/.

Безопасность FTP-сервера

Мы можем настроить vsftpd для использования TLS, чтобы файлы, передаваемые по сети, были более безопасными.

Сначала мы генерируем запрос сертификата с помощью команды openssl:

$ openssl genrsa -des3 -out FTP.key

Затем мы генерируем запрос сертификата:

$ openssl req -new -key FTP.key -out certificate.csr

Теперь снимаем пароль с файла ключа:

$ cp FTP.key FTP.key.orig

$ openssl rsa -in FTP.key.orig -out ftp.key

Наконец, мы генерируем наш сертификат:

$ openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -out mycertificate.crt

Теперь копируем файл сертификата и ключ в /etc/pki/tls/certs:

$ cp ftp.key /etc/pki/tls/certs/

$ cp mycertificate.crt /etc/pki/tls/certs

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

Откройте файл /etc/vsftpd/vsftpd.conf и добавьте следующие строки :

ssl_enable=YES
allow_anon_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt
rsa_private_key_file=/etc/pki/tls/certs/ftp.key
ssl_ciphers=HIGH
require_ssl_reuse=NO

Перезапустите службу, чтобы отразить эти изменения. Вот и все.

Попробуйте подключиться к вашему FTP-серверу с любого клиента в любой системе, такой как Windows, и выберите защищенное соединение или FTPS, и вы успешно увидите свои папки.

SFTP против FTPS

В последнем примере мы видели FTP поверх уровня SSL (FTPS) и успешно подключились к FTP-серверу. Однако с жестко защищенным брандмауэром трудно управлять этим типом соединения, поскольку FTPS использует несколько номеров портов.

Лучшим решением в этом случае является использование SFTP (FTP через SSH). SFTP  использует только порт 22.

FTP-сервер будет использовать этот порт для всех подключений во время сеансов FTP.

Если вы используете брандмауэр, вам следует выбрать SFTP, так как ему нужен только один порт.

Заключение FTP-пользователей

Вы можете защитить свой FTP-сервер, заключив в тюрьму своих FTP-пользователей в их домашних каталогах и разрешив доступ к сервису только определенным пользователям.

Откройте /etc/vsftpd/vsftpd.conf и раскомментируйте следующие параметры:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

Файл  /etc/vsftpd.chroot_list содержит список пользователей, находящихся в тюрьме, по одному в каждой строке.

Сохраните файлы и перезапустите службу.

$ systemctl restart vsftpd

Команды FTP-сервера Linux

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

Первая команда — это команда pwd, вы можете использовать ее для печати текущего рабочего каталога:

ftp> pwd

Вы можете получить список файлов с помощью команды ls:

ftp> ls

Кроме того, вы можете использовать команду cd для изменения рабочего каталога:

ftp> cd /

Если вы хотите выйти из сеанса FTP, используйте команду bye:

ftp> bye

Мы используем команду lcd для отображения локальной папки, а не папки FTP:

ftp> lcd

Вы можете изменить локальный каталог с помощью команды lcd:

ftp> lcd /home

Вы можете скачать файл с помощью команды get:

ftp> get myfile

Кроме того, вы можете загрузить несколько файлов с помощью команды mget:

ftp> mget file1 file2

Используйте команду удаления, чтобы удалить файл с сервера:

ftp> delete filename

Используйте команду put для загрузки файла на сервер:

ftp> put filename

Чтобы загрузить несколько файлов, используйте команду mput:

ftp> mput file1 file2

Вы можете создать каталог с помощью команды mkdir:

ftp> mkdir dirName

Или вы можете удалить каталог с сервера с помощью команды rmdir.

ftp> rmdir dirName

Существует два режима передачи файлов при использовании FTP-сервера, режим ASCII и двоичный режим , вы можете изменить режим следующим образом:

ftp> binary

ftp> ascii

FTP-сервер — один из самых простых серверов в Linux для настройки и работы.

Надеюсь, вы найдете пост полезным и интересным. Продолжают возвращаться.

Спасибо.

Оригинальный источник статьи:   https://likegeeks.com/

#linux #install #configure #ftp #server 

Как установить, настроить и защитить FTP-сервер в Linux
津田  淳

津田 淳

1678909740

如何在 Linux 中安装、配置和保护 FTP 服务器

FTP 或文件传输协议是用于在计算机之间传输文件的常用协议;一个充当客户端,另一个充当服务器。在这篇文章中,我们将讨论 Linux 系统中的 FTP 服务器,特别是 Very Secure FTP Daemon (vsftpd)。

vsftpd 程序是当今许多服务器使用的非常流行的 FTP 服务器。

FTP 服务器如何工作?

FTP 服务器采用客户端-服务器架构进行通信和传输文件。

FTP 是一种状态协议,这意味着客户端和服务器之间的连接在 FTP 会话期间保持打开状态。

要从 FTP 服务器发送或接收文件,可以使用 FTP 命令;这些命令是连续执行的。就像一个队列,一个接一个。

您可以启动两种类型的 FTP 连接:

  • 控制连接也称为命令连接。
  • 数据连接。

当您建立 FTP 连接时,TCP 端口 21 打开以发送您的登录凭据;此连接称为控制连接

传输文件时,数据连接开始。

有两种类型的数据连接:

  • 被动模式。
  • 主动模式。

活动连接由远程服务器发起,客户端等待服务器请求。

客户端向远程服务器发起被动连接,服务器等待请求。

当 FTP 客户端开始传输时,您的 FTP 客户端上有一个选项可以控制您是要使用主动还是被动 FTP 连接。

活动模式

客户端从一个随机的临时源端口连接到FTP 控制端口 21

您可以使用以下命令检查临时端口范围:

$ cat /proc/sys/net/ipv4/ip_local_port_range

当需要传输文件时,远程FTP服务器会打开20端口连接FTP客户端。

主动模式连接通常会遇到防火墙问题,TCP端口 20 和 21应该在您的防火墙上打开。

由于主动模式防火墙的这些问题,我们可以使用被动模式。

如果您使用的是 iptables 防火墙,我建议您查看Linux iptables 防火墙 以了解如何允许特定端口。

被动模式

在被动模式下,客户端启动从随机端口到远程服务器上的目标端口 21的控制连接。

如果 FTP 客户端请求文件,它将发出 PASV FTP 命令。服务器将打开一个随机端口并将此端口号提供给客户端。

这就是为什么 FTP 是一个需要连接的协议的原因,因为每次建立数据连接(如传输文件)时,服务器都会执行上述过程,并且所有客户端都连接到服务器。

在被动模式下,控制和数据连接由 FTP 客户端启动。

vsftpd FTP服务器功能

有几个 FTP 服务器可供您使用,商业的和开源的。

Vsftpd 具有一些安全功能,使其位于顶部,例如:

  • 可以作为具有特权分离的普通用户运行。
  • 支持 SSL/TLS FTP 连接。
  • 可以将用户监禁在他们的主目录中。

FTP服务器设置

一些 Linux 发行版附带了 vsftpd,无论如何,如果你想在基于 Red Hat 的系统上安装它,你可以使用以下命令:

$ sudo dnf -y vsftpd

在像 Ubuntu 这样基于 Debian 的发行版上,你可以像这样安装它:

$ sudo apt-get install vsftpd

安装包后,您可以运行该服务并使其在引导时运行。

$ systemctl start vsftpd
$ systemctl enable vsftpd

vsftpd FTP 服务器的配置文件是

/etc/vsftpd.conf

.

实际上,Linux 中的 FTP 服务器是您可以使用的最简单的服务器之一。

访问FTP服务器有两种方式:

  • 匿名 FTP 访问:任何人都可以使用用户名 anonymous 登录而无需密码。
  • 本地用户登录:允许 /etc/passwd 上的所有有效用户访问 FTP 服务器。

您可以允许从配置中匿名访问 FTP 服务器,在/etc/vsftpd/vsftpd.conf中 启用anonymous_enable=YES(如果未启用)并重新加载您的服务。

现在您可以尝试使用任何 FTP 客户端连接到 FTP 服务器。我将使用简单的 FTP 命令。

如果它不在您的系统上,您可以安装它:

$ dnf -y install ftp

现在您可以像这样访问您的 FTP 服务器:

$ ftp localhost

然后键入用户名 anonymous 并且没有密码,只需按回车键。

您将看到 FTP 提示符。

ftp>

现在,您可以键入任何 FTP 命令来与 FTP 服务器交互。

以本地用户身份连接

由于设置中有允许本地用户访问 FTP 服务器的选项 local_enable =YES,现在让我们尝试使用本地用户访问 FTP 服务器:

$ ftp localhost

然后输入您的本地用户名和该用户的密码,您将看到登录成功消息。

将 FTP 服务器设置为仅匿名

如果您的文件应该可供没有任何密码或登录名的用户使用,则这种 FTP 服务器很有用。

您需要将 vsftpd 配置为仅允许匿名用户。

打开/etc/vsftpd/vsftpd.conf文件,并将以下选项更改为相应的值。

listen=NO
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
write_enable=NO

然后我们需要创建一个非特权系统帐户以将其用于匿名 FTP 类型的访问。

$ useradd -c " FTP User" -d /var/ftp -r -s /sbin/nologin ftp

该用户在系统上没有权限,因此在访问 FTP 服务器时使用它更安全。

修改配置文件后不要忘记重启 FTP 服务器。

您可以从浏览器访问 FTP 服务器,只需键入 ftp://youdomain/。

FTP服务器安全

我们可以将 vsftpd 配置为使用 TLS,因此通过网络传输的文件更加安全。

首先,我们使用 openssl 命令生成证书请求:

$ openssl genrsa -des3 -out FTP.key

然后我们生成一个证书请求:

$ openssl req -new -key FTP.key -out certificate.csr

现在我们从密钥文件中删除密码:

$ cp FTP.key FTP.key.orig

$ openssl rsa -in FTP.key.orig -out ftp.key

最后,我们生成证书:

$ openssl x509 -req -days 365 -in certificate.csr -signkey ftp.key -out mycertificate.crt

现在我们将证书文件和密钥复制到 /etc/pki/tls/certs:

$ cp ftp.key /etc/pki/tls/certs/

$ cp mycertificate.crt /etc/pki/tls/certs

现在,我们需要做的就是配置 vsftpd 以支持安全连接。

打开/etc/vsftpd/vsftpd.conf文件并添加以下行

ssl_enable=YES
allow_anon_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/pki/tls/certs/mycertificate.crt
rsa_private_key_file=/etc/pki/tls/certs/ftp.key
ssl_ciphers=HIGH
require_ssl_reuse=NO

重新启动您的服务以反映这些更改。就是这样。

尝试从任何系统(如 Windows)上的任何客户端连接到您的 FTP 服务器,并选择安全连接或 FTPS,您将成功看到您的文件夹。

SFTP 与 FTPS

在上一个示例中,我们看到了 SSL 层上的 FTP (FTPS),并且我们已经成功连接到 FTP 服务器。但是,由于 FTPS 使用多个端口号,因此使用严格保护的防火墙很难管理这种连接。

在这种情况下,最好的解决方案是使用 SFTP(FTP over SSH)。SFTP 仅使用端口 22。

在 FTP 会话期间,FTP 服务器将使用此端口进行所有连接。

如果您使用防火墙,您应该选择 SFTP,因为它只需要一个端口。

监禁 FTP 用户

您可以通过将 FTP 用户关在他们的主目录中并只允许特定用户访问该服务来保护您的 FTP 服务器。

打开 /etc/vsftpd/vsftpd.conf 并取消注释以下选项:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

文件 /etc/vsftpd.chroot_list包含每行一个被监禁用户的列表。

保存文件并重新启动服务。

$ systemctl restart vsftpd

Linux FTP 服务器命令

您可以使用任何 GUI 客户端上传和下载文件,但您还需要了解一些 FTP 服务器命令。

第一个命令是 pwd 命令,你可以用它来打印当前工作目录:

ftp> pwd

您可以使用 ls 命令列出文件:

ftp> ls

另外,您可以使用 cd 命令更改工作目录:

ftp> cd /

如果要退出 FTP 会话,请使用 bye 命令:

ftp> bye

我们使用 lcd 命令来显示本地文件夹,而不是 FTP 文件夹:

ftp> lcd

您可以使用 lcd 命令更改本地目录:

ftp> lcd /home

您可以使用 get 命令下载文件:

ftp> get myfile

此外,您可以使用 mget 命令下载多个文件:

ftp> mget file1 file2

使用 delete 命令从服务器中删除一个文件:

ftp> delete filename

使用put命令上传文件到服务器:

ftp> put filename

要上传多个文件,请使用 mput 命令:

ftp> mput file1 file2

您可以使用 mkdir 命令创建一个目录:

ftp> mkdir dirName

或者您可以使用 rmdir 命令从服务器中删除一个目录。

ftp> rmdir dirName

使用FTP服务器传输文件有两种模式,ASCII模式二进制模式,你可以这样改变模式:

ftp> binary

ftp> ascii

FTP 服务器是 Linux 中最容易配置和使用的服务器之一。

我希望你觉得这篇文章有用且有趣。继续回来。

谢谢。

文章原文出处:https:   //likegeeks.com/

#linux #install #configure #ftp #server 

如何在 Linux 中安装、配置和保护 FTP 服务器