使用mac sudo命令令时出现如下错误,为什么应当如何处理

博客访问: 285535
博文数量: 81
博客积分: 2780
博客等级: 少校
技术积分: 785
注册时间:
分类: LINUX 13:54:52
sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务
大家知道ubuntu吧,他就封闭了root用户,都是使用的sudo
sudo能够限制指定用户在指定主机上运行某些命令。 sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。 sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。 sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。&
编辑/etc/sudoers文件,只有超级用户才可以修改它。
sudoers文件就是sudo的配置文件了,但是我们不建议用户直接vim这个文件,建议使用visudo这个命令来编辑这个文件:#visudo
之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。&
sudo的常用参数
sudo -l :列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。 sudo -u 用户名 命令:以指定用户的身份执行命令。后面的用户是除root以外的,可以是用户名,也可以是#uid。 sudo -k:清除“入场卷”上的时间,下次再使用sudo时要再输入密码。 sudo -b 命令:在后台执行指定的命令。 sudo -p 提示语:可以更改询问密码的提示语,其中%u会代换为使用者帐号名称,%h会显示主机名称。非常人性化的设计。 sudo -e 文件名:不是执行命令,而是修改文件,相当于命令sudoedit。
现在我们来试试,请大家使用visudo这个命令&
然后使用/root查找
查找到这行root&& ALL=(ALL)&&&& ALL&
这个文件最重要的也就这么一行
我给大家解释下:
第一个root 代表用户名 第一个ALL代表所有主机 (ALL)代表所有用户 后面那个ALL代表所有命令&
这句话的意思就是:root用户可以在任何机器上运行所有用户的所有命令&
第一个主机你就理解成这个主机吧,他主要是对一个域来定义的
用户名&主机名=命令
命令须绝对路径,以“,”分隔,以“,”结尾
如果我要让michael这个用户可以执行所有用户的shutdown和useradd命令就这样写
michael& ALL=(ALL)&&& shutdown,useradd&
然后保存退出,如果没有提示的话就证明成功了
visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:&>>> sudoers file: syntax error, line 71 <<< 此时我们有三种选择: 键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。
我故意说错了这个命令,那两个命令michael用户是没有环境变量的,也就是michael没那两个命令,所以会报错,就像这样看下图:
比如把命令改成system-confg-users命令的可执行文件
先使用which system-config-users找到他的可执行文件/usr/bin/system-config-users&
需要注意的是,当我们为用户定义可以运行的命令时,必须使用完整的命令路径。这样做是完全出于安全的考虑,如果我们给出的命令只是简单的useradd而非/usr/sbin/useradd,那么用户有可能创建一个他自己的脚本,也叫做useradd,然后放在它的本地路径中,如此一来他就能够通过这个名为useradd的本地脚本,作为root来执行任何他想要的命令了。这是相当危险的!
我们来查找下:which shutdown和which useradd
写/sbin/shutdown,/usr/sbin/useradd这个进去就OK了,多个命令使用","分隔
现在保存退出就没有报错哈~
你可以切换到michael这个用户,使用#sudo useradd xxxx&
然后输入michael用户的密码,命令就可以执行成功
普通用户的PATH没有加/usr/sbin,自己加上export PATH=$PATH:/usr/sbin,然后我们再试试哈~
ok,可以了哈~
大型的主机就使用这种方法把权限分配给不同的管理员
#########################################################################
阅读(7567) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~
请登录后评论。没有更多推荐了,
不良信息举报
举报内容:
sudo命令:解决使用Linux命令行时出现的错误提示
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!ubuntu的sudo操作出现下面提示,怎么办?_百度知道
ubuntu的sudo操作出现下面提示,怎么办?
sudoers的权限被改了,改回来就好了。pkexec chmod 0440 /etc/sudoers补充内容:不是每一个用户都是能使用sudo命令的,因为只拥用权限的用户才能使用sudo命令,而这个权限都在 /etc/sudoers 中。我们可以直接用命令 visudo 来搞定(本人就是这么做的),你也可以通过编辑器来打开 /etc/sudoers,打开之后,像如下添加上自己的帐号保存就可以了。# User privilege specificationroot ALL=(ALL:ALL) ALLlinc ALL=(ALL:ALL) ALL
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
不良信息举报
举报内容:
不能使用sudo命令
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!sudo命令:解决使用Linux命令行时出现的错误提示
我的图书馆
sudo命令:解决使用Linux命令行时出现的错误提示
sudo命令:解决使用Linux命令行时出现的错误提示 Himanshu Arora &Linux中国 &
你在使用 Linux 命令行时曾经得到过“拒绝访问(Permission denied)”的错误提示吗?这可能是因为你正在尝试执行一个需要 root 权限的操作。例如,下面的截图展示了当我尝试复制一个二进制文件到一个系统目录时产生的错误。&&&&shell 的拒绝访问那么该怎么解决这个错误?很简单,使用 sudo 命令。&&&&用 sudo 运行命令用户运行此命令后会被提示输入他们(自己)的登录密码。一旦输入了正确的密码,操作将会成功执行。毫无疑问,sudo 是任何在 Linux 上使用命令行的人都必须知道的命令。但是,为了更负责、更有效地使用该命令,你还是要知道一些相关(及深入)的细节。这正是我们将会在这篇文章中讨论的。在我们继续之前,值得提一下的是,这篇文章所提到的所有命令指示都已经在 Ubuntu 14.04 LTS 下的 4.3.11 版 Bash 下通过测试。什么是 sudo正如你们大部分人所知道的,sudo 用来执行需要提升权限(通常是作为 root 用户)的命令。在这篇文章之前的简介部分已经讨论过这样的一个例子。然而,如果你想的话,你能用 sudo 以其它(非 root )用户运行命令。这是由工具提供的 -u 命令行选项所实现的。举个例子,如下例所展示的那样,我(himanshu)尝试将一个在其他用户(howtoforge)的 Home 目录中的文件重命名,但是得到一个“访问拒绝”的错误。然后我加上 sudo -u howtoforge 后用同样的“mv”命令,命令成功执行了:&&&&什么是 sudo任何人都能用 sudo 吗?不是。一个用户要能使用 sudo ,应该在 /etc/sudoers 文件里有一条跟该用户相关的信息。下述摘自 Ubuntu 网站的一段能讲得更清楚:/etc/sudoers 文件控制了谁能以哪个用户的身份在哪个机器上运行什么命令,还可以控制特别的情况,例如对于特定的命令是否需要输入密码。这个文件由别名aliases(基本变量)和用户标识user specifications(控制谁能运行什么命令)组成。如果你正在使用 Ubuntu,让一个用户能运行 sudo 命令很容易:你所需要做的就是把账户类型改成管理员administrator。这可直接在 系统设置System Settings -> 用户账户 User Accounts里完成。&&&&sudo 用户首先解锁该窗口:&&&&unlocking window然后选择你想改变用户类型的用户,然后将类型改成管理员administrator。&&&&choose sudo accounts然而,如果你不使用 Ubuntu,或者你的发行版没有提供这个特性,你可以手动编辑 /etc/sudoers 文件来实现此改变。要在文件中添加这样的一行:[user]&&&&ALL=(ALL:ALL)&ALL&无需赘言,[user] 应该用你想提升 sudo 权限的用户的用户名所代替。在这里值得提到的一件重要的事情是,官方建议通过 visudo 命令编辑该文件 —— 你需要做的就是运行下述命令:sudo&visudo&为了说清究竟是怎么一回事,这里有段从 visudo 手册里的摘要:visudo 以安全的模式编辑 sudoers 文件。visudo 锁定 sudoers 文件以防多个编辑同时进行,提供基本的检查(sanity checks)和语法错误检查。如果 sudoers 文件现在正在被编辑,你将会收到一个信息提示稍后再试。关于 visudo 的更多信息,前往这里。什么是 sudo 会话如果你经常使用 sudo 命令,你肯定注意到过当你成功输入一次密码后,可以不用输入密码再运行几次 sudo 命令。但是一段时间后,sudo 命令会再次要求你的密码。这种现象跟运行 sudo 命令数目无关,跟时间有关。是的,sudo 默认在输入一次密码后 15 分钟内不会再次要求密码。15 分钟后,你会再次被要求输入密码。然而,如果你想的话,你能改变这种现象。用以下命令打开 /etc/sudoers 文件:sudo&visudo&找到这一行:Defaults&env_reset&&&&&env_reset然后在这行最后添加以下变量:Defaults&env_reset,timestamp_timeout=[new-value]&[new-value] 为想要 sudo 会话持续的时间数。例如,设数值为 40。&&&&sudo timeout value如果你希望每次使用 sudo 命令时都要求输入密码,你可以把这个变量赋值为 0 。想要 sudo 会话永远不过时,应赋值为 -1。注意将 timestamp_timeout 的值赋为 “-1” 是强烈不推荐的。sudo 密码你可能注意过,当 sudo 要求输入密码然后你开始输入时,不会显示任何东西 —— 甚至连常规的星号都没有。虽然这不是什么大问题,不过一些用户就是希望显示星号。好消息是那有可能也很容易做到。所有你需要做的就是在 /etc/sudoers 文件里将下述的行:Defaults&env_reset&改成Defaults&env_reset,pwfeedback&然后保存文件。现在,无论什么时候输入 sudo 密码,星号都会显示。&&&&hide the sudo password一些重要的 sudo 命令行参数除了 -u 命令行参数(我们已经在这篇教程的开始部分讨论过了),还有其他重要的 sudo 命令行参数值得注意。在这部分,我们将会讨论其中一些。-k 参数考虑下这种情况:输入密码后你刚刚运行了几个 sudo 驱动的命令。现在,如你所知,sudo 会话默认保持 15 分钟。假设在这会话期间,你需要让某些人访问你的终端,但你不想让他们可以使用 sudo ,你将会怎么做?还好,有 -k 命令行参数允许用户取消 sudo 权限。这是 sudo 帮助页面(man page)对此的解释:-k, --reset-timestamp不带任何命令使用时,撤销用户缓存的凭据。换句话讲,下一次使用 sudo 将会要求输入密码。使用这个参数不需要密码,也可以放到一个 .logout 文件中来撤销 sudo 权限。当与一个命令,或者一个可能需要密码的操作一起用时,这个参数将会导致 sudo 忽略用户缓存的凭据。结果是 sudo 要求输入密码(如果这是被安全策略所要求的),而且不会更新用户缓存的凭据。-s 参数有时你的工作要求你运行一堆需要 root 权限的命令,你不想每次都输入密码。你也不想通过改变 /etc/sudoers 文件调整 sudo 会话的过期时限。这种情况下,你可以用 sudo 的 -s 参数。这是 sudo 帮助页面对此的解释:-s, --shell如果设置了 SHELL 环境变量或者调用用户的密码数据库指定了 shell,就运行该 shell 。如果指定了命令,命令将会通过 shell 的 -c 参数将命令传递给该 shell 执行。如果没有指定命令,会执行一个交互式 shell。所以,基本上这命令参数做的是: 启动一个新的 shell - 至于是哪一个 shell,参照 SHELL 环境变量赋值。如果 $SHELL 是空的,将会用 /etc/passwd 中定义的 shell。 如果你用 -s 参数传递了一个命令名(例如 sudo -s whoami),实际执行的是 sudo /bin/bash -c whoami。 如果你没有尝试执行其他命令(也就是说,你只是要运行 sudo -s),你将会得到一个有 root 权限的交互式的 shell。请记住,-s 命令行参数给你一个有 root 权限的 shell,但那不是 root 环境 —— 还是执行的你自己的 .bashrc 。例如,在 sudo -s 运行的新 shell 里,执行 whoami 命令仍会返回你的用户名,而非 root 。-i 参数-i 参数跟我们讨论过的 -s 参数相像。然而,还是有点区别。一个重要的区别是 -i 给你的是 root 环境,意味着你的(用户的).bashrc 被忽略。这就像没有显式地用 root 登录也能成为 root 。此外,你也不用输入 root 用户密码。重要:请注意 su 命令也能让你切换用户(默认切换到 root )。这个命令需要你输入 root 密码。为了避免这一点,你可以使用 sudo 执行它(sudo su),这样你只需要输入你的登录密码。然而,su 和 sudo su 有隐含的区别 —— 要了解它们,以及它们和 sudo -i 的区别,请看这里 。总结我希望现在你至少知道了 sudo 的基本知识,以及如何调整 sudo 的默认行为。请按我们解释过的那样去尝试调整 /etc/sudoers 。同时也浏览一下论坛讨论来更深入了解 sudo 命令。&【编辑推荐】
【责任编辑: TEL:(010)】
TA的最新馆藏
喜欢该文的人也喜欢

我要回帖

更多关于 sudo pip 找不到命令 的文章

 

随机推荐