欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

详解Linux系统中su和sudo命令的用法

程序员文章站 2022-06-18 15:28:50
这篇文章主要介绍了Linux系统中su和sudo命令的用法,su被用于切换用户且切换时输入用户密码而sudo切换用户时则要求输入root密码,需要的朋友可以参考下... 16-01-25...

su
name(名称)
       su - 运行替换用户和组标识的shell

synopsis(总览)
       su [option]... [-] [user [arg]...]

description(描述)
       修改有效用户标识和组标识为user的.

       -, -l, --login
              使得shell为可登录的shell

       -c, --commmand=command
              传递单个command给-c的shell.

       -f, --fast
              传递-f给shell(针对csh或tcsh)

       -m, --preserve-environment
              不重置环境变量

       -p     与-m同

       -s, --shell=shell
              如果/etc/shells允许,运行shell.

       --help 显示帮助并退出

       --version
              输出版本信息并退出

       单一的-意味着-l.如果没有给定user,则假定为root.
例:

复制代码
代码如下:

[root@blackghost ~] su zhangying #切换用户,原用户环境变量
[root@blackghost ~] su - zhangying #切换用户,新用户环境变量
[zhangying@blackghost ~] su -c ls root #切换用户执行命令,执行后返回原用户


sudo
用户也可以通过su切换到root用户运行命令。然而与su的启动一个root shell允许用户运行之后的所有的命令不同,sudo可以针对单个命令授予临时权限。sudo仅在需要时授予用户权限,减少了用户因为错误执行命令损坏系统的可能性。sudo也可以用来以其他用户身份执行命令。此外,sudo可以记录用户执行的命令,以及失败的特权获取。

选项:

  -a type       使用指定的 bsd 认证类型
  -b            在后台运行命令
  -c fd         关闭所有 >= fd 的文件描述符
  -e            在执行命令时保留用户环境
  -e            编辑文件而非执行命令
  -g group      以指定的用户组执行命令
  -h            将 home 变量设为目标用户的主目录。
  -h            显示帮助消息并退出
  -i [command]  以目标用户身份运行一个登录 shell
  -k            完全移除时间戳文件
  -k            无效的时间戳文件
  -l[l] command 列出用户能执行的命令
  -n            非交互模式,将不提示用户
  -p            保留组向量,而非设置为目标的组向量
  -p prompt     使用指定的密码提示
  -s            从标准输入读取密码
  -s [command]  以目标用户身份运行 shell
  -u user       在列表时,列出指定用户的权限
  -u user       以指定用户身份运行命令(或编辑文件)
  -v            显示版本信息并退出
  -v            更新用户的时间戳而不执行命令
  --            停止处理命令行参数
例:

复制代码
代码如下:

[root@blackghost ~] sudo -u tank ls #以tank用户,来执行ls命令
[zhangying@blackghost ~] sudo touch test #以root账户来建一个文件test,为空默认是root用户