新建账号需要root账号或sudo权限,sudo配置保存在/etc/sudoers文件。

sudo的作用是允许系统管理员让普通用户执行一些或者全部的root命令,这样就可以不用频繁的切换到root账号,也可以灵活的设置权限。执行命令本质上是运行一个个可执行文件,而每个可执行文件都设置了权限,这样就对不同的账号区别对待了。

执行 ls -l /usr/bin/sudo得到结果:

---s--x--x. 1 root root 123832 Jul 24  2015 /usr/bin/sudo*

可以看到sudo文件属主/组都是root,前面的信息表明所有的用户都能运行它,s代表使用者临时具有该文件所属主/组的执行权限,所以运行它后,会以root权限运行。(如果没有这个s,则是以使用者自己的账号运行,结果就是如果sudo需要读取只有root权限才能读的文件,那么没有设置s位的话就会失败)

sudoers的配置格式一般为:

root    ALL=(ALL:ALL) ALL 
%sudo   ALL=(ALL:ALL) ALL

%sudo表示sudo组,第一个ALL表示地址,如localhost或ip等。(ALL:ALL)是可选项,表示以(用户:用户组)身份执行,如果没有这一项,则以自己账号执行命令;最后一个ALL表示所有命令(/bin/su, /bin/mkdir, /bin/chown等)。

题外话:因为sudo每次使用都需要输入密码,有些繁琐,试着通过配置免去密码输入。

依照上面格式添加配置

star    ALL=(ALL:ALL) NOPASSWD:ALL
%sudo   ALL=(ALL:ALL) ALL

发现没用,因为star属于sudo组,被组的配置覆盖了,于是决定从sudo组中退出

gpasswd -d star sudo
groups star

处理完之后发现命令id 和 id star的输出不一样,id的结果里面还有sudo组,而id star已经没有了。重登录,id也没有sudo组了。

修改完之后有时候新开一个终端,第一次执行sudo command时,会让你输密码,之后就不会。重登录,也没这个问题了。

回过头查看,其实不把账号从sudo组里删除,除了第一次要输入密码,后面的sudo命令也不需要密码,但是直接删掉更省事些。

中间发生了一个插曲:修改sudoers文件时,修改权限不小心用了

chmod o+w /etc/sudoers

本来是想 u+w,输错了。

结果使用star账号再执行sudo命令时,提示

sudo: /etc/sudoers is world writable

想通过sudo su切换到root也是这个提示,死循环,慌了。。。

百度一下,发现还有别的命令:

pkexec chmod 0440 /etc/sudoers

whatis pkexec --  Execute a command as another user

默认使用root账号执行,只要知道root密码就行。一切正常。

 

创建账号使用的是/usr/sbin/useradd命令,最好使用绝对路径,因为不同的创建账户命令参数格式略有不同。

/usr/sbin/useradd -c koala -d /opt/code/home/koala  -g staff -G apache -m -u 9013 koala 

-d : home目录

-g : 主要的所属组

-G : 其他所属组

-m : 创建home目录

-u : userID

最后的koala代表用户名,创建完后再为账号设置一个密码:

/usr/bin/passwd koala

创建完成后,可以在/etc/passwd文件中找到koala账户信息。但是新建账号默认是不能通过ssh访问的,接下来需要开通ssh登录,以便从外部访问。

vi /etc/ssh/sshd_config 

插入配置语句:

AllowUsers:koala

如果想让所有用户都能访问,直接:

AllowUsers *

重启ssh服务:

/bin/systemctl restart sshd.service

经过这些步骤后,就可以直接ssh登录koala账号了

ssh koala@ip

然而每次登陆都需要输入一次密码,比较繁琐,一个登录免密码的小技巧:

在创建的koala账户下,进入~/.ssh目录(如果没有则创建一个),

新建authorized_keys文件,写入需要登录koala的远程账号的公钥信息。即,加入是要从另一台机器(IP假设为192.168.66.60)的test账号登录koala账号,

则test账号下的~/.ssh目录下有两个文件id_rsa和id_rsa.pub,分别代表私钥和公钥,把id_rsa.pub里的内容复制到koala账户下的~/.ssh/authorized_keys文件中。

这样以后每次从test账号登录koala账号时,都不需要输入密码。

 

补充:如果经过以上步骤,还是不能免密码登录,则需要检查一下权限:

◦authorized_keys 文件必须是600权限(也就是-rw——-)或者644
◦.ssh目录必须是700权限(也就是drwx——)
◦/home/work目录 必须是 755权限 即drwxr-xr-x

其原因是,不能让所有者之外的用户对authorized_keys文件有写权限,否则,sshd将不允许使用该文件,因为它可能会被其他用户篡改。

如果authorized_keys文件、$HOME/.ssh目录 或 $HOME目录让本用户之外的用户有写权限,那么sshd都会拒绝使用 ~/.ssh/authorized_keys 文件中的key来进行认证的。

在man sshd中有这段话:

~/.ssh/authorized_keys
             Lists the public keys (RSA/ECDSA/DSA) that can be used for logging in as this user.  The format of this file is described above.  The content of the file is not highly
             sensitive, but the recommended permissions are read/write for the user, and not accessible by others.

             If this file, the ~/.ssh directory, or the user’s home directory are writable by other users, then the file could be modified or replaced by unauthorized users.  In this
             case, sshd will not allow it to be used unless the StrictModes option has been set to “no”.

引用自:http://www.centoscn.com/CentosBug/softbug/2013/1204/2193.html

posted on 2016-10-25 11:38  SimbaStar  阅读(6629)  评论(0编辑  收藏  举报