1680028080
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
This guide will help you set up the repository on your local machine. Please follow these steps carefully to ensure a smooth setup process.
Use the following command to clone the repository:
git clone https://github.com/ioanmo226/chatgpt-web-application
cd server # Navigate to the server directory:
npm install #install the backend dependencies
OPENAI_API_KEY=YOUR_OPENAI_API_KEY
node index.js
cd client
npm install
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/
npm start
If you wish to host both the backend and frontend on the same port/URL, follow these steps:
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.
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.
Author: ioanmo226
Source: https://github.com/ioanmo226/chatgpt-react-application
License: MIT license
1679550660
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.
$ 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
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
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
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).
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
.
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
XcodeInstall can also install Xcode's Command Line Tools by calling xcversion install-cli-tools
.
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
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 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.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)bundle exec rake spec
bundle exec rubocop -a
Author: xcpretty
Source Code: https://github.com/xcpretty/xcode-install
License: MIT license
1679397000
Мы используем сервер 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 на подчиненные серверы.
Типы серверов Linux NIS:
Вы можете иметь несколько вторичных серверов NIS, если они вам нужны.
Первичный и вторичный серверы NIS синхронизируются и обновляются. Этот процесс называется проталкиванием сервера .
Домены NIS аналогичны доменам контроллера домена в Windows, но разница в том, что клиент может присоединиться к сети, не дожидаясь согласия администратора.
Имейте в виду, что имена, используемые для доменных имен NIS, ДОЛЖНЫ отличаться от ваших доменных имен DNS.
В дистрибутивах на основе 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
Команда make отвечает за подготовку списка файлов, требующих компиляции, и необходимой программы для компиляции для каждого из них.
Команда make компилирует файл Makefile.
Использовать эту концепцию для работы с NIS несложно. В этом случае ряд текстовых файлов необходимо преобразовать в формат базы данных. Нам нужен инструмент, который будет повторно конвертировать любые файлы, которые были изменены. Мы можем использовать команду make.
Makefile находится в каталоге /var/yp. Этот файл содержит все общие файлы сервера NIS.
Давайте обсудим параметры в Makefile.
Если вы планируете использовать подчиненные NIS-серверы, вам нужно указать главному NIS-серверу Linux передать полученные карты на подчиненные серверы. Измените переменную NOPUSH на false , если вы хотите иметь поддержку подчиненных серверов.
NOPUSH=true
Имейте в виду, что вам нужно указать имена хостов подчиненных серверов в файле /var/yp/ypservers и обязательно указать соответствующую запись в файле /etc/hosts .
У каждого пользователя в 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, поэтому вам не нужно вводить полный путь.
Закончив редактирование опций в Makefile, вы можете инициализировать сервер NIS следующим образом:
$ /usr/lib64/yp/ypinit -m
Вы можете использовать параметр -m для инициализации сервера в качестве главного сервера.
Или, если вы используете 32-битную систему, команда будет такой:
$ /usr/lib/yp/ypinit
Этот инструмент спросит о вторичных серверах NIS, если они у вас есть.
Сервер сохранит эти записи в файле /var/yp/ypservers .
Поздравляем, теперь ваш сервер NIS должен работать нормально, и ваша карта будет на дополнительных серверах, если они у вас есть.
В дистрибутивах на основе Red Hat вы можете установить клиент NIS следующим образом:
$ dnf -y install ypbind
В дистрибутивах на основе Debian вы можете установить его следующим образом:
$ apt-get install nis
Файл /etc/yp.conf — это конфигурация демона на стороне клиента.
Вы можете запустить ypbind прямо сейчас:
$ systemctl start ypbind
$ systemctl enable ypbind
Этот файл содержит записи объектов и соответствующих им файлов и сервисов, которые система будет использовать для поиска.
passwd: files nis
Эта запись указывает серверу искать записи паролей в файле /etc/passwd и, если сервер NIS ничего не находит, проверять сервер NIS.
Есть несколько полезных инструментов, которые могут помочь вам управлять информацией в базе данных.
ypcat : вы можете использовать этот инструмент для получения данных с сервера NIS, извлекая их из карты NIS.
ypthat : получает имя NIS-сервера Linux, отвечающего на ваши запросы.
ypmatch : вместо того, чтобы захватывать всю карту, или вы можете искать по ключу, чтобы получить конкретную запись.
Оригинальный источник статьи: https://likegeeks.com/
1679393242
我们使用 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 服务器在 NIS 服务器的 /etc/passwd 表中搜索它。
您可以使用 NIS 服务器附带的任何服务和工具:
ypserv:此服务等待查询并向 NIS 客户端提供答复。
ypbind:这是 NIS 的客户端。
ypxfrd:您可以使用此服务将 NIS 数据库从主 MIS 服务器发送到从属服务器。
Linux NIS 服务器类型有:
如果需要,您可以拥有多个辅助 NIS 服务器。
主要和次要 NIS 服务器保持同步和更新。这个过程称为服务器推送。
NIS 域就像 Windows 中域控制器的域,但不同之处在于客户端无需等待管理员接受即可加入网络。
请记住,用于 NIS 域名的名称必须与您的 DNS 域名不同。
在基于 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 脚本之一来获得相同的结果。
正如我们前面提到的,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 中的选项。
如果您计划拥有 NIS 从属服务器,则需要告诉主 Linux NIS 服务器将生成的映射推送到从属服务器。如果您想支持从属服务器,请将NOPUSH变量更改为false 。
NOPUSH=true
请记住,您需要在/var/yp/ypservers文件中列出从属服务器的主机名,并确保在/etc/hosts文件中列出相应的条目。
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选项指定密码、组和影子文件的位置,因此您无需键入完整路径。
在 Makefile 中完成编辑选项后,您可以像这样初始化 NIS 服务器:
$ /usr/lib64/yp/ypinit -m
您可以使用 -m 选项将服务器初始化为主服务器。
或者,如果您使用的是 32 位系统,则命令为:
$ /usr/lib/yp/ypinit
此工具将询问辅助 NIS 服务器(如果有)。
服务器会将这些条目存储在/var/yp/ypservers文件中。
恭喜,现在您的 NIS 服务器应该可以正常工作,并且您的地图将位于辅助服务器上(如果有的话)。
在基于 Red Hat 的发行版上,您可以像这样安装 NIS 客户端:
$ dnf -y install ypbind
在基于 Debian 的发行版上,您可以像这样安装它:
$ apt-get install nis
/etc/yp.conf文件是客户端守护进程的配置。
您现在可以启动 ypbind:
$ systemctl start ypbind
$ systemctl enable ypbind
该文件包含系统将用于搜索的设施及其相应文件和服务的条目。
passwd: files nis
该条目告诉服务器在 /etc/passwd 文件中搜索密码条目,如果 NIS 服务器没有找到任何内容,请检查 NIS 服务器。
有一些有用的工具可以帮助您管理数据库中的信息。
ypcat:您可以使用此工具通过从 NIS 映射中提取数据来从 NIS 服务器获取数据。
ypwhich:获取响应您的请求的 Linux NIS 服务器的名称。
ypmatch:而不是抓取整个地图,或者您可以按键搜索以获取特定条目。
文章原文出处:https: //likegeeks.com/
1679389380
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.
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:
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 server types are:
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 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.
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.
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
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.
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.
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
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
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
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.
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.
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
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.
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/
1679138700
В этом руководстве по ChatGPT мы узнаем о силе визуального ChatGPT: общение с ИИ и изображениями!
В последнее время большие языковые модели (LLM) добились больших успехов. Одним из наиболее заметных достижений является ChatGPT, который предназначен для взаимодействия с пользователями посредством разговоров, поддержания контекста, обработки дополнительных вопросов и исправления себя. Однако ChatGPT ограничен в обработке визуальной информации, так как он обучается на одном языке.
Модели Visual Foundation продемонстрировали потенциал компьютерного зрения благодаря своей способности понимать и генерировать сложные изображения. Он построен на основе ChatGPT и включает в себя модели Visual Foundation, чтобы восполнить этот пробел. Для поддержки этой интеграции предлагается диспетчер подсказок, четко информирующий ChatGPT о возможностях каждого VFM, определяющий форматы ввода-вывода, преобразовывающий визуальную информацию в языковой формат и обрабатывающий истории, приоритеты и конфликты Visual Foundation Model. Используя Prompt Manager, ChatGPT может итеративно использовать модели Visual Foundation до тех пор, пока не будут выполнены требования пользователя или не будет достигнуто конечное условие.
Например, пользователь загружает изображение красного цветка и запрашивает синий цветок на основе прогнозируемой глубины, превращенный в мультфильм. Visual ChatGPT применяет связанные модели Visual Foundation, такие как оценка глубины и модели преобразования глубины в изображение, для создания запрошенных выходных данных.
Цели обучения
В тексте описывается, как Visual ChatGPT работает для генерации ответов на запросы пользователей. Система включает ряд моделей Visual Foundation и промежуточные результаты этих моделей для получения окончательного ответа.
Текст содержит формальное определение Visual ChatGPT, включая его основные правила и различные задействованные компоненты. Центр отображает блок-схему итеративного вызова моделей Visual Foundation и предоставляет ответы. В левой части отображается трехраундовое взаимодействие. Справа показан тщательный процесс второго QA.
Команды
# 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
Visual ChatGPT может выполнять различные задачи компьютерного зрения и предварительной обработки изображений, как показано ниже, с использованием текста.
Хотя Visual ChatGPT является многообещающим методом мультимодального общения, он имеет ряд недостатков.
Visual ChatGPT, открытая система, позволяет пользователям взаимодействовать с ChatGPT за пределами языкового формата, используя различные модели Visual Foundation. Для этого разработан ряд подсказок, которые помогают ChatGPT понимать визуальную информацию и шаг за шагом решать сложные визуальные вопросы. Потенциал и компетентность системы демонстрируются посредством экспериментов и отдельных случаев. Однако есть опасения относительно неудовлетворительных результатов из-за сбоев модели Visual Foundation и нестабильности подсказок. Модуль самокоррекции необходим для проверки соответствия результатов выполнения намерениям человека и внесения соответствующих правок. Такое поведение увеличивает время вывода модели, но приводит к более сложному мышлению. Будущая работа будет решать эту проблему.
Ключевые выводы
Оригинальный источник статьи: https://www.analyticsvidhya.com
1679135340
在此 ChatGPT 教程中,我们将了解 Visual ChatGPT 的强大功能:与 AI 和图像的对话!
最近,大型语言模型 (LLM) 取得了很大进步。最显着的突破之一是 ChatGPT,它旨在通过对话与用户互动、维护上下文、处理后续问题并自我纠正。然而,ChatGPT 在处理视觉信息方面受到限制,因为它是使用单一语言模态进行训练的。
视觉基础模型凭借其理解和生成复杂图像的能力显示了计算机视觉的潜力。它基于 ChatGPT 构建,并结合了 Visual Foundation Models 来弥合这一差距。建议使用 Prompt Manager 来支持这种集成,明确告知 ChatGPT 每个 VFM 的能力,指定输入输出格式,将视觉信息转换为语言格式,以及处理视觉基础模型历史、优先级和冲突。使用提示管理器,ChatGPT 可以迭代地利用 Visual Foundation Models,直到它满足用户要求或达到结束条件。
例如,用户上传了一张红色花朵的图像,并请求根据预测的深度将蓝色花朵制作成卡通。Visual ChatGPT 应用相关的视觉基础模型,例如深度估计和深度到图像模型,来生成请求的输出。
学习目标
该文本描述了 Visual ChatGPT 如何工作以生成对用户查询的响应。该系统涉及一系列视觉基础模型和这些模型的中间输出以获得最终响应。
文本提供了 Visual ChatGPT 的正式定义,包括其基本规则和涉及的不同组件。该中心显示了它如何迭代调用 Visual Foundation Models 并提供回复的流程图。左侧显示三轮交互。右侧显示了第二次质量检查的完整过程。
命令
# 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
Visual ChatGPT 可以执行各种计算机视觉任务和图像预处理,如下面使用文本的任务。
尽管 Visual ChatGPT 是一种很有前途的多模式通信方法,但它也有许多缺点。
Visual ChatGPT 是一个开放系统,允许用户通过合并不同的 Visual Foundation Models 与 ChatGPT 进行超越语言格式的交互。为此,设计了一系列提示来帮助 ChatGPT 理解视觉信息并逐步解决复杂的视觉问题。该系统的潜力和能力通过实验和选定的案例得到证明。但是,有人担心由于 Visual Foundation Model 故障和提示不稳定导致的结果不尽如人意。需要一个自校正模块来检查执行结果与人的意图之间的一致性并进行相应的编辑。这种行为会增加模型的推理时间,但会导致更复杂的思考。未来的工作将解决这个问题。
关键要点
文章原文出处:https: //www.analyticsvidhya.com
#ai #chatgpt
1679078940
Два дня назад один из посетителей веб-сайта искал на веб-сайте LDAP и ничего не нашел, что побудило меня написать сообщение о сервере LDAP, поэтому мы заполняем пробелы и доносим до посетителей любимый контент.
Мы знаем, что Linux хранит зарегистрированных пользователей в файле /etc/passwd, поэтому, если вы хотите получить доступ к машине, у вас должен быть пользователь в этом файле.
Если вы работаете с одной или несколькими машинами, это должно быть нормально, но что, если у вас сотни машин или, может быть, тысячи, и как вы будете поддерживать задачи управления пользователями, такие как изменение пароля или любые другие административные задачи, например, кто-то оставил работу, а вы? нужно закрыть его учетную запись, вы бы стали ходить для этого на каждую машину?
Это может быть кошмар, или вам нужно создать новую учетную запись. В этом случае нам нужна централизованная система управления учетными записями пользователей, база данных для хранения всей информации, связанной с учетными записями пользователей.
Наиболее часто используемым решением этой проблемы является облегченный протокол доступа к каталогам (LDAP).
LDAP использует обычную парадигму клиент/сервер.
LDAP не только хранит список пользователей, но вы также можете использовать его в качестве хранилища для ваших файлов.
Вы можете использовать его для аутентификации пользователей, как мы упоминали выше. Кроме того, вы можете хранить записи DNS на сервере LDAP.
Еще одно использование LDAP: вы можете использовать его в качестве службы каталогов желтых страниц для организации, чтобы предоставлять информацию о пользователях или сотрудниках, отделах, контактную информацию, номера телефонов, адреса, личные данные или что-то еще.
LDAP — это открытый стандартный протокол, который многие компании внедряют в протокол.
Существуют коммерческие реализации LDAP, такие как:
И бесплатные реализации с открытым исходным кодом, такие как:
В этом посте мы будем использовать OpenLDAP, который очень популярен и любим сообществом.
OpenLDAP — это реализация LDAP с открытым исходным кодом, работающая в системах Linux/UNIX.
Чтобы установить 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
После успешной установки вам необходимо сделать пароль для пользователя admin с помощью команды ldappasswd:
$ ldappasswd
Файлы конфигурации для OpenLDAP находятся в каталоге /etc/openldap/slapd.d.
Вы можете изменить эти файлы напрямую или использовать команду ldapmodify. Настоятельно рекомендуется модифицировать OpenLDAP с помощью команды ldapmodify.
Если мы собираемся иметь дело с протоколом 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 — 389, и если вы защищаете свой LDAP с помощью TLS, порт будет 636.
Вы можете проверить, на каком порту работает ваш OpenLDAP, используя команду netstat.
$ netstat -ntlp | grep slapd
По умолчанию 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
Новичку может быть немного сложно работать с терминала. Однако существует веб-инструмент под названием 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/
1679075160
两天前,一位网站访问者在网站上搜索 LDAP,但一无所获,这促使我发了一篇关于 LDAP 服务器的帖子,因此我们填补了空白,将喜爱的内容带给访问者。
我们知道 Linux 将注册用户保存在 /etc/passwd 文件中,所以如果你想访问机器,你必须在该文件上有一个用户。
如果您正在使用一台或几台机器,那应该没问题,但是如果您有数百台或数千台机器怎么办,以及如何维护用户管理任务,例如密码修改或任何其他管理任务,例如有人离开工作而您需要关闭他的帐户,你会去每台机器做吗?
那可能是一场噩梦,或者您需要创建一个新帐户。在这种情况下,我们需要一个集中的用户账户管理系统,一个数据库来保存与用户账户相关的所有信息。
此问题最常用的解决方案是轻量级目录访问协议 (LDAP)。
LDAP 使用通常的客户端/服务器范例。
LDAP 不仅保留用户列表,而且您还可以将其用作文件的存储。
如上所述,您可以使用它来对用户进行身份验证。此外,您还可以将DNS 记录存储在 LDAP 服务器中。
LDAP 的另一种用途,您可以将其用作组织的黄页目录服务,以提供有关用户或员工、部门、联系信息、电话号码、地址、私人数据或其他任何信息。
LDAP 是一个开放的标准协议,许多公司都在实施该协议。
有 LDAP 的商业实现,例如:
以及免费的开源实现,例如:
在这篇文章中,我们将使用 OpenLDAP,它在社区中很常见并且很受欢迎。
OpenLDAP 是在 Linux/UNIX 系统上运行的 LDAP 的开源实现。
要安装 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
安装成功后,您需要使用 ldappasswd 命令为 admin 用户设置密码:
$ ldappasswd
OpenLDAP 的配置文件位于 /etc/openldap/slapd.d 目录中。
您可以直接修改这些文件或使用 ldapmodify 命令。强烈建议使用 ldapmodify 命令修改 OpenLDAP。
如果我们要处理 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 端口为 389,如果您使用 TLS 保护 LDAP,端口将为 636。
您可以使用 netstat 命令确保您的 OpenLDAP 正在运行哪个端口。
$ netstat -ntlp | grep slapd
默认情况下,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
对于初学者来说,在终端上工作可能有点棘手。但是,有一个名为 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/
1679072700
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
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.
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.
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.
O Visual ChatGPT pode executar uma variedade de tarefas de visão computacional e pré-processamento de imagens, como as abaixo, usando texto.
Embora o Visual ChatGPT seja um método promissor para comunicação multimodal, ele apresenta várias desvantagens.
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
Fonte do artigo original em: https://www.analyticsvidhya.com
1679071203
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.
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.
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 is an open standard protocol that many companies make their implementation of the protocol.
There are commercial implementations of LDAP like:
And free open source implementations like:
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.
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
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.
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.
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
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
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.
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
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 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 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
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
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/
1679064000
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
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.
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.
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
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.
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.
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
Nguồn bài viết gốc tại: https://www.analyticsvidhya.com
1679017680
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
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.
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.
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.
Visual ChatGPT can perform a variety of Computer vision tasks and image pre-processing like the ones below using text.
Although Visual ChatGPT is a promising method for multi-modal communication, it has a number of drawbacks.
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
Original article source at: https://www.analyticsvidhya.com
1678913760
FTP или протокол передачи файлов — широко используемый протокол для передачи файлов между компьютерами; один действует как клиент, другой действует как сервер. В этом посте мы поговорим о FTP-сервере в системах Linux, в частности, об очень безопасном FTP-демоне (vsftpd).
Программа vsftpd — это очень популярный 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 имеет некоторые функции безопасности, которые делают его на вершине, например:
В любом случае, некоторые дистрибутивы 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/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-сервера полезен, если ваши файлы должны быть доступны для пользователей без каких-либо паролей или логинов.
Вам нужно настроить 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/.
Мы можем настроить 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, и вы успешно увидите свои папки.
В последнем примере мы видели FTP поверх уровня SSL (FTPS) и успешно подключились к FTP-серверу. Однако с жестко защищенным брандмауэром трудно управлять этим типом соединения, поскольку FTPS использует несколько номеров портов.
Лучшим решением в этом случае является использование SFTP (FTP через SSH). SFTP использует только порт 22.
FTP-сервер будет использовать этот порт для всех подключений во время сеансов FTP.
Если вы используете брандмауэр, вам следует выбрать SFTP, так как ему нужен только один порт.
Вы можете защитить свой 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-сервера.
Первая команда — это команда 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/
1678909740
FTP 或文件传输协议是用于在计算机之间传输文件的常用协议;一个充当客户端,另一个充当服务器。在这篇文章中,我们将讨论 Linux 系统中的 FTP 服务器,特别是 Very Secure FTP Daemon (vsftpd)。
vsftpd 程序是当今许多服务器使用的非常流行的 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 具有一些安全功能,使其位于顶部,例如:
一些 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 服务器,在/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 服务器很有用。
您需要将 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/。
我们可以将 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,您将成功看到您的文件夹。
在上一个示例中,我们看到了 SSL 层上的 FTP (FTPS),并且我们已经成功连接到 FTP 服务器。但是,由于 FTPS 使用多个端口号,因此使用严格保护的防火墙很难管理这种连接。
在这种情况下,最好的解决方案是使用 SFTP(FTP over SSH)。SFTP 仅使用端口 22。
在 FTP 会话期间,FTP 服务器将使用此端口进行所有连接。
如果您使用防火墙,您应该选择 SFTP,因为它只需要一个端口。
您可以通过将 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
您可以使用任何 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/