一、su命令

su  切换用户

- + 用户名   切换用户 (root切换普通用户不用密码。反之则需要密码)

加 - 是切换到目录的家目录下 ,切换的彻底。不加则是切换到/root下用户

31ad177b6fc24fdf8ad0c889ad17dfbd.png-wh_

有的用户没有家目录,开头会是-bash-4.2$ c

解决方法:

  • 创建家目录,更改所有者和所属组

  • 目录下没有配置文件,复制/etc/skel/下所有文件拷贝到所创建的家目录中,

  • 更改所有者和所属组

ac606d4b4bf6fb18b8c0a0a389d0cf35.png-wh_

- -c +  "命令" +用户名      以某个用户的身份去执行命令

abd3e5fe982f085d859bfa26c6149495.png-wh_


sudo -i: 为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令。提示输入密码时该密码为当前账户的密码。没有时间限制。

sudo /bin/bash   : 这个命令也会切换到root的bash下,但不能完全拥有root的所有环境变量,比如PATH,可以拥有root用户的权限。这个命令和 sudo -s 是等同的。

二、sudo命令

sudo命令   让普通用户以指定用户的身份去执行某条命令,一般都是指定命令

visudo 打开     实际是/etc/sudoers.tmp文件

找到 

92            root    ALL=(ALL)                          ALL

用户    主机=(ALL)   NOPASSWD:(使用sudo不适用密码)所有命令(用绝对路径书写,也可以写一个命令或多个,用逗号分隔)

ecbe2a7d1c66b39933034f3bbf25eade.png-wh_

351b58b4346d96b4c03497edeb64066e.png-wh_

如果用户组出现在/etc/sudoers 中,前面要加%号,比如%beinan ,中间不能有空格;%beinan ALL=/usr/sbin/*,/sbin/*

sudo + 命令绝对路径  (第一次会提示输入密码,之后就不用)

取消程序某类程序的执行,要在命令动作前面加上!号; 在本例中也出现了通配符的*的用法;

注意的是:别名都要大写,小写会提示错误

Cmnd_Alias    命令别名。可以添加多个命令,则在92行输入,命令时则不用一个一个输入

d0bd3e680dbca4831d78827e0ca9e5f6.png-wh_

cfb6132c84b423b166c6196f3935dbc2.png-wh_

750a28700f18393cc666d29cfe984505.png-wh_

User_Alias  用户别名,将用户都加入用户组中,同一个用户组里的用户使用sudo

Host_Alias  主机别名。可以将主机都加入主机组内,在92行主机处用别名就好


三、限制root远程登录

服务器root用户不能登录,只允许普通用户登录。登陆上后,在登录root用户虚拟用户组,

实际则是用visudo命令,User_Alisa建立一个虚拟用户组,把用户添加到里面。

免密码可以su到root用户

再限制root用户远程连接。

4bd8bd5446cfe0f52115cff39031878e.png-wh_

0e2a5dc6c35f6932623d1d6857f1d74b.png-wh_

40b00e3845c4846d71053a788c916ad0.png-wh_

这里应该设置2个sudo的规则,一种是可以登录root,一种是不可以。



拓展:http://ask.apelearn.com/question/7467