linux系统的su命令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统的su命令相关的知识,希望对你有一定的参考价值。

我用的是一个培训班给改过的Linux,是thizlinux,现在我知道是修改Debian Linux给改的,在linux系统中登陆后输入su后提示输入密码,输入密码是正确的,但是它总是提示登陆失败,但用sudo -sh也是提示输入密码,输入后就能正常转化身份,希望能得到高手指点一二。谢谢。
问的是为什么su有这个命令而不能正常使用呢?而网上和书上都可以输入su使用。

sudo只是获得了root权限执行后面的命令,而su是需要切换用户,得到root的User ID和Group ID,相当于开启一个新的login session。

可能你的系统中为了安全性,设置为禁止切换到root用户,而只能通过sudo执行管理操作。

最后如楼上所建议的,如果是在学习Linux,最好还是装一个常见的发行版吧,出了问题也更容易找到解决的办法。
参考技术A 把你要su的用户加入wheel组看看,我用Gentoo,不知道一样不,原来用Debian的时候没这种问题,建议你直接用Debian,别用那种每人用的东西,你都不知道是不是他系统本身的问题

linux系统安全su命令及系统安全


一、su命令

1、用途及格式

  • 用途:用于切换用户
  • su - 目标用户

2、su、su 目标及su - 目标用户的区别

  • su-用户名:正确的格式切换用户
  • su 用户名:在系统显示的pwd在/home/tom,但是查询环境变量仍是切换前root的环境变量,相当于实际并没有切换到新的用户,无法实现后期操作
  • su:相当于 su - root

其中环境变量查询方法,在基础命令也提到过:echo $PATH;用“:”分隔

再回顾一个查询用户是否存在于系统:id 用户名

3、密码验证

  • root→任意用户,不验证密码
  • 普通用户→其他用户/root,验证目标用户的密码

这时就有个问题,su命令切换用户从安全的角度来说并不够安全;为什么呢?
大家想一想,若是普通用户→root,多人只要知晓密码就可以使用root,拥有了最高权限,这时网络隐患就会存在,那么如何能让普通用户不登录root也可以管理系统呢?这时就要引出sudo命令和visudo命令;

二、普通用户添加超级权限的方法

需要借助配置文件/etc/sudoers完成对普通用户添加超级权限的管理,以下为三种方法更改

  • 需要编辑sudo命令,配置文件sudoers的内容,如果更改错内容,不会报错,可以强制退出,所以此方法并不常用
  • visudo:编辑sudo的配置,不是配置文件,只是用vi调用了sudo的配置;通常使用此方法进行配置文件更改,并非只读
  • 将新建的用户加入到wheel组内

1、sudo命令

  • sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具
  • 借助sudo的配置文件/etc/sudoers完成对用户的管理

配置:

只有root可以新建用户,使用sudo无须切换环境变量即可新建用户,前提是需要编辑配置文件,

  • vim /etc/sudoers
  • 添加新建用户 例tom;加入一行新的配置(具体看下图)
    在这里插入图片描述

若一次增加多个用户,多个命令“,”分隔-

  • :wq! 强制退出;切换用户到tom su - tom
  • 创建用户 sudo useradd jerry:获得root权限添加用户jerry;查询用户是否创建成功:id jerry
    在这里插入图片描述
  • sudo -l:查询可以使用的权限
    在这里插入图片描述
  • sudo userdel -r jerry:删除用户jerry
    在这里插入图片描述

2、visudo命令

编辑sudo的配置,不是配置文件,只是用vi调用了sudo的配置;通常使用此方法进行配置文件更改,并非只读;简而言之就是visudo其实是打开一个文件,让你编辑这个文件的内容,这个文件就是/etc/sudoers,用的编辑器默认是vi。
那么问题来了,为什么不用直接打开这个文件然后编辑其中的内容呢?
根据visudo的使用说明,如果你用visudo来编辑这个文件的话,它会帮你自动做很多事情,比如说语法检查、加锁防止别人同时修改这个文件等等,所以,强烈建议用户使用visudo,不要直接修改。

配置:

  • 切换到root,使用命令visudo
    在这里插入图片描述
  • 编辑加一条内容:需要使用绝对路径
    在这里插入图片描述
  • 用vi调用文件(错误有报警) 报错后enter出现选项
    在这里插入图片描述

3、wheel组

配置:
wheel:管理员组,拥有自大权限,增加用户时,可以加入wheel组即可

  • gpasswd -a jerry wheel
    在这里插入图片描述
  • wheel可以不设置密码,如下
    • 若设置用户不需要密码时加入wheel时,去掉注释#激活
    • NOPASSWD:设置不需要用户密码
      在这里插入图片描述
      切换用户时正常输入密码,但是切换用户之后的操作无须密码
      在这里插入图片描述

4、查看sudo操作记录

  • 需启用defaults logfile 配置
  • 默认日志文件:/var/log/sudo
    查看系统安全日志的目录:cat /var/log/secure在这里插入图片描述
    sudo存在secuer内,还可以进入visudo配置文件最后增加一行
    Defaults logfile="/var/log/sudo"
    下次sudo的日志就可以在此路径查看
    在这里插入图片描述

三、添加用户方法

3.1、使用别名增加用户:Alias

若同时增加很多用户的时候,减少工作量可以使用别名,别名需要大写
在这里插入图片描述
在这里插入图片描述
同样添加主机也可以使用别名,别名需要大写
在这里插入图片描述

3.2、通配符增加用户

  • *:代表所有
  • !:非,不可以
    在这里插入图片描述

3.3、实例

要求:建立用户张三,限制张三不可以本机ip地址
命令:useradd 张三
zhangsan ALL=ALL,!/sbin/ifconfig
在这里插入图片描述

三、PAM安全认证

1、su命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可以借助于PAM认证模块,只允许极个别用户使用su命令进行切换

2、PAM认证概念

  • PAM(Pluggable Authentication Modules)可插拔式认证模块
    • 是一种高效而且灵活便利的用户级别的认证方式
    • 也是当前linux服务器普通使用的认证方式

3、PAM认证原理

  • 一般遵循的顺序
    • service(服务)→PAM(配置文件)→pam_*.so
  • 首先要确定哪一项服务,然后加载响应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lin64/security下)进行安全认证
  • 用户访问服务器时,服务器的某一个服务程序把用户的请求发送到PAM慕课进行认证
  • 不同的应用程序锁对应的PAM模块是不同的

4、PAM的配置文件

查看某个程序是否支持PAM认证,可用ls命令查看配置文件路径:/etc/pam.d
在这里插入图片描述
示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su

  • 查看su的PAM配置文件:vim /etc/pam.d/su
    • 每一行都是一个独立的认证过程
    • 每一行可用区分三个字段
      • 认证类型
      • 控制类型
      • PAM模块及其参数在这里插入图片描述
        实例:限制所有人不能su - root
        首先打开pam配置文件
        vim /etc/pam.d/su
        启用认证:auth(authentication):身份认证;auth加上注释“#” 在这里插入图片描述
        其次进入/etc/login.defs,最后一行加入:
        SU_WHEEL_ONLY yes:只能允许wheel组的成功使用su这个命令切换到root用户
        在这里插入图片描述
        这时不在wheel组的用户就不可以用su命令切换到root1;系统提示拒绝权限
        在这里插入图片描述
        验证:进入到/etc/login.defs内把tom加入wheel组
        在这里插入图片描述
        这时切换就可以操作
        在这里插入图片描述

5、PAM安全认证流程

认证流程四个过程

  • 程序开始
  • 验证开始
  • 验证结束
  • 程序后续动作
    认证流程的四个状态
  • required:验证失败也继续下一步,走完四个流程–>验证结束
  • requisite:验证失败直接–>验证结束
  • sufficient:验证失败也继续下一步,走完流程
  • optional:不论失败成功,已经是最后一个流程,–>验证结束
    在这里插入图片描述

四、系统引导和登录控制

1、开关机安全控制

1.1、调整BIOS引导设置

  • 将第一引导设备设为当前系统所在硬盘
  • 禁止从其他设备(光盘、U盘、网络)引导系统
  • 将安全基本设为setup,并设置管理员密码

1.2、GURB限制

还记得之前的章节,忘记root密码时,进入救援模式无须输入之前的密码就可以直接更改root密码,安全性变低;那么可以通过更改grub密码来提供安全性

1.1.1、更改gurb密码

grub2-setpassword :设置grub密码
在这里插入图片描述
这时重启虚拟机系统,并在GRUB2启动屏显时,按下e键进入编辑模式,这时是需要密码才可以更改root密码,更改之后ctrl+x,退出当前界面grub2菜单进入系统

1.1.2、生成秘钥

生成秘钥:给密码加密,增加密码难度
使用grub2-mkpasswd-pbkdf2生成秘钥
在这里插入图片描述
在这里插入图片描述
vim grub.cfg,查看系统就自动密码加密,无须人工进入配置文件编辑
配置文件:/etc/grub2.d
还可以更改用户名zhangsan,隐藏root,实际root就是zhangsan
在这里插入图片描述

2、终端登录安全控制

2.1、限制root在安全终端登录

  • 安全终端配置:/etc/securetty
  • 终端tty1-6,终端切换
    实例:进制终端tty2登录root
    vim /etc/securetty
    tty2前面加注释#
    登录用户使用tty2的终端就无法登录用户了

2.2、限制普通用户登录root

使用情景:主要用户服务器停机维护了,其他用户登录会有个提示,比如“系统正在维护”,创建/etc/nologin,echo “系统正在维护” > /etc/nologin即可
实例
echo “系统正在维护” > /etc/nologin即可
/etc/nologin :这个文件是默认没有,需要创建,创建touch就无法登录终端了
在这里插入图片描述
这时登录root,页面会显示hello word
在这里插入图片描述
恢复原状 删除nologin:rm -rf etc/nologin
在这里插入图片描述

2.3、端口禁止远程

以下以tcp 22端口号举例,如何修改端口号从而不让root远程
在这里插入图片描述

问:不让root远程,首先是ssh服务,tcp的22端口
解决:

  • ssh服务配置默认文件:/etc/ssh/sshd_config
    vim /etc/ssh/sshd_config
    • 首先修改端口号:
      原本是默认 #Port 22;更改默认的端口号,去掉注释,改成随便的数字,比如2222
      在这里插入图片描述
      在这里插入图片描述
    • 其次不让root登录:系统默认是允许root
      在这里插入图片描述
      去掉root,yes 改成 no
      在这里插入图片描述
  • 最后重启服务:更改配置文件之后需要重启:systemctl restart ssh
    -
    查看端口号:netstat -antp | grep 22
    在这里插入图片描述
    这时断开系统,再次连接就需要更改端口号为:2222,才能连接成功
    在这里插入图片描述

六、弱口令检测

6.1、概述及方法

John the Ripper是一款开源的密码破解工具,能够在已知密文的情况下快速分析出明文的密码子串,支持DES、MD5等多种加密算法,而且允许使用密码字典来进行暴力破解

  • 安装JR工具
    • 安装方法 make clean 系统类型
  • 检测弱口令账号
    • 获得linux/unix服务器的shadow文件
    • 执行john程序,将shadow文件最为参数
  • 密码文件的暴力破解
    • 准备好密码字典文件,默认为password.lst
    • 执行john程序,结合–wordlist=字典文件

6.2、实例

  1. 下载john工具压缩包并解压
    在这里插入图片描述
  2. make clean linux-x86-6:编译
    在这里插入图片描述
  3. 生成可执行文件john
    在这里插入图片描述
  4. cp /etc/shadow /root/shadow.txt:复制文件
    /john /root/shadow.txt:执行暴力破解密码文件
    在这里插入图片描述

6.3、字典破解

  • 对于密码的暴力破解,字典文件的选择很关键
  • 只要字典文件足够完整,密码破解只是 时间上的问题。因此,“什么样的密码才足够强壮”取决于用户的承受能力,有人认为超过 72 小时仍无法破解的密码才算安全,也可能有人认为至少暴力分析一个月仍无法破解的密码才 足够安全。
  • John the Ripper 默认提供的字典文件为 password.lst,其列出了 3000 多个常见的弱口 令。如果有必要,用户可以在字典文件中添加更多的密码组合,也可以直接使用更加完整的 其他字典文件
    • 执行 john 程序时,可以结合“–wordlist=”选项来指定字典文件的位置,以便 对指定的密码文件进行暴力分析

七、网络端口扫描-NMAP

7.1、概念

  • 一款强大的网络扫描、安全监测工具
  • 官方网站:http://nmap.org/
  • ecntos 7.3光盘中安装包 nmap-6.40-7.el7.x86_64.rpm

7.2、NMAP扫描

基本格式

nmap [扫描类型][选项] <扫描目标...>
-sU ip地址:扫描udb端口
-sP:p相当于ping
-P:只ping 检查主机是否存活,后面跟ip地址-机器数;1-30或者245.0-24/表示一个网段的30/255台机器都扫描
-sP -n:加速ping
-n:加速;不进行域名解析增加速度
-P0 :扫描之前不建立三次握手连接,即不操作ping,直接扫描
-A:扫描显示的非常完全 
-sS:只执行两次握手,没有最好一次握手(确认过程);S:syn的缩写
-sT:完整的三次握手过程,扫描TCP
-sF:只检测FIN包
-p 端口号 IP地址:指定端口扫描

7.3、实例

  • nmap 127.0.0.1:扫描127.0.0.1
    在这里插入图片描述
  • nmap -sU 127.0.0.1:扫描127.0.0.1的udb端口
    在这里插入图片描述
  • nmap -sP 192.168.245.1-30:扫描主机192.168.254.1的30个及其是否存活

在这里插入图片描述

  • nmap -sP -n 192.168.254.1-30:加速扫描主机192.168.254.1的30个及其是否存活
    在这里插入图片描述
  • namp -P0 -n 192.168.245.1-30:直接扫描主机192.168.254.1的30台主机在这里插入图片描述
  • nmap -A -n 192.168.245.1:详细扫描主机192.168.245.1
    在这里插入图片描述
  • namp -p 20-21 192.168.245.0/24:扫描是否开始ftp服务,ftp端口号是20 21
    在这里插入图片描述

以上是关于linux系统的su命令的主要内容,如果未能解决你的问题,请参考以下文章

linux系统的su命令

linux系统没有权限使用su命令解决办法?

Linux系统中用户切换的命令为su

在Linux系统中应用su和sudo

在Linux系统中应用su和sudo

linux系统命令学习系列-用户切换命令su,sudo