例子中使用账号learner执行了命令pwd。当不使用选项-c时则为切换用户:
[root@centos7 ~]# whoami root [root@centos7 ~]# su learner [learner@centos7 root]$ whoami learner
注意如果是从普通账号切换至root或其他账号时,需要输入对应密码。
带与不带选项-或-l或--login切换账号时,会有环境变量上的区别。同时带这些选项也会把当前目录切换至目标账号的家目录。使用命令exit可以退出:
[root@centos7 ~]# pwd /root [root@centos7 ~]# su - learner 上一次登录:日 10月 23 18:22:23 CST 2016pts/5 上 [learner@centos7 ~]$ pwd /home/learner [learner@centos7 ~]$ exit 登出 [root@centos7 ~]# whoami root
19、sudo 作为另一个用户来执行命令
sudo [OPTION]... command
linux中为了安全,往往并不允许每个用户都用root账号登录系统,通常都会创建一些普通用户。但有些命令是只有root用户才能执行的,为了更灵活的分配权限,使普通用户也能执行某些root命令,我们可以使用sudo来完成这一任务。
sudo通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别。为了获得某一特权项,有资格的用户只需简单地在命令行输入sudo与命令之后,按照提示再次输入口令(用户自己的口令,不是root用户口令)。
使用-l选项可以查看当前用户可以执行的root命令有哪些:
[learner@centos7 ~]$ sudo -l We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for learner: 对不起,用户 learner 不能在 centos7 上运行 sudo。
这里看到learner用户并不能使用sudo。若要设置用户使用sudo,需要编辑sudo的配置文件/etc/sudoers。该文件中以符号#开头的都是注释行,用来解释或描述配置,并不起实际作用。
需要使用命令visudo来编辑修改/etc/sudoers(使用方法和使用vi/vim编辑器类似,后面有文章详细描述)。
配置文件中的一个条目格式为:
user MACHINE=COMMANDS
如给用户learner在所有地方(ALL)运行任何命令(ALL):
learner ALL=(ALL) ALL
之后查看:
[learner@centos7 ~]$ sudo -l
[sudo] password for learner:
匹配此主机上 learner 的默认条目:
....
....
用户 learner 可以在该主机上运行以下命令:
(ALL) ALL
当然并不会给普通用户所有权限,这里只是举例。通常的做法是给某个用户某些特定的命令权限,如允许用户tom在主机machine上执行立即关机的命令,在/etc/sudoers中添加条目:










