我已经从手册中阅读了它,但我看不出有什么区别..
su
- 更改用户 ID 或成为超级用户
sudo -s [command]
Run Code Online (Sandbox Code Playgroud)
的-s
(壳)选项运行由SHELL环境变量指定的壳,如果它是一组或如passwd的(5)中规定的壳。如果指定了命令,则将其传递给 shell 执行。否则,将执行交互式 shell。
sudo -i
消失手册中的描述
Ser*_*gey 135
这些命令之间的主要区别在于它们限制对其功能的访问的方式。
su
(这意味着“替换用户”或“切换用户”) - 正是这样做的,它启动另一个具有目标用户权限的 shell 实例。为确保您有权这样做,它会要求您提供目标用户的密码。因此,要成为 root,您需要知道 root 密码。如果您的机器上有多个用户需要以 root 身份运行命令,他们都需要知道 root 密码 - 请注意,这将是相同的密码。如果您需要撤消其中一位用户的管理员权限,则需要更改 root 密码并将其仅告诉那些需要保持访问权限的人 - 混乱。
sudo
(嗯...助记符是什么?超级用户-DO?)完全不同。它使用一个配置文件 (/etc/sudoers),其中列出了哪些用户有权执行特定操作(以 root 身份运行命令等)。在调用时,它会询问启动它的用户的密码 - 以确保该人在终端实际上就是/etc/sudoers
. 要撤销一个人的管理员权限,您只需要编辑配置文件(或从该配置中列出的组中删除用户)。这会导致更清晰的权限管理。
因此,在许多基于 Debian 的系统中,root
用户没有设置密码——即无法直接以 root 身份登录。
此外,/etc/sudoers
允许指定一些附加选项 - 即用户 X 只能运行程序 Y 等。
经常使用的sudo su
组合的工作原理如下:首先sudo
请你为你的密码,并且,如果你允许这样做,调用一个命令(su
)作为超级用户。由于su
由 调用root
,因此不需要您输入目标用户的密码。因此,如果文件sudo su
允许您具有超级用户访问权限,则允许您以另一个用户(包括 root 用户)身份打开 shell /etc/sudoers
。
Mik*_*ott 69
sudo
允许您使用 root 权限在自己的用户帐户中运行命令。su
允许您切换用户,以便您实际以 root 身份登录。
sudo -s
运行具有 root 权限的 shell。sudo -i
还获取root用户的环境。
要看到的区别su
和sudo -s
,做cd ~
再pwd
后他们每个人。在第一种情况下,您将位于 root 的主目录中,因为您是 root。在第二种情况下,您将位于自己的主目录中,因为您自己拥有 root 权限。
有这个确切的问题进行更多的讨论在这里。
dot*_*hen 47
这个答案是我对这个问题的回答的欺骗,放在规范的答案上,以便人们可以找到它!
sudo -i
和之间的主要区别sudo -s
是:
sudo -i
为您提供根环境,即您的~/.bashrc
被忽略。sudo -s
给你用户的环境,所以你~/.bashrc
的受到尊重。下面是一个例子,你可以看到,我有一个应用程序lsl
在我的~/.bin/
目录是通过访问sudo -s
而与访问sudo -i
。另请注意,Bash 提示会随 一起更改,sudo -i
但不随sudo -s
:
dotancohen@melancholy:~$ ls .bin
lsl
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ sudo -i
root@melancholy:~# which lsl
root@melancholy:~# exit
logout
dotancohen@melancholy:~$ sudo -s
Sourced .bashrc
dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl
dotancohen@melancholy:~$ exit
exit
Run Code Online (Sandbox Code Playgroud)
虽然sudo -s
方便给你熟悉的环境,但我推荐使用的sudo -i
原因有两个:
.bashrc
.Mar*_*nas 10
su
要求输入用户“root”的密码。
sudo
询问您自己的密码(并检查您是否可以以 root 身份运行命令,这是通过配置的/etc/sudoers
——默认情况下,所有属于“admin”或“sudo”组的用户帐户都允许使用 sudo)。
sudo -s
以 root 身份启动 shell,但不会更改您的工作目录。 sudo -i
模拟登录到 root 帐户:您的工作目录将是/root
,root.profile
等将在登录时获取。
su
询问 root 密码,成为 root,打开一个交互式非登录 shell。 su -
询问 root 密码,成为 root,打开一个交互式登录 shell。sudo -s
询问您的密码,成为 root,打开一个交互式非登录 shell。sudo -i
询问您的密码,成为 root,打开交互式登录 shell。最佳实践是使用这两个。
sudo su
询问您的密码,成为 root 用户并以 root 用户身份运行su
。sudo su -
询问您的密码,成为 root 用户并su -
以 root 用户身份运行。因此,在这种情况下,您正在su
使用sudo
并且不必知道 root 的实际密码。结果与su
和相同su -
。
归档时间: |
|
查看次数: |
334118 次 |
最近记录: |