我在 Ubuntu 14.04 中运行 fish(友好交互式 Shell)作为我的标准 shell,而不是 bash。
我注意到了以下行为,但不知道其中是否是获取 root 访问权限的首选行为。
我可以输入命令sudo su
或sudo fish
,它们都会授予我超级用户权限。(提示符显示为root@ubuntu ~#
)
这些命令的行为有什么区别吗?
我唯一能理解的是,sudo su
使用位于的鱼配置/root/.config/fish/
并sudo fish
使用我主目录中的鱼配置/home/uloco/.config/fish
。
是否可以使用 加密我的系统sudo fish
?如果我使用这个,我的主目录中的文件的所有者是否会发生变化?
答案1
sudo su
就像您是 root 用户一样执行su
。这意味着,打开的 shell 是第 6 个字段中用户条目中给出的 shell /etc/passwd
。如果您的系统是 root 用户,则可能是/bin/fish
。该 shell 作为登录 shell 执行,因此将执行 root 用户的 rc 脚本。
当你执行时sudo fish
,应用程序fish
(shell)就可以执行,就像你是 root 用户一样,但在调用用户的环境中。这就是 fishs rc 脚本被执行的原因。
请参阅此答案中的完整解释:'sudo su -' 与 'sudo -i' 与 'sudo /bin/bash' - 什么时候使用哪个重要,或者根本不重要吗?
您应该使用哪一个取决于您:
- 您是否想要像以 root 身份登录系统一样拥有 root 环境?然后调用
sudo su
。 - 您是否想保留您的环境、别名以及在 shell rc-scritps 中定义的内容?那么使用
sudo fish
。
是否可以使用 sudo fish 来加密我的系统?
这只是环境,你不会加密某些东西。
如果我使用这个,我的主目录中的文件的所有者是否会发生变化?
如果您不手动进行任何更改则不会。
答案2
sudo su
su – 更改用户 ID 或成为超级用户
sudo bash
bash——GNU Bourne-Again 外壳
sudo fish
fish - 是一款适用于 OS X、Linux 和其他操作系统的智能且用户友好的命令行 shell。
http://en.wikipedia.org/wiki/Unix_shell#Shell_categories
Bourne-Again shell(bash)和Friendly interactive shell(fish)都是shell类型。