ubuntu: sudo -u www-data echo $USER為什麼輸出結果是ubuntu不應該是www-data的嗎?< /p>
ubuntu: sudo -u www-data echo $USER
ubuntu
www-data
闭关修行中......
拿 Unix V6 原始碼來說一下吧,linux的沒找到,看看user結構體
user
struct user { // ... char u_uid; // 实效用户id(effective user id) char u_gid; // 实效用户组id(effective group id) char u_ruid; // 实际用户id(real user id) char u_rgid; // 实际用户组id(real group id) // ... } u;
以實效使用者和實際使用者為例,登入系統時實際使用者就已經確定,例如是ubuntu用户的id是108,www-data的id是105。若用ubuntu用户运行程序,则实效用户为108;若用sudo命令切换到www-data身份运行,则实效用户为 105,而实际用户仍为108,所以$USER还是实际用户ubuntu。
id
108
105
sudo
$USER
拿 Unix V6 原始碼來說一下吧,linux的沒找到,看看
user
結構體以實效使用者和實際使用者為例,登入系統時實際使用者就已經確定,例如是
ubuntu
用户的id
是108
,www-data
的id
是105
。若用ubuntu
用户运行程序,则实效用户为108
;若用sudo
命令切换到www-data
身份运行,则实效用户为105
,而实际用户仍为108
,所以$USER
还是实际用户ubuntu
。