重命名/更改cygwin用户名

重命名/更改cygwin用户名,cygwin,Cygwin,当您第一次启动Cygwin shell时,您将以Windows上的用户身份登录。如何只更改该用户的用户名,而保留cygwin用户与Windows用户的现有cygwin关联?(即不创建全新的Windows帐户) 为什么??我刚从一个虚拟机转移到Cygwin,希望重用我所有的脚本和shell定制,这些脚本和shell定制采用一个特定的用户名(想想.ssh/config、.subversion等等),而不做任何更改。我原来的用户名是root(讽刺的是,在Windows下),我希望它是某个用户。我想我希

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


为什么??我刚从一个虚拟机转移到Cygwin,希望重用我所有的脚本和shell定制,这些脚本和shell定制采用一个特定的用户名(想想.ssh/config、.subversion等等),而不做任何更改。

我原来的用户名是
root
(讽刺的是,在Windows下),我希望它是
某个用户。我想我希望我的home dir也是
/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的/^root/someuser/'-i/etc/passwd

对于刚开始安装Cygwin的用户,一种方法可能是使用
mkpasswd-l>/etc/passwd
将为每个用户创建一个条目 (添加
-b
以省略内置用户,或仅添加
-c
以仅为当前用户创建条目,请参阅)

接下来,只需打开
/etc/passwd
重命名其中的帐户(第一列)

有关Cygwin如何处理“Cygwin”和Windows用户之间的映射的描述,请参阅。 哦,还有一个
mkgroup
可以类似地使用,请参阅


你会看到,创建不是官方推荐的,但根据我的经验,它没有造成任何问题,如果你想做一些涉及用户/组权限的高级工作,或者在更改Windows用户时没有及时更新,那么可能会这样做。

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

  • 验证您的Cygwin/etc/passwd不存在
  • cd/主页
  • mv旧名新名
  • ln-s newname oldname
  • “mkpasswd-l>/etc/passwd”(这将在新的/etc/passwd中插入许多帐户)
  • sed-i's/oldname/newname/g'/etc/passwd
  • 杀死所有的赛文贝壳
  • 拿出一个新的cygwin外壳

  • 这就是我的工作原理(Windows 10):

  • rm/etc/passwd
  • mkpasswd-c>/etc/passwd
  • ln-s/home/oldname/home/newname
  • sed-i's/oldname/newname/g'/etc/passwd

  • 我用了这个答案,它在某种程度上起了作用。不幸的是,在我的例子中,在新目录下创建的文件的ACL是错误的。我不知道为什么。如果您正在考虑这个答案,请考虑创建一个新帐户,例如,考虑创建一个本地帐户。<代码> MKPASSWD—L> /ETC/PASWD < /COD>创建文件并向其中添加行。但是我在那个文件中找不到我的用户名(oldname)。我也找不到我的“新”用户名(newname)。我认为正确的命令应该是
    mkpasswd-c>/etc/passwd
    @gromit190我刚刚重新尝试了整个10步过程,虽然在第3步失败了,当时我还没有完成安装,但它甚至可以在第5步“mkpasswd-l>/etc/passwd”创建一个/etc/passwd,在那里我找到了我的用户名,并在三个地方进行了更改。只需重新尝试整个10步过程,就可以无缝地工作。当前安装的Cygwin64上我的主目录名是我的完整Windows用户名,包括空格。但事实证明我从未使用过这个目录。所以我对这个问题的答案感兴趣的原因是为了避免在我的主路径中有一个空间。由于某种原因,理想命名的目录已经存在,所以我只需要/etc/passwd来启用正确的目录。