Переименовать/изменить имя пользователя cygwin

При первом запуске оболочки Cygwin вы вошли в систему как пользователь, находящийся в Windows. Как вы изменяете только имя пользователя этого пользователя, оставляя существующую связь cygwin пользователя Cygwin с пользователем Windows? (т.е. без создания новой учетной записи Windows)

Почему? Я просто перешел с виртуальной машины на Cygwin и хотел бы использовать все мои скрипты и настройки оболочки, которые предполагают конкретное имя пользователя (думаю, что .ssh/config,.subversion и т.д.) Без изменений.

Ответ 1

Мое первоначальное имя пользователя было root (под Windows, по иронии судьбы), и я хотел, чтобы он был someuser. Я решил, что хочу, чтобы мой домашний каталог был /home/someuser, и был доступен для чтения из Windows.

Это то, что я сделал:

cd /home
mv root someuser
ln -s someuser root
sed -e 's/^root/someuser/' -e 's/\/home\/root/\/home\/user/' -i /etc/passwd

И все это, просто перезапустите оболочку.

Я сделал символическую ссылку в случае, если Cygwin по какой-то причине обновит /etc/passwd и восстановит имя пользователя до root и его домашний каталог до /home/root, так что еще можно войти в систему.

(Только изменить имя пользователя: sed -e 's/^root/someuser/' -i /etc/passwd)

Ответ 2

Для пользователей, начинающих с чистой установки Cygwin, может быть создан новый /etc/passwd файл (он не существует по умолчанию в текущих версиях Cygwin), используя mkpasswd -l >/etc/passwd, который создаст запись для каждого пользователя (добавьте -b, чтобы опустить встроенных пользователей или просто -c, чтобы создать запись для текущего пользователя, см. https://cygwin.com/cygwin-ug-net/mkpasswd.html).

Затем просто откройте /etc/passwd переименуйте учетную запись там (первый столбец).

См. https://cygwin.com/cygwin-ug-net/ntsec.html для описания того, как Cygwin обрабатывает сопоставление между "Cygwin" и пользователем Windows. О, и есть также mkgroup, который можно использовать аналогично, см. https://cygwin.com/cygwin-ug-net/mkgroup.html.

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

Ответ 3

Это то, что я сделал, это работало на Windows 10, которая сочетает в себе элементы двух других ответов:

  1. Убедитесь, что ваш Cygwin/etc/passwd не существует
  2. CD/дом
  3. М.В. старое имя новое имя
  4. ln -s новое имя старое имя
  5. "mkpasswd -l>/etc/passwd" (это вставит много учетных записей в ваш новый /etc/passwd)
  6. отредактируйте /etc/passwd и найдите запись старого имени, а также измените "oldname" на "newname" в трех местах в этой единственной записи -l
  7. убить всех снарядов Cygwin
  8. вызвать новую оболочку cygwin

Ответ 4

В отличие от других ответов, вот что у меня сработало (в Windows 10):

  1. rm /etc/passwd
  2. mkpasswd -c > /etc/passwd
  3. ln -s /home/oldname /home/newname
  4. Отредактируйте /etc/passwd и замените старое имя новым