重命名/更改cygwin用户名

时间:2013-10-27 01:17:36

标签: cygwin username

首次启动Cygwin shell时,您将以Windows上的用户身份登录。如何更改该用户的用户名,将Cygwin用户的现有cygwin关联与Windows用户保持一致? (即没有创建一个全新的Windows帐户)

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

4 个答案:

答案 0 :(得分:16)

对于以干净的Cygwin安装开始的人来说,一种方法可能是创建新的/etc/passwd文件(在当前的Cygwin版本中,默认情况下不存在) mkpasswd -l >/etc/passwd将为每个用户创建一个条目 (添加-b以省略内置用户,或仅添加-c以仅为当前用户创建条目,请参阅https://cygwin.com/cygwin-ug-net/mkpasswd.html)。

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

有关Cygwin如何处理" Cygwin"之间的映射的说明,请参阅https://cygwin.com/cygwin-ug-net/ntsec.html。和Windows用户。 哦,还有mkgroup可以类似地使用,请参阅https://cygwin.com/cygwin-ug-net/mkgroup.html

你会看到创建不是官方推荐的,但从我的经验来看它并没有造成任何问题,如果你做了涉及用户/团体权利的相当高级的东西,或者如果你没有保持它 - 更改Windows用户时的最新版本。

答案 1 :(得分:5)

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

答案 2 :(得分:3)

这就是我在Windows 10上所做的,它结合了另外两个答案的元素:

  1. 验证您的Cygwin / etc / passwd不存在
  2. cd / home
  3. mv oldname newname
  4. ln -s newname oldname
  5. “mkpasswd -l> / etc / passwd”(这会将许多帐户插入新的/ etc / passwd)
  6. 编辑/ etc / passwd并找到oldname条目,并在单个单行条目的三个位置将“oldname”更改为“newname”
  7. 杀死所有cygwin炮弹
  8. 提出一个新的cygwin shell

答案 3 :(得分:0)

这是对我有用的(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