新建账号需要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  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

sudo,linux 新建账号,并开通ssh登录的更多相关文章

  1. 在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)

    在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...

  2. Linux 利用Google Authenticator实现ssh登录双因素认证

    1.介绍 双因素认证:双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产生的一 ...

  3. ECS Linux 服务器公钥秘钥SSH登录

    Ubuntu 14.04.1为例,设置步骤如下: 一. 生成密钥的公钥和私钥 # ssh-keygen -t rsa Generating public/private rsa key pair. E ...

  4. Linux A机器免密码SSH登录B机器

    一.问题 如上,A机器经常需远程操作B机器,传输文件到B机器,每次输入帐号密码过于繁琐,下文通过ssh公钥能解免密码操作问题. 二.解决 1.方案 SSH认证采用公钥与私钥认证方式. 2.步骤 1) ...

  5. 解决ubuntu获取root账号并开通ssh

    1.设置root密码 sudo passwd root 2.修改etc/ssh/sshd_config文件 su - root vi /etc/ssh/sshd_config LoginGraceTi ...

  6. linux服务器账号密码正确无法登录

    登录服务器时,发现密码错误,输入后还是错误不能登录 最后发现登录日志中有pam_tally2(sshd:auth): user root (0) tally 53, deny 6 less /var/ ...

  7. 菜鸟玩云计算之十四:克隆虚拟机及ssh登录的问题

    菜鸟玩云计算之十四:克隆虚拟机及ssh登录的问题 今天早上,我的Ubuntu12.04.3LTS Desktop提示升级,升级. 从vm-ubuntu12.04克隆出虚拟机vm-thrift: $ s ...

  8. linux 创建用户 用户组,sudo,禁止root远程ssh登录

    创建用户  useradd hanli 为新用户设置密码(在root下可以为普通用户重置密码)  passwd hanli 创建用户组  groupadd  op 将用户添加到用户组  usermod ...

  9. Security基础(一):Linux基本防护措施、使用sudo分配管理权限、提高SSH服务安全

    一.Linux基本防护措施 目标: 本案例要求练习Linux系统的基本防护措施,完成以下任务: 修改用户zhangsan的账号属性,设置为2015-12-31日失效(禁止登录) 锁定用户lisi的账户 ...

随机推荐

  1. Mysql快速删除表中重复的数据

    表结构 CREATE TABLE T_VENDOR ( ID ) NOT NULL AUTO_INCREMENT COMMENT 'ID', COUNTRY ) DEFAULT NULL COMMEN ...

  2. List的Capacity

    Capacity 在.NET中List的容量应该只是受到硬件限制. 属性Capacity的真正含义,是创建List时给它预分配的容量. 一旦项的数量超过了当前的Capacity,Capacity会以 ...

  3. [java] jsoup 解析网页获取省市区域信息

    到国家统计局抓取数据, 到该class下解析数据 /** * jsoup解析网页 * @author xwolf * @date 2016-12-13 18:11 * @since V1.0.0 */ ...

  4. .NET操作Xml类

    using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...

  5. 解决“动软代码生成器在SqlServer中会将唯一索引识别为主键"的Bug

    动软代码生成器在SqlServer中,生成的代码会将唯一索引错误地识别为主键, 反编译源代码后,发现其中的SQL条件有误,现修复此Bug. 修复方法:将附件中的”Maticsoft.DbObjects ...

  6. hdu3294 girl‘s research

    题目大意:有多组数据,每组数据给出一个字符和一个字符串.该字符将变成’a‘,表示字符串中的所有该字符将变成’a‘,同时其他字符也将做相同的偏移.具体来说,如果该字符为’b‘,表示字符串中的’b‘都将变 ...

  7. C# HmacMD5 加密

    string HmacMD5(string source, string key) { HMACMD5 hmacmd = new HMACMD5(Encoding.Default.GetBytes(k ...

  8. c# winform 窗体起始位置 设置

    窗体起始位置为顶部中间,WinForm居中显示: ; ; this.StartPosition = FormStartPosition.Manual; //窗体的位置由Location属性决定 thi ...

  9. 51nod 1643 小Q的家庭作业

    题意: f(n) = sigma(gcd(i,n))  1 <= i <= n g(n) = sigma(f(d))    d | n n = x1 * x2 * ... * xm 其中 ...

  10. redis基础学习(不定期更新)

    redis简介 redis是Remote Dictionary Server(远程数据服务)的缩写 数据模型是key-value,是用C编写的 数据类型有string list hash set so ...