22

当您第一次启动 Cygwin shell 时,您以您在 Windows 上的用户身份登录。如何仅更改该用户的用户名,而将 Cygwin 用户的现有 cygwin 关联保留给 Windows 用户?(即无需创建全新的 Windows 帐户)

为什么?我刚刚从虚拟机转移到 Cygwin,并希望重用我的所有脚本和 shell 自定义,这些脚本和 shell 自定义假定特定的用户名(想想 .ssh/config、.subversion 等)而无需更改。

4

4 回答 4

24

对于从干净的 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 用户。

于 2016-02-20T19:49:07.917 回答
8

我原来的用户名是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

仅此而已,只需重新启动 shell。

我创建了符号链接,以防 Cygwin/etc/passwd出于某种原因更新,并将用户名恢复为root并将其主目录恢复为/home/root,以便仍然可以登录。

更改用户名sed -e 's/^root/someuser/' -i /etc/passwd:)

于 2013-10-27T01:17:36.130 回答
4

这对我有用(Windows 10):

  1. rm /etc/passwd
  2. mkpasswd -c > /etc/passwd
  3. ln -s /home/oldname /home/newname
  4. sed -i 's/oldname/newname/g' /etc/passwd
于 2019-08-21T09:31:18.257 回答
3

这就是我在 Windows 10 上所做的,它结合了其他三个答案的元素:

  1. 验证您的 Cygwin /etc/passwd 不存在
  2. 光盘 /home
  3. mv 旧名新名
  4. ln -s 新名称 旧名称
  5. “mkpasswd -l > /etc/passwd”(这会在您的新 /etc/passwd 中插入许多帐户)
  6. sed -i 's/oldname/newname/g' /etc/passwd
  7. 杀死所有 cygwin shell
  8. 调出一个新的 cygwin shell
于 2017-12-20T08:18:14.183 回答