【问题标题】:Rename/change cygwin username重命名/更改 cygwin 用户名
【发布时间】:2021-05-13 00:54:05
【问题描述】:

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

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

【问题讨论】:

  • 我在当前安装的 Cygwin64 上的主目录名称是我的完整 Windows 用户名,包括空格。但事实证明我从未使用过这个目录。所以我对这个问题的答案感兴趣的原因是避免在我的家庭路径中有空间。

标签: cygwin


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我使用了这个答案,它在某种程度上有效。不幸的是,在我的情况下,在新目录下创建的文件的 ACL 是错误的。我不知道为什么会这样。如果您正在考虑这个答案,请考虑创建一个新帐户,例如考虑创建一个本地帐户。
    【解决方案3】:

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

    【讨论】:

    • 我执行了命令 1、2、4。出于某种原因,理想命名的目录已经存在,所以我只需要 /etc/passwd 来启用正确的目录。
    【解决方案4】:

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

    1. 验证您的 Cygwin /etc/passwd 不存在
    2. cd /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

    【讨论】:

    • mkpasswd -l > /etc/passwd 创建文件并向其中添加行。但我在该文件中找不到我的用户名(旧名)。我也找不到我的“新”用户名(新名称)。我认为正确使用的命令是mkpasswd -c > /etc/passwd
    • @gromit190 我刚刚重新尝试了整个 10 步过程,虽然当我还没有完成有关安装的最终确定时它在第 3 步失败了,但它甚至可以在第 5 步“mkpasswd -l > /etc/passwd" 创建一个 /etc/passwd 我找到了我的用户名,并在三个地方进行了更改。
    • 刚刚重新尝试了整个 10 步程序,并且无缝运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2020-08-13
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多