3.7 su命令

3.8 sudo命令

3.9 限制root远程登录



3.7 su命令


#su 切换用户

#su - aming 加“-”是方便彻底切换用户,包括环境变量,用户配置参数等等。(大多数用“-”切换)

#su aming 

$pwd

/root 不加“-”,切换用户会在/root下


*当然 也可以在su的时候 以某用户的身份去执行一条命令

例如 以aming用户的身份去执行一条命令,不登录到aming用户下面去,也可以执行。

#su - -c "touch /tmp/aming.111" aming 

#ls -lt /tmp/ |head

#-rw-r--r--. 1 aming grp2 aming.111 

aming的组为grp2是因为本来就属于grp2组,可以从#id aming的参数看出。

#id aming

uid=1000(aming) gid=1005(grp2) 组=1005(grp2),1007(user5) 


#su - user5

密码:

鉴定故障。

(此处是因为user5之前做测试被写入了锁定参数,修改密码可以登录 )

$登出(ctrl-d)

#passwd user5

#su - aming

#su - user5

密码:

.

.

su:警告:无法更改到/home/user5 目录:没有那个文件或目录

-bash-4.2$ pwd

/home/aming此处是因为当时建立user5的时候没有创建家目录,没有用户的加载文件加载,导致前缀变成-bash-4.2$。

创建家目录是没法改变-bash-4.2.


改变方法是将/etc/skel的.bash_logout .bash_profile .bashrc 复制到user5的家目录下,并且将其目录及其子目录、文件都修改user5的所有者跟所属组。

#ls -la /etc/skel

#cp /etc/skel/.bash* /home/user5/

#chown -R user5:user5 !$

#su -user5  

#pwd 

/home/user5登录成功



3.8 sudo命令


可以让普通用户临时去执行一条命令,以指定用户的身份去执行。通常是给普通用户授权,以root的身份。以防普通用户利用root密码修改配置等等操作。


#visudo 可以打开打开sudo的配置文件

(*此处是最核心的一段语句参数)

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

意思即:允许root用户在任何地方去运行任何命令


test1 

让aming用户用root身份去执行ls,mv,cat命令。

#visudo

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

amingALL=(ALL)ls,mv,cat

:wq

退出,保存。


这里发现有语法错误(命令应该写绝对路径参数),其实这里是visudo的语法检测功能作用。

# visudo

>>> /etc/sudoers: 语法错误 near line 93 <<<

现在做什么?^[

选项有:

  重新编辑 sudoers 文件(e)

  退出,不保存对 sudoers 文件的更改(x)

  退出并将更改保存到 sudoers 文件(危险!)(Q)


按e重新编辑

## Allow root to run any commands anywhere

     92 root    ALL=(ALL)       ALL

     93 aming   ALL=(ALL)   /usr/bin/ls,/usr/bin/mv,/usr/bin/cat


#su -aming 

$ls /root

ls: 无法打开目录/root: 权限不够


用sudo 去ls /root,输入当前用户密码(密码只需要输入一次),成功。

$  sudo /usr/bin/ls /root/


我们信任您已经从系统管理员那里了解了日常注意事项。

总结起来无外乎这三点:


    #1) 尊重别人的隐私。

    #2) 输入前要先考虑(后果和风险)。

    #3) 权力越大,责任越大。


[sudo] aming 的密码:

1.txt  1.xtx  2.txt  a_(2).txtanaconda-ks.cfg  anaconda-ks.cfg.1  a.txt  temp.1


test2

添加user5进去,让user5免密使用sudo命令

#visudo 


## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

aming   ALL=(ALL)       /usr/bin/ls,/usr/bin/mv,/usr/bin/cat

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


[root@centos7 ~]# su - user5

[user5@centos7 ~]$ ls /root

ls: 无法打开目录/root: 权限不够

[user5@centos7 ~]$ sudo ls /root

1.txt  1.xtx  2.txt  a_(2).txtanaconda-ks.cfg  anaconda-ks.cfg.1  a.txt  temp.1

结果表示,使用sudo,成功免密 


设置命令别名

#visudo

## Networking

# Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool

Cmnd_Alias AMING_CMD = /usr/bin/ls,/usr/bin/mv,/usr/bin/cat


.

.

..


## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

aming   ALL=(ALL)       AMING_CMD

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


修改完毕后,su aming ,sudo 命令测试

[aming@centos7 ~]$ sudo ls /root

[sudo] aming 的密码:

1.txt  1.xtx  2.txt  a_(2).txtanaconda-ks.cfg  anaconda-ks.cfg.1  a.txt  temp.1

[aming@centos7 ~]$ sudo cat /root

cat: /root: 是一个目录

[aming@centos7 ~]$ sudo cat /root/a.txt

111

222

333

44

55

sudo命令无问题,visudo参数修改成功。


针对一个组进行限制。(修改此命令参数)

## Allows people in group wheel to run all commands

%wheel  ALL=(ALL)       ALL     



3.9限制root远程登录


免密登录root

#visudo 修改user的别名为AMINGS,然后添加用户

## User Aliases

## These aren't often necessary, as you can use regular groups

## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname

## rather than USERALIAS

# User_Alias ADMINS = jsmith, mikem

User_Alias AMINGS = aming, user1, user5

修改sudo命令参数

## Allow root to run any commands anywhere

root    ALL=(ALL)       ALL

aming   ALL=(ALL)       AMING_CMD

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

AMINGS  ALL=(ALL)       NOPASSWD: /usr/bin/su

切换至普通用户aming,#sudo su - ,成功免密切换root

[root@centos7 ~]# su - aming

上一次登录:三 2月  7 18:41:20 CST 2018pts/0 上

[aming@centos7 ~]$ sudo su -

上一次登录:三 2月  7 18:41:17 CST 2018从 192.168.189.1pts/0 上

[root@centos7 ~]# whoami

root



#[root@centos7 ~]# vi /etc/ssh/sshd_config 

# Authentication:


#LoginGraceTime 2m

PermitRootLogin no(*原本是#PermitRootLogin yes,把#去掉,然后把yes改成no)

#StrictModes yes

#MaxAuthTries 6

#MaxSessions 10


[root@centos7 ~]# systemctl restart sshd.service修改完成后 重启sshd服务

打开新的远程登录窗口,用passwd登录失败,说明Xshell被成功限制。

blob.png

利用putty登录普通用户aming

blob.png

#sudo su - 尝试在putty免密登录root

blob.png

putty成功登录。