Linux命令:su、sudo
su - run a command with substitute user and group ID
su [options] [-] [USER [arg]...]
用户替换用户的 UID 和 GID 。
当没有任何的参数的时候,su 默认情况下会运行一个超级管理员也就是 root 的 shell (这个shell是交互式的)。
[hp@localhost ~]$ su
Password:
[root@localhost hp]#
为了向下兼容,su 命令在默认的情况下不会更改当前的目录,只会设置 HOME 和 SHELL 的环境变量,如果切换的用户不是 root 的话,还会修改 USER 和 LOGNAME。
[root@localhost ~]# pwd
/root
[root@localhost ~]# su hp
[hp@localhost root]$
[hp@localhost root]$ pwd
/root
[hp@localhost ~]$ echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/home/hp
/usr/bin/bash
hp
hp
[hp@localhost ~]$ su
Password:
[root@localhost hp]# echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/root
/bin/bash
hp
hp
[root@localhost ~]# echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/root
/bin/bash
root
root
[root@localhost ~]# su hp
[hp@localhost root]$ echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/home/hp
/bin/bash
hp
hp
手册推荐使用长格式的 --login 选项或者是短杠 - ,这是为了避免混乱的环境造成的影响,使用 - -login 可以修改上面的四个变量,同时会更改目标用户的主目录。
[hp@localhost ~]$ echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/home/hp
/usr/bin/bash
hp
hp
[hp@localhost ~]$ su -
Password:
[root@localhost ~]# echo $HOME; echo $SHELL; echo $USER; echo $LOGNAME
/root
/bin/bash
root ←←← 【如果不使用 --login 这里就会是 hp】
root ←←← 【如果不使用 --login 这里就会是 hp】
- 与su相关的配置文件
- /etc/default/su su 命令特定的配置文件
- etc/login.defs 全局配置文件
- 与 su 有关的配置项目:
- FAIL_DELAY
- ENV_PATH
- ENV_ROOTPATH
- ENV_SUPATH
- ALWAYS_SET_PATH
sudo, sudoedit — execute a command as another user
sudo 命令相比与 su 更安全,sudo 只能使用限定的某些命令也不需要 root的密码。
由于除root用户以外的普通用户没有能力使用诸如 useradd 等权限较高的命令,通过配置文件或者其他方法(也就是添加将用户添加到 wheel 组)可以配置普通用户使用该命令。
普通用户在使用 sudo 的时候使用的是 用户的自己的密码。
简单的说,sudo 是一种 权限管理机制,管理员 可以 授予 一些 普通用户 去执行一些 root 才能执行的操作,而不需要知道 root 的密码。
严谨的说:sudo 允许一个已授权用户以超级用户或者其它用户的角色运行一个命令。
当然,能做什么不能做什么都是通过安全策略来指定的。
默认的安全策略记录在 /etc/sudoers 文件中。
https://www.cnblogs.com/takenika/articles/18377401
在 CentOS 中 wheel 组中的成员有执行任何命令的权限,将普通用户添加到 wheel 组
[hp@localhost ~]$ useradd jack
-bash: /usr/sbin/useradd: Permission denied
[root@localhost ~]# usermod -G wheel hp
[hp@localhost ~]$ id
uid=1000(hp) gid=1000(hp) groups=1000(hp),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[hp@localhost ~]$ sudo useradd jack
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 hp:
useradd: user 'jack' already exists
与 sudo 有关的文件:/etc/sudoers
https://www.cnblogs.com/takenika/articles/18377401
以 root 权限执行上一条命令:
$ sudo !!

浙公网安备 33010602011771号