一、su命令
1、语法:(英文全拼:switch user)
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
2、参数说明:
-f或--fast:不必读启动档(如 csh.cshrc 等),仅用于 csh 或 tcsh。
-m,-p 或 --preserve-environment:执行su时不改变环境变量。
-c command 或 --command=command:切换帐号并执行指令(command)后再变回原来使用者。
-s shell或--shell=shell:指定要执行的shell(bash csh tcsh 等),预设值为 /etc/passwd 内的该使用者(USER) shell。
--help 显示说明文件
--version 显示版本资讯
-,-l 或--login:这个参数加了之后,就好像是重新 login 为该使用者一样,改变环境变量及目录。
USER 欲变更的使用者帐号
ARG 传入新的 shell 参数
3、常用示例
切换root账号并在执行ls指令后退出变回原使用者
su -c ls root
切换至postgres,不改变环境变量
su -postgres
切换至postgres,改变环境变量和工作目录(-的左右两边都有空格)
su - postgres
二、sudo命令
1、语法:
sudo [ -Vhl LvkKsHPSb ] │ [ -p prompt ] [ -c class│- ] [ -a auth_type ] [-u username│#uid ] command
2、参数说明:
-V:显示版本编号。
-h:显示版本编号及指令的使用方式说明。
-l:显示出自己(执行 sudo 的使用者)的权限。
-v:sudo在第一次执行时或是在 N 分钟内没有执行(N 预设为五分钟)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码。
-k:将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)。
-b:将要执行的指令放在后台执行。
-p prompt:可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称。
-u username/#uid:无此参数代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令。
-s:执行环境变量中的SHELL所指定的shell,或是 /etc/passwd 里所指定的shell。
3、使用方式
如果短时间内使用其他用户的身份完成某个命令,可以使用 sudo 命令。使用dudo之前需要以root身份修改 /etc/sudoers配置文件,否则sudo命令无法使用。修改命令如下:
# sudoers文件追加写权限
chmod +w /etc/sudoers
# 编辑sudoers文件
vi /etc/sudoers
如上图,第一个ALL代表可以执行sudo命令的主机(ALL表示任何主机);第二个ALL代表可以执行sudo命令的时候以哪个用户的身份执行(ALL表示root用户);第三个ALL代表可以sudo可以执行的命令,多个命令可以用”,”分隔(ALL表示所有命令)
注意:上图红框中为我新加的数据,含义是postgres用户可以执行/usr/bin目录下的所有命令,但不允许执行该目录下的passwd(修改密码)命令。
以root身份在/root目录创建test文件夹
sudo mkdir /root/test
如下图,修改完配置文件后,postgres账户可以用root权限执行mkdir命令,否则会提示“无权限在该目录创建文件”。首次执行该命令要求输入postgres账户的密码。
以root身份删除在/root目录下的test文件夹
sudo rm -rf /root/test
总结
word文档下载地址:
Linux系统常用的2种切换用户命令