限制root远程登录 su和sudo命令

9月21日任务

3.7 su命令

3.8 sudo命令

3.9 限制root远程登录

 

 

对于Linux而言,权限的重要性毋庸置疑!对于普通用户而言无法执行那些只有root用户才能有效的命令,导致工作无法有效进行;

系统管理员又不能将root密码告知普通用户,因为容易导致管理的混乱,并可能造成部分严重后果。通过su命令和sudo命令可以有效的解决这些问题!

su命令

Linux系统是一个多用户的操作系统,常常需要切换不同用户以实现多个需求。su 命令就是实现用户切换登录的

(root用户切换其他用户不要密码,反过来需要密码)

基本使用

使用方法:su [-] USER

 

添加-参数时,在切换到USER身份登录的同时,会加载其配置文件、环境变量,并切换到用户家目录;

实用用法

如何在不切换用户的前提下,使用其他用户的身份执行命令

su - -c "command" USER

[root@localhost ~]# su - -c "touch /home/castiel/test.log; ls -l /home/castiel/test.log" castiel
-rw-rw-r--. 1 castiel castiel 0 ... /home/castiel/test.log

# 执行su命令后,当前用户还是root,并没有切换成castiel
[root@localhost ~]# whoami
root
特殊实例

使用su -命令切换用户,当该用户家目录不存在时,会切换用户登录,但不会切换工作目录,且提示符将为 -bash-4.2$

[root@localhost ~]# useradd -M user1
[root@localhost ~]# su - user1
su: 警告:无法更改到 /home/user1 目录: 没有那个文件或目录
-bash-4.2$ pwd
/root
-bash-4.2$ whoami
user1

通过手动创建家目录并拷贝模板配置文件/etc/skel/.bash*,实现用户完整切换

[root@localhost ~]# mkdir /home/user1

[root@localhost ~]# cp /etc/skel/.bash* /home/user1

[root@localhost ~]# chown -R user1.user1 /home/user1
[root@localhost ~]# ls -ld /home/user1
drwxr-xr-x. 2 user1 user1 62 ... /home/user1

# 验证切换
[root@localhost ~]# su - user1
上一次登录:一 ... CST 2017pts/0 上
[user1@localhost ~]$

系统模板文件 /etc/skel/.bash*

[root@centos7 ~]# ls -l /etc/skel/.bash*
-rw-r--r--.  1 root root   18 ... /etc/skel/.bash_logout
-rw-r--r--.  1 root root  193 ... /etc/skel/.bash_profile
-rw-r--r--.  1 root root  231 ... /etc/skel/.bashrc

sudo 命令

编辑sudo的配置文件最好使用visudo命令(会检测语法),不要直接去修改其配置文件 /etc/sudoers

其中修改的最核心的一行代码

## Syntax:
##
##      user    MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
# 在这行后新添加用户user1的sudo命令
user1   ALL=(ALL)       /usr/bin/ls, /usr/bin/cat

3个ALL的含义:

  • 第一个ALL:主机、ip

  • 小括号内的ALL:user1将以什么用户身份执行

  • 后面的ALL:可以执行的命令

后面的命令必须是绝对路径表示,否则容易出错,多个命令可以以逗号和一个空格连接

# 使用visudo命令,当编辑错误时会校验出来
[root@localhost ~]# visudo
visudo:>>> /etc/sudoers:syntax error 在行 92 附近<<<
现在做什么?
选项有:
  重新编辑 sudoers 文件(e)
  退出,不保存对 sudoers 文件的更改(x)
  退出并将更改保存到 sudoers 文件(危险!)(Q)

# 输入e编辑修改
现在做什么?e

常规设置的规则,初次执行时需要输入用户user1的密码,短时间内再次执行不需要再次输入密码!

通过在command前加"NOPASSWD:",可以实现免密码执行。

user1 ALL=(ALL) NOPASSWD: /usr/bin/ls, /usr/bin/cat

需要注意的是:在执行sudo命令时提示输入的密码时执行sudo命令的当前用户的密码,而不是root等其他用户的密码!

sudo别名
  • 主机别名

## Host Aliases
# 可以写ip,也可以也主机名
Host_Alias  TESTSERVERS = 192.168.65.130, 192.168.65.133

# 配合核心代码使用
user1 TESTSERVERS=(ALL) ALL
  • 用户别名
## User Aliases
User_Alias TESTS = user1, test

# 配合核心代码使用
TESTS ALL=(ALL) ALL
  • 命令别名
## Command Aliases
Cmnd_Alias TEST = /usr/bin/ls, /usr/bin/cat

# 配合核心代码使用
user1 ALL=(ALL) TEST
  • 组别名
## 允许wheel组内的用户执行任意命令;允许test组内的用户执行ls,cat命令
%wheel  ALL=(ALL)       ALL
%test ALL=(ALL)     /usr/bin/ls, /usr/bin/cat
sudo命令参数
  • sudo -i

避免执行sudo时频繁输入密码。提示输入密码为当前账户的密码。没有时间限制。

执行后进入root账户,退回执行“exit”或“logout” 。

[user1@localhost ~]$ sudo -i
[sudo] password for user1:
[root@localhost ~]# whoami
root
  • sudo /bin/bash

会切换到root的bash下,但不能完全拥有root的所有环境变量,可以拥有root用户的权限。这个命令等同于sudo -s。

[user1@localhost ~]$ sudo /bin/bash
[sudo] password for user1:
[root@localhost user1]# whoami
root
  • sudo -s : 如上
[user1@localhost ~]$ sudo -s
[sudo] password for user1:
[root@localhost user1]# whoami
root
[root@localhost user1]# pwd
/home/user1
  • sudo su

登录到root,但并未切换到root的环境变量。

[user1@localhost ~]$ sudo su
[sudo] password for user1:
[root@localhost user1]# whoami
root
[root@localhost user1]# pwd
/home/user1
  • sudo su -

切换为root,可以使用root环境变量。等价于先切换为root,再执行su -命令。

[user1@localhost ~]$ sudo su -
[sudo] password for user1:
上一次登录:二 ... CST ...从 192.168.65.1pts/1 上
[root@localhost ~]# whoami
root
[root@localhost ~]# pwd
/root

实用小技巧

不通过密码登录root账户

不知道root用户密码,无法登录root,但是可以通过登录普通用户user

  • 在visudo内编辑user用户执行su命令时不需要密码

user ALL=(ALL) NOPASSWD: /bin/su
  • 在普通用户下执行 sudo su - root,这样就可以登录到root了

 

限制root远程登录
  • 编辑/etc/sshd/sshd_config文件

  • 找到"#PermitRootLogin yes"这一行(我的文件时第49行)

  • 修改为 “PermitRootLogin no”,保存后退出

  • 重启sshd服务

[root@localhost ~]# systemctl restart sshd.service

这里需要注意的是配置文件是sshd_config,而非ssh_config!

限制了root远程登录,可以通过登录普通用户,再结合su命令来执行部分root权限。以此实现root用户权限的合理使用。

转载于:https://my.oschina.net/u/3964535/blog/2120347

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值