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

su命令

  • 切换用户 命令su的格式:su – username;普通用户的su命令不加username时,就是切换到root用户
[wuzhou@linux-128 ~]$ su -
密码:
上一次登录:三 11月  1 22:38:52 CST 2017pts/0 上
[wuzhou@linux-128 ~]$ su - user7
密码:
[user7@linux-128 ~]$ pwd
/home/user7
  • su切换用户,加不加“-”都可以,但还是有区别的;不加“-”切换用户后,环境变量还是上一个用户的;
[root@linux-128 ~]# su wuzhou        
[wuzhou@linux-128 root]$ pwd
/root
[wuzhou@linux-128 root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[wuzhou@linux-128 root]$ exit
    • 号加上后会初始化当前用户的各种环境变量
[root@linux-128 ~]# su - wuzhou
上一次登录:三 11月  1 22:42:05 CST 2017pts/0 上
[wuzhou@linux-128 ~]$ pwd
/home/wuzhou
[wuzhou@linux-128 ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/wuzhou/.local/bin:/home/wuzhou/bin
su - -c “命令” username
  • 指定某个用户去执行某个命令;
[root@linux-128 ~]# su - -c "touch /tmp/wuzhou.111" wuzhou
[root@linux-128 ~]# ls -l /tmp/wuzhou.111
-rw-rw-r-- 1 wuzhou wuzhou 0 11月  1 22:50 /tmp/wuzhou.111
root@linux-128 ~]# su - wuzhou
上一次登录:三 11月  1 22:50:40 CST 2017pts/0 上
[wuzhou@linux-128 ~]$ su - -c "touch /tmp/user7.111" user7
密码:
[wuzhou@linux-128 ~]$ ls -l /tmp/user7.111
-rw-rw-r-- 1 user7 user7 0 11月  1 22:52 /tmp/user7.111
切换到用户user5时,提示错误,发现是家目录不对
[root@linux-128 ~]# su - user5
su: 警告:无法更改到 /home/wuzhou 目录: 权限不够
[wuzhou@linux-128 ~]$ tail -5 /etc/passwd
user3:x:1004:1003::/home/user3:/sbin/nolongin
user4:x:1005:1003::/home/user4:/sbin/nolongin
user5:x:1007:1003::/home/wuzhou:/sbin/nologin
然后我们修改用户的家目录
[root@linux-128 ~]# usermod -d /home/user5 user5
再次切换用户,有提示这个帐户目前不可用,原因是家目录里面是空的
[root@linux-128 ~]# su - user5
上一次登录:三 11月  1 22:40:06 CST 2017pts/0 上
This account is currently not available.
[root@linux-128 ~]# ls /home/user5
  • 小知识:/etc/skel/ 这个目录时家目录文件的模板,如果家目录没有这些文件,直接拷贝过去。
[root@linux-128 ~]# cp /etc/skel/.bash* /home/user5/

sudo命令

  • sudo可以使一个普通用户临时去执行root的一个命令或者脚本,通常情况下都是给普通用户授权root用户的身份;不使用su的原因是,su切换的root用户下,需要root的密码,告知密码很不安全;默认情况下只有root用户才能使用sudo命令,普通用户要想使用sudo命令,必须要root预先设定;
  • 使用visudo命令编辑配置文件/etc/sudoers,如果没有这个命令,需要用yum install -y sudo 找到下面内容
## Allow root to run any commands anywhere //允许root用户去运行所有的命令,在任何地方
root    ALL=(ALL)       ALL命令
user7    ALL=(ALL)       NOPASSWD: /usr/bin/ls,/usr/bin/cat  //我们可以在下面添加一些用户

ALL=(ALL) 左边ALL 表示所有的登陆方式,远程,ip/ip段 (ALL)表示以所有的用户登陆;NOPASSWD: 不需要输入密码

[root@linux-128 ~]# su - user7
上一次登录:三 11月  1 23:36:44 CST 2017pts/0 上
[user7@linux-128 ~]$ sudo ls /root/
11.txt	    12	 1.log	  321.txt.bak	   工号.txt
11.txt.bak  123  321.txt  anaconda-ks.cfg

例子:只允许普通用户账户登录,而普通用户登录后,不需要输入密码就能使用su切换到root账户下

  • 在visudo后面添加下面命令:
  • User_Alias USER_SU = wuzhou,user7 //做用户别名
  • Cmnd_Alias SU = /usr/bin/su //做命令别名
  • USER_SU ALL=(ALL) NOPASSWD: SU
[wuzhou@linux-128 ~]$ sudo su - user7
上一次登录:三 11月  1 23:51:53 CST 2017pts/0 上
[user7@linux-128 ~]$ sudo su -
上一次登录:三 11月  1 23:55:41 CST 2017pts/0 上
[root@linux-128 ~]# whoami
root

不允许root远程登录linux

/etc/ssh/sshd_config为sshd服务配置文件,默认允许root账户通过ssh远程登录linux。如果想要不允许root用户远程登录linux,具体操作方法:修改配置文件/etc/ssh/sshd_config,在文件中找到#PermitRootLogin yes 修改成PermitRootLogin no,保存后,重启sshd服务:

[root@linux-128 ~]# vi /etc/ssh/sshd_config
[root@linux-128 ~]# systemctl restart sshd.service

重新打开一个窗口,提示错误了,root不能远程登录 输入图片说明

这个时候我们可以登录普通用户,然后使用sudo命令切换到root用户下

[wuzhou@linux-128 ~]$ sudo su - root
上一次登录:四 11月  2 00:10:38 CST 2017从 192.168.88.1pts/2 上

转载于:https://my.oschina.net/u/3706916/blog/1559570

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值