新建帐号须要root帐号或sudo权限,sudo配置保存在/etc/sudoers文件。html
sudo的做用是容许系统管理员让普通用户执行一些或者所有的root命令,这样就能够不用频繁的切换到root帐号,也能够灵活的设置权限。执行命令本质上是运行一个个可执行文件,而每一个可执行文件都设置了权限,这样就对不一样的帐号区别对待了。apache
执行 ls -l /usr/bin/sudo获得结果:centos
---s--x--x. 1 root root 123832 Jul 24 2015 /usr/bin/sudo*
能够看到sudo文件属主/组都是root,前面的信息代表全部的用户都能运行它,s表明使用者临时具备该文件所属主/组的执行权限,因此运行它后,会以root权限运行。(若是没有这个s,则是以使用者本身的帐号运行,结果就是若是sudo须要读取只有root权限才能读的文件,那么没有设置s位的话就会失败)less
sudoers的配置格式通常为:koa
root ALL=(ALL:ALL) ALL %sudo ALL=(ALL:ALL) ALL
%sudo表示sudo组,第一个ALL表示地址,如localhost或ip等。(ALL:ALL)是可选项,表示以(用户:用户组)身份执行,若是没有这一项,则以本身帐号执行命令;最后一个ALL表示全部命令(/bin/su, /bin/mkdir, /bin/chown等)。ssh
题外话:由于sudo每次使用都须要输入密码,有些繁琐,试着经过配置免去密码输入。this
依照上面格式添加配置spa
star ALL=(ALL:ALL) NOPASSWD:ALL
%sudo ALL=(ALL:ALL) ALL
发现没用,由于star属于sudo组,被组的配置覆盖了,因而决定从sudo组中退出code
gpasswd -d star sudo
groups star
处理完以后发现命令id 和 id star的输出不同,id的结果里面还有sudo组,而id star已经没有了。重登陆,id也没有sudo组了。orm
修改完以后有时候新开一个终端,第一次执行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登陆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