Linux下su命令用法

在学习linux输入命令时,发现su和su - 是有区别的,于是查找了su命令的所有用法,学习一下。

SU:( Switch user切换用户),可让一个普通用户切换为超级用户或其他用户,并可临时拥有所切换用户的权限,切换时需输入欲切换用户的密码;也可以让超级用户切换为普通用户,临时以低权限身份处理事务,切换时无需输入欲切换用户的密码。

命令使用方式:

su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]] 

直接解释参数的意思不太直观,下面用实例来说明吧。

1.切换用户

切换包含从一般用户到root用户,从root用户到一般账户。

从一般用户到root用户:su root或者 su - root,此时需要输入root的密码。

注意中间有个“-”表示是否切换到root用户的主目录下。

从root用户到一般用户:su name或者su - name,name为一般用户名,此时不需要密码。

注意中间有个“-”表示是否切换到name用户的主目录下。

从一般用户到一般用户su name或者su - name,此时需要输入name用户的密码。

注意中间有个“-”表示是否切换到name用户的主目录下。


上图,首先登录的时名为zt的一般用户,先切换到root用户,需要密码,进去之后,#号前面的目录为/home/zt,是用户zt的主目录,因此目录没有切换。然后,从root账户切换到zt用户,发现,$前目录为~,为zt的目录,也没有切换。

然后使用su - root和su - zt切换,此时目录都变成了当前用户的主目录。

但除了这一点,这两个命令还有区别,在于环境变量是否切换了。此链接:http://www.ha97.com/4001.html有如下的解释:

su命令和su -命令最大的本质区别就是:前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。


2.-c属性实例

输入:su -c ls root 

变更帐号为 root 并在执行 ls 指令后退出变回原使用者。

3.su和sudo的区别 

由于su 对切换到超级权限用户root后,权限的无限制性,所以su并不能担任多个管理员所管理的系统。如果用su 来切换到超级用户来管理系统,也不能明确哪些工作是由哪个管理员进行的操作。特别是对于服务器的管理有多人参与管理时,最好是针对每个管理员的技术特长和 管理范围,并且有针对性的下放给权限,并且约定其使用哪些工具来完成与其相关的工作,这时我们就有必要用到 sudo。 
通过sudo,我们能把某些超级权限有针对性的下放,并且不需要普通用户知道root密码,所以sudo 相对于权限无限制性的su来说,还是比较安全的,所以sudo 也能被称为受限制的su ;另外sudo 是需要授权许可的,所以也被称为授权许可的su; 

sudo 执行命令的流程是当前用户切换到root(或其它指定切换到的用户),然后以root(或其它指定的切换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的配置文件/etc/sudoers来进行授权。

<think>首先,用户的问题是:“我想了解linuxsu命令用法 请问linux su command usage”。这是一个关于Linux命令的查询,特别是su命令。 我需要根据系统级指令来构建我的回答: - 所有行内数学表达式必须使用$...$格式,但在这个上下文中,可能没有数学表达式,所以我可以忽略,除非有必要。 - 独立公式必须使用$$...$$格式,但同样,这里可能不适用。 - LaTeX语法正确:确保任何数学格式正确。 - 使用中文回答:整个回答必须用中文。 - 生成相关问题:在回答结束时,添加相关问题部分。 - 回答中引用的段落末尾自然地添加引用标识:例如[^1]。参考提供的引用,我需要整合它们。 提供的引用: - 引用[1]:关于su命令的手册页和帮助。 - 引用[2]:比较susudo,强调sudo的安全性。 - 引用[3]:关于Linux性能调优的用电调优,与su命令无关。所以,我应该只使用相关引用。 用户的问题焦点是su命令用法,所以我应该主要基于引用[1]和[2]。 结构化回答: 1. **介绍su命令**:解释su是什么,它的基本用途。 2. **详细用法**:提供命令语法、选项和示例。 3. **与sudo的比较**:基于引用[2],解释susudo的区别。 4. **安全注意事项**:讨论使用su的安全问题。 5. **添加引用**:在相关段落末尾添加引用标识。 6. **生成相关问题**:在回答结束时,添加相关问题部分。 确保回答清晰、逐步解决问题。 大纲回答: - **开头**:简要介绍su命令- **主体**: - 语法和选项。 - 示例用法- 如何切换到root用户- 安全方面:为什么sudo可能更好。 - **结尾**:总结。 - **相关问题**:生成3-5个相关问题。 用中文书写。 生成相关问题: 1. su命令的常见错误是什么? 2. 如何配置sudo来替代su? 3. susudo在权限管理上的区别? 4. 如何在脚本中使用su命令? 5. su命令的历史记录在哪里? 参考引用: - 在解释su用法时引用[1]。 - 在比较susudo时引用[2]。 最终回答格式: - 使用Markdown,如果需要代码块。 - 确保引用标识自然添加。</think>### Linuxsu命令用法Linux系统中,`su`命令(全称“switch user”或“substitute user”)用于切换当前用户身份到另一个用户账户。默认情况下,如果不指定用户名,`su`会尝试切换到root用户(超级用户),这需要输入目标用户的密码。`su`命令在系统管理、权限提升和用户切换中非常常见,但需谨慎使用以避免安全风险[^1]。下面我将逐步解释其基本用法、常见选项、示例及安全注意事项。 #### 1. **基本语法和选项** `su`命令的基本语法为: ```bash su [选项] [用户名] ``` - **常用选项**: - `-` 或 `-l` 或 `--login`:启动一个登录shell,加载目标用户的环境变量(如`~/.bashrc`)。例如,`su - username` 会完全模拟目标用户的登录环境。 - `-c` 或 `--command`:执行单个命令后退出,不进入交互式shell。例如,`su -c "command" username` 以指定用户身份运行命令- `-s` 或 `--shell`:指定要使用的shell,如`su -s /bin/bash username`。 - `-m` 或 `-p`:保留当前环境变量(不加载目标用户的配置文件)。 - **默认行为**:如果不提供用户名,`su`默认切换到root用户(例如,`su` 后输入root密码)。成功切换后,命令行提示符会改变,显示当前用户身份。 #### 2. **常见用法示例** 以下是一些实际场景中的示例,帮助您快速上手: - **切换到root用户**: ```bash su # 输入root密码后,进入root shell ``` 或使用登录shell方式(推荐,因为它加载root的环境设置): ```bash su - # 输入root密码 ``` - **切换到其他普通用户**: 例如,切换用户`liruilong`: ```bash su liruilong # 输入liruilong的密码 ``` 或使用登录shell: ```bash su - liruilong ``` - **执行单条命令而不切换shell**: 以root身份运行`apt update`命令(需要输入root密码): ```bash su -c "apt update" root ``` 如果省略用户名,默认使用root: ```bash su -c "apt update" ``` - **保留当前环境变量**: 切换到root,但不加载root的配置文件: ```bash su -m ``` #### 3. **安全注意事项和与sudo的比较** `su`命令直接要求目标用户的密码,这可能导致安全风险,尤其是在多人共享系统中。如果普通用户知道root密码,他们可以完全控制系统,这违背了最小权限原则[^2]。因此,许多现代Linux发行版推荐使用`sudo`命令作为替代: - **`su` vs. `sudo`**: - `su`:需要目标用户的密码,适合完全切换到另一个用户(如root),但权限无限制。 - `sudo`:允许管理员授权特定命令给普通用户,不需要root密码,更安全且可审计[^2]。例如,`sudo apt update` 仅需当前用户密码,而非root密码。 - **最佳实践**: - 避免直接使用`su`切换到root,优先配置`sudo`权限(通过`visudo`编辑`/etc/sudoers`文件)。 - 如果必须使用`su`,确保密码强度高,并限制知道root密码的用户数。 - 在脚本中,避免硬编码密码;改用`sudo`或SSH密钥认证。 #### 4. **帮助和文档** 要获取`su`命令的完整帮助,可以查看联机手册页: ```bash man su ``` 这会显示详细选项、示例和错误处理信息[^1]。例如,手册页会解释如何在特定shell中定制行为。 总之,`su`命令Linux用户管理的基础工具,但应结合安全需求谨慎使用。在需要临时提升权限时,`sudo`通常是更优选择[^2]。如果您有特定发行版(如Ubuntu或CentOS)的疑问,可以提供更多细节,我会进一步解释。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值