Linux学习(十二)mkpasswd、su、sudo、限制root远程登录
一、mkpasswd
mkpasswd用来生成随机密码字符串。可以指定长度和特殊字符的长度:
[root@ruanwenwu01 ~]# mkpasswd
O7.alw5Wq
[root@ruanwenwu01 ~]# mkpasswd -l 12 -s 2
Jc;be0vpkT6=
-l 12代表长度是12,-s2代表包含两个特殊字符。
二、su
su用来切换用户。
[root@ruanwenwu01 ~]# su test1
[test1@ruanwenwu01 root]$ pwd
/root
直接用su test1,发现切换完成后,目录还在/root下,这说明并没有完全切换。要完全切换,就要这样:
[root@ruanwenwu01 ~]# su - test1
上一次登录:一 10月 30 07:34:43 CST 2017pts/0 上
[test1@ruanwenwu01 ~]$ pwd
/home/test1
[test1@ruanwenwu01 ~]$ ls -la
总用量 16
drwx------. 2 test1 grp2 83 10月 30 07:28 .
drwxr-xr-x. 3 root root 19 10月 29 20:45 ..
-rw-------. 1 test1 grp2 201 10月 30 07:28 .bash_history
-rw-r--r--. 1 test1 grp2 18 8月 3 2016 .bash_logout
-rw-r--r--. 1 test1 grp2 193 8月 3 2016 .bash_profi
其实,完全切换,就是在切换时加载用户的环境变量.bash_history,.bash_logout,.bash_profile。
我们还可以通过-c参数来不切换用户,以这个用户的身份来执行一些命令:
[test1@ruanwenwu01 ~]$ su - -c 'touch /tmp/b.txt' root
密码:
[test1@ruanwenwu01 ~]$ ls -l /tmp/b.txt
-rw-r--r--. 1 root root 0 10月 30 07:38 /tmp/b.txt
发现我们在test1的环境下,以root身份创建了b.txt这个文件。
有一种情况,用户没有家目录,那么su到它这个用户的时候,肯定也不能加载环境变量,也就不会变到它的家目录。这时候如果我们想恢复它的家目录怎么操作呢?答案就是,在/etc/skel/目录下有环境变量模板,我们直接拿过来用。
[test1@ruanwenwu01 skel]$ useradd -M test2
-bash: /usr/sbin/useradd: 权限不够
[test1@ruanwenwu01 skel]$ su root
密码:
[root@ruanwenwu01 skel]# useradd -M test2
[root@ruanwenwu01 skel]# cd /home/test2
bash: cd: /home/test2: 没有那个文件或目录
[root@ruanwenwu01 skel]# su test2
bash-4.2$ pwd
/etc/skel
bash-4.2$
没有家目录的用户,一su成bash-4.2$了。现在我们通过skel来恢复:
[root@ruanwenwu01 test1]# cp -r /etc/skel/ /home/test2/
[root@ruanwenwu01 test1]# ls -ld /home/test2/
drwxr-xr-x. root root 10月 : /home/test2/
[root@ruanwenwu01 test1]# tail -n3 /etc/passwd
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
test1:x::::/home/test1:/bin/bash
test2:x::::/home/test2:/bin/bash
[root@ruanwenwu01 test1]# tail -n3 /etc/group
test1:x::
grp2:x::
test2:x::
[root@ruanwenwu01 test1]# chown -R test2:test2 /home/test2
[root@ruanwenwu01 test1]# su test2
[test2@ruanwenwu01 test1]$
三、sudo
sudo命令的作用是让指定的用户能用别的身份(一般是root)来运行一些指定的命令。
配置sudo,使用visudo这个命令。比如我们现在给test1用户以root的身份运行ls命令,应该这样配置:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
test1 ALL=(ALL) NOPASSWD: /bin/ls, /bin/mv, /bin/su
现在看看配置之后的使用:
[root@ruanwenwu01 ~]# su - test1
上一次登录:一 10月 :: CST 2017pts/ 上
[test1@ruanwenwu01 ~]$ ls /root
ls: 无法打开目录/root: 权限不够
[test1@ruanwenwu01 ~]$ sudo ls /root/
anaconda-ks.cfg
发现配置完成之后,可以用sudo命令来执行ls进入/root/目录。
如果我们需要让一个用户组都可以执行ls命令怎么配置呢?看代码:
visudo:
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%grp2 ALL=(ALL) NOPASSWD: /bin/ls
[root@ruanwenwu01 ~]# visudo
[root@ruanwenwu01 ~]# tail -n3 /etc/group
test1:x::
grp2:x::
test2:x::
[root@ruanwenwu01 ~]# tail -n3 /etc/passwd
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
test1:x::::/home/test1:/bin/bash
test2:x::::/home/test2:/bin/bash
[root@ruanwenwu01 ~]# su - test1
上一次登录:一 10月 :: CST 2017pts/ 上
[test1@ruanwenwu01 ~]$ ls /root
ls: 无法打开目录/root: 权限不够
[test1@ruanwenwu01 ~]$ sudo ls /root
[sudo] password for test1:
anaconda-ks.cfg
四、限制root用户远程登录
如果root用户的密码被盗窃了,而你的服务器又没有限制使用密匙登录,那么久悲剧了。所以,限制root远程登录还是有一定的必要性的。那么怎么操作呢?
我们想一想,首先ssh那里应该禁止掉。但是禁止掉那里的话,我们想用root用户进行一些操作怎么办呢?对,可以用su命令切换过去,但是我们知道,在切换的时候需要输入密码,而我们root的密码又不能随便给普通用户。这时候我们想到了sudo命令,它里面有一个NOPASSWD选项,可以避免我们输入密码。
以下以test1用户能su到root举例具体配置:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
test1 ALL=(ALL) NOPASSWD: /bin/ls, /bin/mv, /bin/su
我们在92行,把/bin/su命令加进来了。
[root@ruanwenwu01 ~]# su - test1
上一次登录:一 10月 :: CST 2017pts/ 上
[test1@ruanwenwu01 ~]$ su -
密码: ^[csu: 鉴定故障
[test1@ruanwenwu01 ~]$
[test1@ruanwenwu01 ~]$
[test1@ruanwenwu01 ~]$ sudo su -
上一次登录:一 10月 :: CST 2017pts/ 上
最后一次失败的登录:一 10月 :: CST 2017pts/ 上
最有一次成功登录后有 次失败的登录尝试。
这说明visudo的配置已经成功了,现在我们要关闭ssh配置的root登录:
修改/etc/ssh/sshd_config:
#LoginGraceTime 2m
PermitRootLogin no
[root@ruanwenwu01 ~]# tail -n3 /etc/passwd
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
test1:x::::/home/test1:/bin/bash
test2:x::::/home/test2:/bin/bash
[root@ruanwenwu01 ~]# tail -n3 /etc/shadow
sshd:!!:::::::
test1:$$0eyKLd.F$KIslV0NC4ZRyrNtvdMemweo8c/.BhEDEWSDXCzRhjb1yfOzwvo646L1lcJFzXc.C9P2XZwgMYMDOGM6P6wcme/:::::::
test2:!!:::::::
[root@ruanwenwu01 ~]# vim /etc/ssh/ssh
ssh_config ssh_host_ecdsa_key.pub ssh_host_rsa_key
sshd_config ssh_host_ed25519_key ssh_host_rsa_key.pub
ssh_host_ecdsa_key ssh_host_ed25519_key.pub
[root@ruanwenwu01 ~]# vim /etc/ssh/sshd_config
[root@ruanwenwu01 ~]# systemctl restart sshd.service
现在登出,然后看还能否登录:

然后换成test1登录,看是否能su到root:
[test1@ruanwenwu01 ~]$ su root
密码:
^C
[test1@ruanwenwu01 ~]$ sudo su - root
上一次登录:一 10月 :: CST 2017从 192.168..1pts/ 上
最后一次失败的登录:一 10月 :: CST 2017从 192.168..1ssh:notty 上
最有一次成功登录后有 次失败的登录尝试。
成功了!
Linux学习(十二)mkpasswd、su、sudo、限制root远程登录的更多相关文章
- Linux centosVMware su命令、sudo命令、限制root远程登录
一.su命令 Linux系统中有些事情只有root用户才能做,普通用户不能做,这时候就需要临时切换到root身份了. [root@davery ~]# whoamiroot [root@davery ...
- Linux学习之二-Linux系统的目录结构
Linux学习之二-Linux系统的目录结构 在Linux的根目录下,有很多的目录,但是需要记住,对于Linux而言,一切皆文件.因此此处的目录也是文件.用ls / 命令就能看到根目录下的各类不同的目 ...
- (转)SpringMVC学习(十二)——SpringMVC中的拦截器
http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...
- Linux学习笔记(二) 文件管理
了解 Linux 系统基本的文件管理命令可以帮助我们更好的使用 Linux 系统,以下介绍几个常用的文件管理命令 1.pwd pwd 是 Print Working Directory 的简写,用于显 ...
- 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
3.7 su命令 3.8 sudo命令 3.9 限制root远程登录 su命令 切换用户 [root@centos_1 ~]# su - xiaobo [root@centos_1 ~]# su - ...
- su命令、sudo命令、限制root远程登录 使用介绍
第3周第3次课(4月4日) 课程内容:3.7 su命令3.8 sudo命令3.9 限制root远程登录 3.7 su命令 [root@jimmylinux-002 ~]# su - jimmy ...
- linux下禁止root远程登录和添加新用户
https://www.cnblogs.com/jianz/p/7979250.html 一.添加和root权限一样的用户 1. adduser admin passwd admin (修改密码) ...
- linux下禁止root远程登录
一.添加和root权限一样的用户 1. adduser admin passwd admin (修改密码) 2.修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示 ...
- 【Linux】Linux中在mate桌面和gnome桌面root自动登录设置
[Linux]Linux中在mate桌面和gnome桌面root自动登录设置 GLL_ 2020-03-05 11:41:40 762 收藏 1 分类专栏: Linux 文章标签: linux 版 ...
随机推荐
- [python学习笔记] 运算符
数学运算符 与大多语言相同的运算符就不介绍了.不同的地方会用 (!不同)标出 与java相同的运算符 , - , * , % , / 不同之处 除法 (!不同) / 与java不同,整数相除,结果为 ...
- Numpy中Meshgrid函数介绍及2种应用场景
近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法.但总觉得印象不深刻,不是太了解meshgrid的应用场景.所以,本文将进一步介绍Numpy中meshgrid的用法 ...
- asp.net core合并压缩资源文件引发的学习之旅
0. 在asp.net core中使用BuildBundlerMinifier合并压缩资源文件 在asp.net mvc中可以使用Bundle来压缩合并css,js 不知道的见:http://www. ...
- 7-21(排序) PAT排名汇总
计算机程序设计能力考试(Programming Ability Test,简称PAT)旨在通过统一组织的在线考试及自动评测方法客观地评判考生的算法设计与程序设计实现能力,科学的评价计算机程序设计人才, ...
- ThinkPHP中foreach和volist的区别
1.foreach标签foreach标签用于循环输出:foreach(name,item,key)name(必须):要输出的数据模板变量item(必须):循环单原变量key(可选):循环的key变量, ...
- tomcat manager 的用户权限配置,及环境变量CATALINA_HOME的错位问题
因为tomcat的manager是管理其他项目的发布.删除等操作的管理项目,所以需要为其设置登陆用户和密码,以及用户相应的访问权限,配置如下: tomcat-users.xml需要添加如下内容: &l ...
- poj2823一道纯单调队列
Sliding Window Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 32099 Accepted: 9526 ...
- 前端基础之初识 HTML
HTML HTML(Hypertext Markup Language)即超文本标记语言,是WWW的描述语言.设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便 ...
- JS类继承常用方式发展史
JS类继承常用方式发展史 涉及知识点 构造函数方式继承 1-继承单个对象 1.1 多步走初始版 1.2 多步走优化版 1.3 Object.create()方式 2-继承多个对象 2.1 遍历 Obj ...
- SVN版本控制图标经常延时显示或未显示问题解决方法
项目中,使用svn经常遇到,文件或文件夹图标延时显示或未显示的问题,终于找到办法解决 客户端:TortoiseSVN