新建账号需要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. java关键字:synchronized

    JAVA 如何共享资源 关于synchronized函数: java具有内置机制,可防止某种资源(此处指的是对象的内存内容)冲突.由于你通常会将某class的数据元素声明为private,并且只经由其 ...

  2. meta 标签 详细说明

    meta 标签可提供页面元素信息, 使用键值对的定义方式,可以记录网页上的主要信息,也可以自定义键值对 属性 content(必须),name,http-equiv,scheme,lang 常用 me ...

  3. 写出形似QML的C++代码

    最开始想出的标题是<Declarative C++ GUI库>,但太标题党了.只写了两行代码,连Demo都算不上,怎么能叫库呢……后来想换掉“库”这个字,但始终找不到合适词来替换.最后还是 ...

  4. C# 读取和配置IniFile

    自定义IniFile操作类 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  5. OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)

    2014-06-26 Created By BaoXinjian

  6. OAF_文件系列8_实现OAF处理Excel的JXL包详解

    写入/读取Excle,设置打印样式排版,锁定列与行,设置打印标题,给Excle加密. http://www.blogjava.net/xing5156/archive/2011/11/18/36422 ...

  7. STM32 USB转串口驱动 Virtual COM Port Driver(V1.3.1)

    将stm32的USB口接到PC端后,PC端会要求安装一个STM32 USB Virtual COM Port Driver,然后就可以用串口调试助手对其操作了

  8. Linux 如何解决 xhost: unable to open display ""

    [root@host02 ~]# vncservice You will require a password to access your desktops. Password: Verify: x ...

  9. eclispe中在线安装maven插件

    启动Eclipse之后,在菜单栏中选择Help,然后选择Install New Software-,接着你会看到一个Install对话框, 点击Work with:字段边上的Add按钮,你会得到一个新 ...

  10. 如何让NGUI的对象在3D模型之上

    假设场景中有两台摄像机, 一台是NGUI的摄像机, 另外一台是投影摄像机. 投影摄像机看的是3D模型, Depth比NGUI的摄像机要大, Clear Flags设置的是Depth only. 现在想 ...