Возможно, вы когда то столкнетесь, что необходимо будет сменить UUID диска. Прочитав несколько статей, и наткнувшись на неприятную ситуацию, когда система не захотела грузиться напишу здесь, как этого избежать.
1) Посмотрим текущие UUID и сохраним их куда то в файл
#blkid -c /dev/null
#blkid -c /dev/null > ~/myuuid
2) Для смены UUID мы можем либо руками его записать, или использовать прогу uuid для генерации этих самых uuid.Если ее нет установим ее:
#apt-get install uuid
#uuid — собственно и выведет uuid
3) Теперь запишем изменим UUID используем для этого tune2fs
#tune2fs /dev/sda1 -U `uuid`
4) После того как мы изменили просмотрим новый
#blkid -c /dev/null
Но если все оставить в таком виде, то ваша система не будет грузиться, т.к по умолчанию в /etc/fstab монтирование идет именно по UUID, а также в /boot/grub/grub.cfg также прописанны эти самые UUID.Для того чтобы система нормально стартовала необходимо заменить старый UUID (если забыли мы его записали в файл ~/myuuid), на новый в /etc/fstab и в /boot/grub/grub.cfg. Загрузчик я бы рекомендовал править через MC (Midnight Commander) поиском и заменой, т.к строк там слишком много.
How to find you Minecraft UUID on iPhone/iPad/pc
Если же все таки, мы где то оплошались с этими UUID и система перестала грузиться и выдает ошибка /dev/disk/by-uuid/ваш-UUID not found или что то типа того и система грузиться в режиме initramfs. Тогда делаем так.
1) Если у нас диск разбит на один раздел / т.е корень и все то:
#mkdir /mnt — создаем кактлог куда будем монтировать наш раздел, если разбито более чем на 1 раздел, например /var — это /dev/sda2 тогда создаем подкаталоги /mnt/var и монтируем соответсвенно кажый раздел в свою папку.
2)Теперь смонтируем наш раздел:
#mount /dev/sda1 /mnt
3) Сменим корень
#chroot /mnt — у вас не будет отображаться сбоку приглашение вида ~/home$ просто вводите команды.
4) Теперь запустим MC MC (Midnight Commander) или что вам ближе и также как я писал выше проверим и заменим UUID в /etc/fstab и /boot/grub/grub.cfg.
Источник: onlyadmin.blogspot.com
Как изменить скины в Bukkit для Minecraft
Bukkit — это созданный сообществом набор инструментов, который позволяет пользователям использовать плагины на своих серверах Minecraft. Его можно загрузить совершенно бесплатно, и он предоставит новые способы весело провести время с друзьями. Одна из вещей, которую вы можете сделать с помощью Bukkit, — изменить скин.
Чтобы сменить скин с помощью Bukkit , вам понадобится плагин ChangeSkin. Он легкий и простой в использовании. Для тех, кто не уверен, что влечет за собой этот процесс, вам повезло. Читайте дальше, чтобы узнать все, что вам нужно знать об этом плагине.
Изменение скинов
Если у вас уже есть Bukkit на вашем сервере, вам нужно будет получить плагин ChangeSkin. Вы можете скачать его для любого сервера Bukkit с версией Minecraft 1.8 и выше. Не забудьте получить совместимый плагин для вашего клиента Minecraft.
Как взломать админку на сервере 1.8 | Способ UUID
Установите ChangeSkin
Как и все плагины Bukkit, вам нужно будет их установить. К счастью, процесс несложный и занимает совсем немного времени. Вот как это делается:
- Загрузите ChangeSkin.
- Поместите файл .jar и другие файлы плагина в каталог плагинов.
- Запустите сервер Bukkit.
- Откройте консоль сервера.
- Введите “stop.
- После остановки сервера закройте его и снова запустите.
- Если все пройдет идеально, вы сразу же сможете использовать команды.
Если вы не знаете, где находится ваш каталог плагинов, он должен быть в вашем Папка сервера CraftBukkit. Найдите папку “plugins” Перетащите файлы внутрь, и все готово.
Использование ChangeSkin
Запустив ChangeSkin, вы теперь сможете изменить свой или чужой скин. Плагин отличный, так как он дает множество преимуществ.
Например, ChangeSkin не предъявляет особых требований. Вы также можете использовать ChangeSkin с немодифицированным клиентом, и есть возможность создать стандартный скин.
ChangeSkin имеет две основные команды:
Есть четыре разрешения, которые вы можете предоставить или запретить.
- changeskin.command.skinupdate
- changeskin.command.setskin.* (который предоставляет или отменяет два указанных ниже разрешения)
- changeskin.command. setskin
- changeskin.command.setskin.other
Вы даже можете разрешить или заблокировать определенные скины с этими следующими разрешениями.
- changeskin.skin.whitelist.uuid
- changeskin.skin.whitelist.* (эта команда включает все доступные скины)
- -changeskin.skin.whitelist.uuid
Чтобы изменить скин, воспользуйтесь этим набором инструкций.
- Перейдите на свой сервер Bukkit.
- Откройте консоль.
- Введите “/setskin (вставьте uuid здесь)”.
- Теперь ваш скин должен смениться на скин определенного игрока.
Использование UUID означает копирование конкретных номеров игрока в консоль. Этот процесс невероятно плавный и совсем не занимает времени.
Попробуйте это вместо того, чтобы подобрать скин другого присутствующего игрока.
- Перейдите на свой сервер Bukkit.
- Поднимите console.
- Введите “/setskin (вставьте сюда имя игрока)”.
- Ваш скин будет соответствовать скину игрока, и будут два игрока с одинаковым внешним видом.
С помощью /setskin вы можете разделить команды на основе их скинов. Это было бы полезно при игре в командных играх. ChangeSkin также можно использовать для смены скина другого игрока. Для этого следуйте приведенным ниже инструкциям:
- Убедитесь, что на сервере Bukkit более одного игрока.
- Войти.
- Появится консоль.
- Введите команду “/setskin (имя игрока) (UUID нового скина или имя другого игрока)”.
- Выполните команду .
- Посмотрите, как изменится внешний вид целевого игрока.
“/skinupdate” используется только для обновления скина игрока, если он поменял свой на другой в своих файлах.
Предоставление разрешений
Как упоминалось выше, владелец сервера может не захотеть, чтобы люди меняли внешний вид по своей прихоти, поскольку это может испортить командные игры. Поэтому создатель плагина ChangeSkin реализовал команды разрешений.
Игроки могут устанавливать свои или другие’ шкуры. Эти команды можно запретить с помощью параметра “changeskin.command.setskin” и “changeskin.command.setskin.other” команды.
Дополнительные часто задаваемые вопросы
Поддерживает ли Bukkit моды?
Нет, Bukkit не работает с модами потому что моды основаны на ванильном Minecraft. С помощью некоторых специальных инструментов, таких как BukkitForge, вы можете комбинировать и то, и другое. Однако Bukkit обычно несовместим с ними, за очень немногими исключениями.
Лучше ли Bukkit, чем Forge?
На самом деле все наоборот, так как моды и Forge гораздо более разнообразны в том, что они приносят на стол. Вместо этого у Bukkit есть некоторые ограничения, которые не влияют на Forge. Однако Bukkit более удобен для обычного игрока в Minecraft.
Люди все еще используют Bukkit?
Да, но Bukkit не обновлялся с 2014 года. Команда присоединилась к Mojang и закрыла проект. Сегодня Spigot является наиболее популярным серверным инструментом.
Я — это ты, а ты — это я
С помощью ChangeSkin игроки Minecraft, использующие Буккит может принимать облик друг друга. Плагин удобен для пользователя и может быть освоен в кратчайшие сроки. Установив его, вы можете сделать командные игры более интересными для всех.
Используете ли вы Bukkit для своего сервера? Какой ваш любимый плагин? Дайте нам знать в разделе комментариев ниже.
Источник: gmodz.ru
Как генерируются UUID
Вы наверняка уже использовали в своих проектах UUID и полагали, что они уникальны. Давайте рассмотрим основные аспекты реализации и разберёмся, почему UUID практически уникальны, поскольку существует мизерная возможность возникновения одинаковых значений.
Современную реализацию UUID можно проследить до RFC 4122, в котором описано пять разных подходов к генерированию этих идентификаторов. Мы рассмотрим каждый из них и пройдёмся по реализации версии 1 и версии 4.
Теория
UUID (universally unique IDentifier) — это 128-битное число, которое в разработке ПО используется в качестве уникального идентификатора элементов. Его классическое текстовое представление является серией из 32 шестнадцатеричных символов, разделённых дефисами на пять групп по схеме 8-4-4-4-12.
3422b448-2460-4fd2-9183-8000de6f8343
Информация о реализации UUID встроена в эту, казалось бы, случайную последовательность символов:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Значения на позициях M и N определяют соответственно версию и вариант UUID.
Версия
Номер версии определяется четырьмя старшими битами на позиции М. На сегодняшний день существуют такие версии:
Вариант
Это поле определяет шаблон информации, встроенной в UUID. Интерпретация всех остальных битов в UUID зависит от значения варианта.
Мы определяем его по первым 1-3 старшим битам на позиции N.
Сегодня чаще всего используют вариант 1, при котором MSB0 равняется 1 , а MSB1 равняется 0 . Это означает, что с учётом подстановочных знаков — битов, отмеченных х — единственными возможными значениями будут 8 , 9 , A или B .
1 0 0 0 = 8
1 0 0 1 = 9
1 0 1 0 = A
1 0 1 1 = B
Так что если вы видите UUID с такими значениями на позиции N, то это идентификатор в варианте 1.
Версия 1 (время + уникальный или случайный идентификатор хоста)
В этом случае UUID генерируется так: к текущему времени добавляется какое-то идентифицирующее свойство устройства, которое генерирует UUID, чаще всего это MAC-адрес (также известный как ID узла).
Идентификатор получают с помощью конкатенации 48-битного МАС-адреса, 60-битной временной метки, 14-битной «уникализированной» тактовой последовательности, а также 6 битов, зарезервированных под версию и вариант UUID.
Тактовая последовательность — это просто значение, инкрементируемое при каждом изменении часов.
Временная метка, которая используется в этой версии, представляет собой количество 100-наносекундных интервалов с 15 октября 1582 года — даты возникновения григорианского календаря.
Возможно, вы знакомы с принятым в Unix-системах исчислением времени с начала эпохи. Это просто другая разновидность Нулевого дня. В сети есть сервисы, которые помогут вам преобразовать одно временное представление в другое, так что не будем на этом останавливаться.
Хотя эта реализация выглядит достаточно простой и надёжной, однако использование MAC-адреса машины, на которой генерируется идентификатор, не позволяет считать этот метод универсальным. Особенно, когда главным критерием является безопасность. Поэтому в некоторых реализациях вместо идентификатора узла используется 6 случайных байтов, взятых из криптографически защищённого генератора случайных чисел.
Сборка UUID версии 1 происходит так:
- Берутся младшие 32 бита текущей временной метки UTC. Это будут первые 4 байта (8 шестнадцатеричных символов) UUID [ TimeLow ].
- Берутся средние 16 битов текущей временной метки UTC. Это будут следующие 2 байта (4 шестнадцатеричных символа) [ TimeMid ].
- Следующие 2 байта (4 шестнадцатеричных символа) конкатенируют 4 бита версии UUID с оставшимися 12 старшими битами текущей временной метки UTC (в которой всего 60 битов) [ TimeHighAndVersion ].
- Следующие 1-3 бита определяют вариант версии UUID. Оставшиеся биты содержат тактовую последовательность, которая вносит небольшую долю случайности в эту реализацию. Это позволяет избежать коллизий, когда в одной системе работает несколько UUID-генераторов: либо системные часы переводятся назад для генератора, либо изменение времени замедляется [ ClockSequenceHiAndRes ClockSequenceLow ].
- Последние 6 байтов (12 шестнадцатеричных символов, 48 битов) — это «идентификатор узла», в роли которого обычно выступает MAC-адрес генерирующего устройства [ NodeID ].
TimeLow + TimeMid + TimeHighAndVersion + (ClockSequenceHiAndRes ClockSequenceLow) + NodeID
Поскольку эта реализация зависит от часов, нам нужно обрабатывать пограничные ситуации. Во-первых, для минимизации коррелирования между системами по умолчанию тактовая последовательность берётся как случайное число — так делается лишь один раз за весь жизненный цикл системы. Это даёт нам дополнительное преимущество: поддержку идентификаторов узлов, которые можно переносить между системами, поскольку начальное значение тактовой последовательности совершенно не зависит от идентификатора узла.
Помните, что главная цель использования тактовой последовательности — внести долю случайности в наше уравнение. Биты тактовой последовательности помогают расширить временную метку и учитывать ситуации, когда несколько UUID генерируются ещё до того, как изменяются процессорные часы. Так мы избегаем создания одинаковых идентификаторов, когда часы переводятся назад (устройство выключено) или меняется идентификатор узла. Если часы переведены назад, или могли быть переведены назад (например, пока система была отключена), и UUID-генератор не может убедиться, что идентификаторы сгенерированы с более поздними временными метками по сравнению с заданным значением часов, тогда нужно изменить тактовую последовательность. Если нам известно её предыдущее значение, его можно просто увеличить; в противном случае его нужно задать случайным образом или с помощью высококачественного ГПСЧ.
Версия 2 (безопасность распределённой вычислительной среды)
Главное отличие этой версии от предыдущей в том, что вместо «случайности» в виде младших битов тактовой последовательности здесь используется идентификатор, характерный для системы. Часто это просто идентификатор текущего пользователя. Версия 2 используется реже, она очень мало отличается от версии 1, так что идём дальше.
Версия 3 (имя + MD5-хэш)
Если нужны уникальные идентификаторы для информации, связанной с именами или наименованием, то для этого обычно используют UUID версии 3 или версии 5.
Они кодируют любые «именуемые» сущности (сайты, DNS, простой текст и т.д.) в UUID-значение. Самое важное — для одного и того же namespace или текста будет сгенерирован такой же UUID.
Обратите внимание, что namespace сам по себе является UUID.
let namespace = “digitalbunker.dev” let namespaceUUID = UUID3(.DNS, namespace) // Ex: UUID3(namespaceUUID, “/category/things-you-should-know-1/”) 4896c91b-9e61-3129-87b6-8aa299028058 UUID3(namespaceUUID, “/category/things-you-should-know-2/”) 29be0ee3-fe77-331e-a1bf-9494ec18c0ba UUID3(namespaceUUID, “/category/things-you-should-know-3/”) 33b06619-1ee7-3db5-827d-0dc85df1f759
В этой реализации UUID namespace преобразуется в строку байтов, конкатенированных с входным именем, затем хэшируется с помощью MD5, и получается 128 битов для UUID. Затем мы переписываем некоторые биты, чтобы точно воспроизвести информацию о версии и варианте, а остальное оставляем нетронутым.
Важно понимать, что ни namespace, ни входное имя не могут быть вычислены на основе UUID. Это необратимая операция. Единственное исключение — брутфорс, когда одно из значений (namespace или текст) уже известно атакующему.
При одних и тех же входных данных генерируемые UUID версий 3 и 5 будут детерминированными.
Версия 4 (ГПСЧ)
Самая простая реализация.
6 битов зарезервированы под версию и вариант, остаётся ещё 122 бита. В этой версии просто генерируется 128 случайных битов, а потом 6 из них заменяется данными о версии и варианте.
Такие UUID полностью зависят от качества ГПСЧ (генератора псевдослучайных чисел). Если его алгоритм слишком прост, или ему не хватает начальных значений, то вероятность повторения идентификаторов возрастает.
В современных языках чаще всего используются UUID версии 4.
Её реализация достаточно простая:
- Генерируем 128 случайных битов.
- Переписываем некоторые биты корректной информацией о версии и варианте:
- Берём седьмой бит и выполняем c 0x0F операцию AND для очистки старшего полубайта. А затем выполняем с 0x40 операцию OR для назначения номера версии 4.
- Затем берём девятый байт, выполняем c 0x3F операцию AND и с 0x80 операцию OR.
Версия 5 (имя + SHA-1-хэш)
Единственное отличие от версии 3 в том, что мы используем алгоритм хэширования SHA-1 вместо MD5. Эта версия предпочтительнее третьей (SHA-1 > MD5).
Практика
Одним из важных достоинств UUID является то, что их уникальность не зависит от центрального авторизующего органа или от координации между разными системами. Кто угодно может создать UUID с определённой уверенностью в том, что в обозримом будущем это значение больше никем не будет сгенерировано.
Это позволяет комбинировать в одной БД идентификаторы, созданные разными участниками, или перемещать идентификаторы между базами с ничтожной вероятностью коллизии.
UUID можно использовать в качестве первичных ключей в базах данных, в качестве уникальных имён загружаемых файлов, уникальных имён любых веб-источников. Для их генерирования вам не нужен центральный авторизующий орган. Но это обоюдоострое решение. Из-за отсутствия контролёра невозможно отслеживать сгенерированные UUID.
Есть и ещё несколько недостатков, которые нужно устранить. Неотъемлемая случайность повышает защищённость, однако она усложняет отладку. Кроме того, UUID может быть избыточным в некоторых ситуациях. Скажем, не имеет смысла использовать 128 битов для уникальной идентификации данных, общий размер которых меньше 128 битов.
Уникальность
Может показаться, что если у вас будет достаточно времени, то вы сможете повторить какое-то значение. Особенно в случае с версией 4. Но в реальности это не так. Если бы вы генерировали один миллиард UUID в секунду в течение 100 лет, то вероятность повторения одного из значений была бы около 50 %. Это с учётом того, что ГПСЧ обеспечивает достаточное количество энтропии (истинная случайность), иначе вероятность появления дубля будет выше. Более наглядный пример: если бы вы сгенерировали 10 триллионов UUID, то вероятность появления двух одинаковых значений равна 0,00000006 %.
А в случае с версией 1 часы обнулятся только в 3603 году. Так что если вы не планируете поддерживать работу своего сервиса ещё 1583 года, то вы в безопасности.
Впрочем, вероятность появления дубля остаётся, и в некоторых системах стараются это учитывать. Но в подавляющем большинстве случаев UUID можно считать полностью уникальными. Если вам нужно больше доказательств, вот простая визуализация вероятности коллизии на практике.
- uuid
- никто не читает теги
- Блог компании VK
- Программирование
- Проектирование и рефакторинг
- Алгоритмы
- Терминология IT
Источник: habr.com