使用这个需求的背景先介绍一下
我是一个PHP程序员,因为平时开发和部署项目的服务器环境,一直都依赖于宝塔面板。但用户我一直用的都是root,经过一次手滑,在root用户下执行了chmod -R www:www / ,结果可想而知,有这一次事故之后,我决定用宝塔的web用户做开发,也就是www用户,所以记录一下将www用户设置为可以登陆用户的过程。
正常情况下,安装完宝塔之后,如果想用www用户来编辑代码,会这样提示:
# su www
Cannot execute /sbin/nologin: No such file or directory
/sbin/nologin意思就是不允许登陆的shell,现在就需要切换到root用户下编辑 /etc/passwd
文件,找到需要登陆的用户名,如我现在要切换的用户名是www,如下:
www:x:1000:1000::/home/www:/sbin/nologin
/home/www
是用户的默认home目录,/sbin/nologin
就是用户的登陆shell,将它改为:/bin/bash
就可以了。
有些情况,www用户需要使用到sudo命令,这时就需要给www用户设置一个密码,切换到root用户,执行下面的命令
# passwd www
Enter new UNIX password:
Retype new UNIX password:
输入两次密码,密码就设置完成了,但切换到www用户后,又会出现下面的提示:
[sudo] password for www:
www is not in the sudoers file. This incident will be reported.
解决办法:
先切换到root用户下,给/etc/sudoers
文件增加写的权限
chmod u+w /etc/sudoers
然后编辑/etc/sudoers
文件
vim /etc/sudoers
找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名)
PS:这里说下你可以sudoers添加下面四行中任意一条
youuser ALL=(ALL) ALL
%youuser ALL=(ALL) ALL
youuser ALL=(ALL) NOPASSWD: ALL
%youuser ALL=(ALL) NOPASSWD: ALL
第一行:允许用户youuser执行sudo命令(需要输入密码).
第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码).
第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码.
第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码.
最后撤销sudoers文件写权限,命令:
chmod u-w /etc/sudoers