linux用户与文件基础命令介绍(1)

2019-09-23 09:14:50刘景俊

例子中使用账号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中添加条目: