由于我偶尔会通过SSH使用Pi,因此我了解到允许SSH访问sudo命令是危险的。因此,我计划在不久的将来关闭此许可。但是,当我安装软件包时,通常必须重新启动。当前,仅允许通过超级用户使用。

sudo reboot


有什么方法可以编辑pi用户的权限,以使其重新启动(并安装)。包?

我可以有多个具有不同权限的帐户吗?

谢谢

评论

给出的答案是否有帮助?他们中有人吗?然后将其标记为已回答。

是。如果您仍然有兴趣,我将其更新到2017年6月-这个问题是在4年零2个月前提出的,它使我找到了今天解决问题的方法。请查看以下答案:

#1 楼

澄清一下:没有“ sudo命令”,只有需要root特权才能正确运行的命令,而sudo是获得一个命令的命令的命令:sudo只是以root用户身份运行给定的命令(将“ sudo”读为命令句“超级用户,做点什么!”)。在/etc/sudoers中记录了有关哪些用户可以执行此操作的规则。在默认的Raspbian安装中,默认用户“ pi”已获得此行的权限:

pi ALL=(ALL) NOPASSWD: ALL


这意味着:“所有主机上的用户'pi'为允许切换到所有用户,并且在使用ALL(读取:任何)命令时不必键入他的PASSWD”。 (我在这里使用了疯狂的语法来保留行的顺序..关于为什么有一种区分主机的说明:这样,同一sudoers文件可以分发到网络上的多台计算机上,因此网络管理员的工作量较少) 。

可能是能够使用sudo运行命令而无需发出管理员密码的原因,这就是为什么您认为通过SSH使用sudo危险(我还没有听说过一般性问题)这样做...那么您能解释一下您真正意味着什么危险吗?)。

确保您可以有多个具有不同权限的用户。但是,恐怕仍然使用sudo仍然是管理这些权限的最佳方法。

所以,我希望这是您需要的小方法:

$ sudo adduser admin


这将创建用户“ admin”,询问密码,创建其主目录等。

$ sudo adduser admin sudo
$ sudo adduser admin adm


这会将“ admin”用户放入“ sudo”和“ adm”用户组。并且由于在Linux中通过将用户添加到用户组来管理权限,因此,这为“ admin”用户提供了他所需的所有特权和权限。 /etc/sudoers中有一​​行,它允许用户组“ sudo”中的任何用户以root用户身份执行任何命令;而此特权正是管理员用户所需要的(将他添加到“ adm”中使他无需使用/var/log和其他一些东西即可读取sudo中的某些日志文件)。当您以admin身份登录时,仍然需要使用sudo,但是现在sudo每次大约五分钟不使用sudo时都会一次又一次询问管理员密码。

现在注销并以“ admin”用户身份登录。检查

$ sudo apt-get update
$ sudo apt-get upgrade


是否有效。如果是这样,您可以撤消“ pi”用户的某些特权,因为现在您可以确定您的管理员用户具有正确的特权:

$ sudo deluser pi sudo
$ sudo deluser pi adm


用户组“ sudo”中的用户“ pi”。

$ sudo visudo


这将启动一个允许您编辑/etc/sudoers的编辑器。在以“ pi”开头的行之前放置一个哈希标记(#),将其注释掉(或简单地将其删除)。然后保存并退出编辑器,然后visudo将立即重新加载特权规则。现在,用户“ pi”不再允许使用sudo。

之后,您可以以用户“ pi”重新登录。如果要切换到某些命令的管理员,请使用su(“切换用户”):

$ su - admin


如果要添加更多用户:请使用sudo adduser <name>像上面一样,然后检查用户“ pi”具有的用户组列表:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input


使用sudo adduser <username> <groupname>将您的新用户添加到其中几个用户组中,从而使他能够使用音频,加速视频,使用可插拔设备等。如果不确定,请将他添加到所有这些用户组中(但不要添加到“ sudo”中!)。

评论


visudo是一个命令,它将使用您的默认编辑器来编辑sudoers文件。不带文件就编辑该文件可能会很麻烦,因此不建议这样做。您可以通过发出sudo update-alternatives --config编辑器来更改首选编辑器

–earthmeLon
13年5月20日在23:38



或者您可以暂时尝试使用此VISUAL = vim visudo。但是,这是更改默认程序(例如编辑器)的绝佳示例。

–安德斯
2015年4月30日16:00

#2 楼

是的,您可以将sudo配置为仅允许用户以其他特权运行某些命令。您可以在/etc/sudoers文件中进行更改,但建议不要直接执行此操作,而应使用sudo visudo命令来执行此操作。

在默认系统安装中,您应该找到以下行:

pi ALL=(ALL) NOPASSWD: ALL


告诉sudo允许用户piroot用户身份运行所有cammand,甚至不提供密码。您可以更改最后一个ALL并指定允许以逗号分隔的命令列表(及其完整路径)。在您的情况下,应将此行更改为:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown


请注意,sudoers中还有另外一行会影响pi用户:

%sudo   ALL=(ALL:ALL) ALL


此行允许sudo组中的所有用户(名称前面的%字符表示它是组名称而不是用户名)运行所有密码,只要他们知道自己的OWN密码即可。如果您离开此行,则用户pi将能够运行所有其他命令,但将要求其输入密码。

如果要防止这种情况发生,可以删除此行或删除用户pi来自sudo组。

/etc/sudoers文件进行更改后,您可能需要调用sudo -l -U pi命令来检查它是否确实满足您的要求。

当然,您可以创建不同的帐户并配置sudoers,以使他们可以访问不同的命令。

#3 楼

2018年5月,这在概念上仍然是准确的,但是此过程在更高版本中有所更改:

首先,应在vi或nano或leafpad或emacs中直接编辑文件-以您喜欢的文本编辑器为准。

该文件中未提及用户名pi:

/etc/sudoers


文件的最后一行是:

#includedir /etc/sudoers.d


这是一个包含名为

010_pi-nopasswd


的文件的目录,该文件包含单行

pi ALL=(ALL) NOPASSWD: ALL


只要我以pi用户身份登录,其效果就不会提示您输入任何sudo命令。 (请注意语法必须完全是这种方式)

这很棒。

分组行%sudo ALL=(ALL:ALL) ALL仍以

存在,因此回答问题的第一部分:

当我移动文件/ etc /时sudoers / sudoers.d / 010_pi-nopasswd文件在一个目录级别上使包含失败,然后等待15分钟,这使我的Raspbian系统在使用sudo时提示输入我自己的密码,就像我的Ubuntu 14.04 LTS系统用来做。

然后,当我将其移回它所属的位置时,即使10分钟后它也不再提示我。

无需重新启动。瞧,使用sudo时没有提示输入密码。我的lubuntu 14.04 LTS测试系统具有相同的设置,只是不存在010_pi-nopasswd文件。 lubuntu是使用pi作为root用户安装的。每次我使用sudo时都会提示我,然后在10分钟后没有提示我。

我将相同的文件添加到Ubuntu系统中,就像Raspbian的设置方式一样(记住,当您仍处于10分钟的窗口中时,请记住该文件的chmod 0440)-和

Voila,即使我在15分钟后以pi身份登录,也不会再提示我输入自己的密码。

再次,更改会立即发生,而无需重新启动。

这是2018年5月的答案,说明如何以root用户pi登录时如何禁用和启用提示使用sudo命令。其他用户和组可以用相同的方式配置。

--Ubuntu 16.04 LTS的更新
此系统也非常相似。但是,最大的区别是16.04的文件权限要严格得多,因此必须在su模式下完成工作。如果您忘记了root密码,则可以使用sudo passwd root从正常提示中将其重置,然后su命令将起作用,您可以从那里开始。

评论


刚刚通过Google找到了-因此,如果我关注这一点,则该用户仍需要位于sudoers组中,但是/etc/sudo.d控制了要求特定用户输入密码的频率?

– lonstar
18年5月29日在3:29

是的知道了成为sudoers的成员通常是在创建用户时完成的。使用示例:您会注意到,常用命令字符串sudo apt-get update && sudo apt-get upgrade调用sudo两次,但令人讨厌的是,它可能会停止并在升级之前再次要求输入密码。所以我将我的设置为从不提示我的登录名(pi),然后使用sudo apt-get update -y && sudo apt-get upgrade -y,因此它不会停止询问OK进行较大的更改。使它更像Unix。照我说的做,就算我走开也要完成。

– SDsolar
18年5月29日在16:08

虽然我非常感谢指向#includedir的指针(它看起来像是一个注释:-),但我不能接受您的声明“文件应直接在...中进行编辑”。-请澄清(是否不缺少?)

–冈伯特
20-11-18在20:23

#4 楼

允许通过SSH进行sudo访问比允许任何用户安装软件包更安全。如果您真的很担心,请将其更改为以下行:

pi ALL=(ALL) NOPASSWD: ALL




pi ALL=(ALL) PASSWD: ALL


这意味着您在任何会话中第一次使用sudo时都会提示您输入密码,并且在几分钟后再次提示输入密码。您无法直接编辑/etc/sudoers;请使用/etc/sudoers

像Krzysztof这样的答案就在其中。您确定每次安装新软件包都需要重新启动吗?除非您要安装新的内核或固件,否则不需要重启。这是我们这里提供的优质操作系统...

评论


提及时间戳超时是一个好主意。默认是15分钟,顺便说一句。请注意,PASSWD是默认设置(如果在此命令列表的前面未指定NOPASSWD)。还要注意,如果知道自己在做什么,则可以直接编辑/ etc / sudoers而不会出现问题。使用visudo在临时文件中进行更改,以防止在更改中间自动写入文件(这可能会导致语法错误和/或安全问题),它会锁定此文件以防止同时进行多次编辑,并在写入文件之前进行一些语法检查。

– Krzysztof Adamski
13年4月21日在20:28



我认为OP更新很少使他总能获得新的内核……或某位同事每次都告诉他重新启动,因为他不想解释OP如何在更新列表中发现内核软件包。

–orithena
13年4月21日在20:29

TNX对此评论@Krzysztof。我在回答中做了更正。您是正确的编辑。实际上,在我的16.04机器上,我只是将pi行直接放入sudoers文件中,因为sudoers.d仅包含一个自述文件。我之所以把它留在里面是因为,但是至少pi权限正在处理中。 (我最喜欢的编辑器是VI / VIM,顺便说一句,但有时会使用Leafpad或Idle。不再精通emacs了-15年了很长的时间-而且在vim中我可以比在emacs中做更多,更快的工作,到目前为止。)再次感谢您。

– SDsolar
17年7月6日在9:30

#5 楼

只是scruss所说的替代方法,通过运行/etc/sudoers.d/010_pi-nopasswd删除sudo rm /etc/sudoers.d/010_pi-nopasswd文件。然后,编辑主要的sudoers文件会更轻松,更安全,这会破坏sudo。