如何切换到root用户但保留在同一目录中


9

我最近切换到Ubuntu,使用以下命令切换到root用户时,我观察到一件事

sudo su - root

它直接将我带到root的home(/root),所以我失去了在文件系统(执行此命令的目录)中的位置。有什么方法可以切换到root而不丢失当前目录?

Answers:


16

首先,不要使用sudo su。没错,没有危险,也没有什么,只是微不足道而毫无意义。您正在运行两个单独的程序来完成一个程序轻松完成的工作。如果要以root用户身份启动Shell,sudo可以为您做。

如果您想启动登录shell(就是这样sudo su -),请使用sudo -i。但是,由于它启动了登录Shell,因此默认情况下会将您带到root的主目录。

要启动常规的非登录外壳程序,可以使用sudo -s。这将为您启动一个根shell,并将您保留在运行它的目录中:

terdon@tpad ~ $ pwd
/home/terdon
terdon@tpad ~ $ sudo -i  ## changes directory
[root@tpad ~]# pwd
/root
[root@tpad ~]# logout
terdon@tpad ~ $ sudo -s  ## doesn't change directory
[root@tpad terdon]# pwd
/home/terdon

因此,启动root shell并保留在同一目录中的方法是sudo -s


1
问题可能是sudo -s因为它不是登录外壳,所以无法运行目标用户的配置文件。因此,也许真正的问题是是否有一种方法可以使用sudo而不是更改目录来获取登录shell 。可能不是。
Barmar

@Barmar不,但是sudo -i可以。我使用-sOP是因为OP不想使用登录shell(不想移至$HOME)。如果需要登录外壳,请使用sudo -i。我已经发布的环境进行比较sudo -isu -sudo -ssu我的问题在这里,如果你想看看。
terdon

刚才我对sudo -s这个命令有很不好的经验。即使它不会更改目录,但也没有给我完整的root访问权限。我的某些文件位于目录中,但我无法以这种方式将它们作为普通用户和root用户看到(sudo -s)。然后,我使用旧方法(sudo su-root)进入目录,我的文件现在可见。为什么sudo -s给了我受限的访问权限?
哈马德·哈桑

@HammadHassan,您描述的内容不可能发生。肯定还有其他事情正在发生。您是什么意思“看不到”文件?您是否可能表示“无法读取文件”?您可能正在使用加密吗?
terdon

“看不见”表示简单的命令“ ls”。它没有显示我的文件。完全没有加密。我的文件很简单。这确实是发生了。
哈马德·哈桑

8

这很简单。只需输入

sudo su

代替

sudo su - root

这将使您与root用户位于同一文件夹中。


9
这没错,我的意思是确实可以,但是使用sudo su并没有多大意义。那sudo -s是为了什么 我从来不明白为什么有这么多Ubuntu教程提出建议sudo su
terdon

@terdon我也从不了解它,但是它似乎在所有Linux用户中都很普遍。也许寓言使它更令人难忘。
Barmar

@Barmar个人,我只在Ubuntu世界中看到过。由于大多数Linux系统默认情况下都具有普通的root帐户,因此在需要外壳程序时su(单独,否sudo)。但是,由于Ubuntu默认情况下会禁用root帐户,因此sudo su自然而然。同时,这也是很明显,在UNIX世界的一些角落的情况下,但在Linux中,我只看到它在Ubuntu。
terdon

@terdon我已经看了几十年了,我什至不知道我们在使用什么发行版。我们在我目前的公司中使用Debian,而我的同事也使用它。
Barmar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.