一、sudo用法简述
用户切换:两种,登录式和非登录式
(1)登录式切换: su- user, su-l user
(2)非登录式切换: su user-c'COMMAND'
查看帮助文档: man sudo
以另外一个用户身份执行指定的命令
授权机制:通过sudo的授权文件实现,/etc/sudoers
查看帮助文档: man sudoers
授权文件有两类内容:
谁通过哪些主机=(以谁的身份)运行什么命令
查看帮助文档: man visudo
使用visudo编辑/etc/sudoers文件,直接输入visudo命令
注意:用户通过sudo获得的授权,只能以sudo命令来启动;wheel组拥有管理员权限;
格式: sudo [options] COMMAND
-u username:以指定用户的身份运行命令;
-l:列出用户能以sudo方式执行的所有命令;
-k:清除(密码)此前缓存用户成功认证的结果;
示例: fedora ALL=(root)/usr/**in/useradd,/usr/**in/usermod
例如:
注释:
fedora:定义的用户
ALL=(root):指定用户,不写表示所有用户;
/usr/**in/useradd,/usr/**in/usermod可运行的命令;
ALIAS_TYPE NAME=item1,item2,...
例如:
示例:
Cmnd_Alias USERADMINCMNDS=/usr/**in/useradd,/usr/**in/usermod,/usr/bin/passwd [a-z]*,!/usr/bin/passwd root,/usr/**in/userdel
注意:Cmnd_Alias授权非常有风险的命名时,如passwd命令,一定要谨慎;
例如:
验证:
例如:
普通用户要su- root,如果root用户没有密码,就不能切换root用户;
但是,授权这个用户能够以sudo的方式运行任何命令:
[fedora@promote~]$ sudo su- root表示以管理员身份切换管理员;此时只需要当前用户的密码即可运行管理员命令;
这就是为什么普通用户不需要切换管理员身份,仍然能用root身份运行命令;
在安装系统时,不设管理员密码,但是可以把第一个用户授权以管理员身份运行命令;想用管理员时直接用 sudo su-
例如:centos用户就授权以管理员身份运行;
授权任何用户,这个用户就可以以任何用户的身份,运行任何命令;这又是个安全漏洞;
将来在工作中,尽量以普通用户身份直接登录,但是授权这个普通用户的身份以管理员登录即可;使用sudo就能执行所有命令;
使用sudo会记录了日志中;
标签之后的所有命令都是生效的;
示例:
fedora ALL=(root) NOPASSWD:/usr/**in/useradd,/usr/**in/usermod, PASSWD:/usr/**in/userdel
注意:在授权需特别谨慎是命令时,要使用sudo方式执行命令需要密码,不但包含passwd命令需要密码,还有包含su命令;
如果能以管理员身份运行su命令,就相当于su到管理员不需要密码;
例如:
可以授权sudo命令中,某个命令执行时不需要密码
注意:NOPASSWD标签后的所有命令都无需密码,所以要把NOPASSWD标签写在无需密码的的命令后面;
如果能以管理员身份运行su命令,就相当于su到管理员不需要密码;
例如:fedora能以管理员身份运行su命令,这个用户就相当于管理员了
此时,普通用户fedora,就以管理员身份登录系统了;所以把用户加入wheel组之前,要慎重考虑;
二、Linux下的命令sudo怎么读
su do,速度,一声念更拽的样子.不过之前网友回复的
详细单词是superuserdo,意为超级管理员可以做的动作。
实际上,也可以用sudo命令以其他的用户的身份执行一条命令
sudo-以其他用户身份执行一条命令
usage: sudo-h|-K|-k|-V
usage: sudo-v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo-l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user]
[command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo-e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] file...
选项:
-A,--askpass使用助手程序进行密码提示
-b,--background在后台运行命令
-B,--bell ring bell when prompting
-C,--close-from=num关闭所有>= num的文件描述符
-E,--preserve-env在执行命令时保留用户环境
--preserve-env=list preserve specific environment variables
-e,--edit编辑文件而非执行命令
-g,--group=group以指定的用户组或 ID执行命令
-H,--set-home将 HOME变量设为目标用户的主目录。
-h,--help显示帮助消息并退出
-h,--host=host在主机上运行命令(如果插件支持)
-i,--login以目标用户身份运行一个登录
shell;可同时指定一条命令
-K,--remove-timestamp完全移除时间戳文件
-k,--reset-timestamp无效的时间戳文件
-l,--list
列出用户权限或检查某个特定命令;对于长格式,使用两次
-n,--non-interactive非交互模式,不提示
-P,--preserve-groups
保留组向量,而非设置为目标的组向量
-p,--prompt=prompt使用指定的密码提示
-r,--role=role以指定的角色创建 SELinux安全环境
-S,--stdin从标准输入读取密码
-s,--shell以目标用户运行
shell;可同时指定一条命令
-t,--type=type以指定的类型创建 SELinux安全环境
-T,--command-timeout=timeout terminate command after the specified time limit
-U,--other-user=user在列表模式中显示用户的权限
-u,--user=user以指定用户或 ID
运行命令(或编辑文件)
-V,--version显示版本信息并退出
-v,--validate更新用户的时间戳而不执行命令
--停止处理命令行参数
三、Linux系统中的sudo命令使用讲解
“Sudo”是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像restart,reboot,passwd之类的命令,或者编辑一些系统配置文件这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
sudo是个统管一切的命令。它的字面意思是代表“超级用户才能做!”(super user do!)对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一。你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到“拒绝访问”?这个就是你所需要的命令!但正所谓,权力越大,责任也越大!较之以根用户身份登录,或者使用 su“switch user”命令,sudo要好得多。请耐心读下去,看看sudo能为你做些什么!
sudo:它有什么用途?
那么,sudo实际能做些什么呢?如果你在任何Linux命令的前面加上“sudo”这个前缀,那么它会以提升的权限来运行该命令。执行某些管理任务需要提升的权限。有一天,你可能想运行一台LAMP(Linux Apache MySQL PHP)服务器,又要手动编辑配置文件。你可能还要重新启动或重置Apache Web服务器或者是其他服务后台程序。你甚至需要提升的权限来关闭或重新计算机。“嘿,谁关闭了这台机子?”
如果你熟悉Windows,sudo与当你试图处理任何重要操作时,弹出来的Windows用户帐户控制(ACL)对话框非常相似,只是不如后者来得友好。在Windows中,如果你试图执行某项管理任务,对话框就会问你是否想继续执行(“你果真确信想要运行刚才点击的这个程序吗?”)随后执行该任务。在Mac机器上,一个安全对话框会弹出来,要求你输入密码,并点击“确定”。
而Linux方面显得更有戏剧性。要是没有适当的权限,一些操作会显得相当怪异。你在编辑的那个重要的配置文件可能无**确保存内容。你安装上去的那个程序可能就是拒绝运行。你已下载、想要编译的那段出色的源代码编译不了。你要是不走运的话,甚至还会看到“拒绝访问”或另一个错误信息。
sudo是提升权限的最出色、最安全的方法。我们不妨看一下提升权限的另一个方法。作为切换用户命令,“su”会要求你输入根密码,并且给你一个超级用户提示符,以#符号表示。这个#符号意味着“危险!你已作根用户登录上去!”你下达的第一个命令也许顺利执行完毕。但是你一旦忘了,会继续以根用户身份登录。要是打错一个字,就完蛋了!你清除了整个硬驱,而不是清除你下载的那个盗版mp3文件。你的Web服务器和家庭公司统统不见了!如果是sudo,你就得在每一个命令之前输入“sudo”。因而,你没必要记得切回到常规用户模式,那样发生的事故就会更少。
Suderos文件
这个文件可谓是sudo的基础。它控制着谁可以使用sudo命令来获得提升的权限。它通常位于/etc/sudoers。想编辑这个文件,最有效最安全的方式就是,使用visudo命令。这个命令会以提升权限启动vi编辑器,那样你就能编辑并保存该文件。它还会给sudoers文件上文件锁,那样别人无法编辑该文件。一旦你完成了编辑工作,它会分析文件,查找有无简单的错误。编辑sudo文件要比仅仅使用任何旧的文本编辑器来得安全得多。
该文件含有许多参数。你可以指定哪些用户或哪些用户助可以执行哪些命令。我们准备为自己授予访问sudo的权限,为此只要在底部添加:
username ALL=(ALL) ALL//为用户“username”授予sudo访问权%wheel ALL=(ALL) ALL//为属于wheel用户组的所有用户授予sudo访问权
现在指定的用户名就能够使用所有根权限了。你还可以允许某个用户或用户组只对特定服务或服务器拥有sudo访问权,以取代ALL参数,不过那是另一个话题了。
几个选项
与任何优秀的命令一样,也有几个很棒的选项可以让sudo处理更多的事务。
sudo-b会在后台运行命令。这对显示许多实时输出内容的命令来说很有用。
sudo-s会运行以提升权限指定的外壳,为你提供#提示符(别忘了退出!)
sudo su-会让你成为根用户,并装入你那些自定义的用户环境变量。
有没有现在就用它?
我们想要运行重要任务时,sudo提供了安全的提升权限。在Ubuntu用户当中,它也许是使用最广泛、功能最强大的命令,因为它已成为该发行版中的首选方法。既然你拥有了这么大的权利,那么在运行命令时务必要做到安全!世上可没有su-undo撤销命令!
sudo的特点
sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:
# 1. sudo能够限制指定用户在指定主机上运行某些命令。
# 2. sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
# 3. sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
# 4.sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
sudo常用命令
代码如下:
sudo-h Help
列出使用方法,退出。
代码如下:
sudo-V Version
显示版本信息,并退出。
代码如下:
sudo-l List
列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
代码如下:
sudo-u username|#uid User
以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。
代码如下:
sudo-k Kill
清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
代码如下:
sudo-K Sure kill
与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
代码如下:
sudo-b command Background
在后台执行指定的命令。
代码如下:
sudo-p prompt command Prompt
可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。
代码如下:
sudo-e file Edit
不是执行命令,而是修改文件,相当于命令sudoedit。
sudo 命令和Linux下的命令sudo怎么读的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!