最近想为Ubuntu服务器增加一个用户,然后ssh
远程登录使用。折腾了好久总算搞定,现将过程中遇到的问题记录下来,以便将来参考。
1. 创建新用户
Linux系统中只有root用户有创建其它用户的权限。
切换到root,创建新用户zyw ,并设置密码
$ su - root
$ useradd zyw
$ passwd zyw
2. 用户缺少主目录
然后以zyw用户ssh
登录Ubuntu服务器,却显示以下错误信息:
Could not chdir to home directory /home/zyw: No such file or directory
很显然问题在于使用useradd
命令创建用户时,忘了使用-d
参数指定用户主目录(其实我以为系统会根据用户名自动创建,看来系统没有那么智能)。解决办法是为zyw用户创建主目录**/home/zyw**并设定相应权限,输入以下命令:
$ mkdir /home/zyw
$ chown zyw:zyw /home/zyw
$ chmod 0700 /home/zyw
3. 终端提示符不是[user@host path]$
再次登录Ubuntu服务器,成功登录。但终端提示符只显示一个$
,而不是常见的[user@host path]$
。用ls
命令列出当前目录清单时,目录和文件也没有用不同颜色标识,而且命令输入错误也不能删除,使用非常不方便。
通过google发现,原因在于用户使用的shell
不是常用的bash
。查看当前使用的shell
,输入:
$ echo $SHELL
果然输出为sh
,而不是bash
。解决办法是修改**/etc/passwd配置文件,将zyw用户使用的shell
改为bash
。修改/etc/passwd需要sudo
权限,新建的用户使用不了sudo
,提示该用户不在sudoers
列表里。解决办法是切换到root用户,执行visudo
或者修改/etc/sudoers**,在root ALL=(ALL) ALL
下面添加
zyw ALL=(ALL) ALL
这为zyw用户添加了所有权限。
切换回zyw用户,重新修改**/etc/passwd**,找到
zyw:x:1001:1001::/home/zyw:/bin/sh
其中最后一个分号后的内容指定zyw用户使用的shell
,将其修改为**/bin/bash**。
4. 终端缺少配置文件
重新登录Terminal,提示符正常,但仍没有颜色高亮。通过ls -a
列出用户主目录下所有文件(包括隐藏文件),发现缺少终端配置文件**.bashrc和.profile**。解决办法是从**/etc/skel**目录下拷贝过来,输入以下命令:
$ cp /etc/skel/.bashrc /home/zyw/
$ cp /etc/skel/.profile /home/zyw/
再次登录Terminal,一切都正常了,可以愉快地玩耍了。