新建账号需要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. JVM内存模型和性能优化 转

    JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型:      多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...

  2. TObject、Pointer、Interface的转换

    unit Unit4; ));   ));   ));   //将Obj转为接口   //LInf1 := ITest(Pointer(LObj1));       //无法转换了,丢失了接口信息   ...

  3. uml和模式01

    // */ // ]]> uml和模式01 1. UML 2. 用例图 3. 用例和类的关系 4. 类图 1 UML 模型语言(Modeling Language 检查ML)是一种设计语言,人们 ...

  4. 升级Dell的R810固件版本

    1.到下面链接去下载win32版本的EXE固件 http://www.dell.com/support/home/cn/zh/cndhs1/Drivers/DriversDetails?driverI ...

  5. Docker Registry服务启动过程浅析

    当我们pull一个registry镜像或者自己制作一个镜像之后,使用命令docker run -d -p 5000:5000 registry,就可以启动一个私有容器服务,那么究竟是怎么做到的呢? 首 ...

  6. PHP入门part4

    字符串函数 strlen(string); 获取字符串的长度,这里的长度是指该字符串的字节长度:!!utf-8里英文字母和符号占1个字节,中文是占3个字节. substr(string,number1 ...

  7. Hadoop总结篇之三---一个Job到底被提交到哪去了

    我们会定义Job,我们会定义map和reduce程序.那么,这个Job到底是怎么提交的?提交到哪去了?它到底和集群怎么进行交互的呢? 这篇文章将从头讲起. 开发hadoop的程序时,一共有三大块,也就 ...

  8. JVM体系结构与工作方式

    JVM全程是java virtual machine(java虚拟机). 以计算为中心来看计算机的体系结构可以分为以下几个部分: 1.指令集:这个计算机所能识别的机器语言的命令集合; 2.计算单元:能 ...

  9. Netty服务端与客户端(源码一)

    首先,整理NIO进行服务端开发的步骤: (1)创建ServerSocketChannel,配置它为非阻塞模式. (2)绑定监听,配置TCP参数,backlog的大小. (3)创建一个独立的I/O线程, ...

  10. Redis应用配置项说明

    近期整理了下项目中Redis配置参数,以便学习备用~ #指定内存大小,格式为1k 1GB 1M,单位不区分大小写 # 1k  => 1000 bytes # 1kb => 1024 byt ...