由于我偶尔会通过SSH使用Pi,因此我了解到允许SSH访问sudo命令是危险的。因此,我计划在不久的将来关闭此许可。但是,当我安装软件包时,通常必须重新启动。当前,仅允许通过超级用户使用。
sudo reboot
有什么方法可以编辑pi用户的权限,以使其重新启动(和安装)软件包?
我可以拥有多个具有不同权限的帐户吗?
谢谢
由于我偶尔会通过SSH使用Pi,因此我了解到允许SSH访问sudo命令是危险的。因此,我计划在不久的将来关闭此许可。但是,当我安装软件包时,通常必须重新启动。当前,仅允许通过超级用户使用。
sudo reboot
有什么方法可以编辑pi用户的权限,以使其重新启动(和安装)软件包?
我可以拥有多个具有不同权限的帐户吗?
谢谢
Answers:
澄清一下:没有“ sudo命令”,只有需要root特权才能正确运行sudo
的命令,并且是一个命令获得它们的命令:sudo
只需以root身份运行给定命令(必须将“ sudo”读为命令)句子“超级用户,做点什么!”)。有关哪些用户可以执行此操作的规则记录在中/etc/sudoers
。在默认的Raspbian安装中,默认用户“ pi”已获得此行的权限:
pi ALL=(ALL) NOPASSWD: ALL
这意味着:“允许所有主机上的用户'pi'切换为所有用户,并且在使用ALL(read:any)命令时不必键入其PASSWD”。(我在这里使用了疯狂的语法来保留行的顺序..关于为什么有一种区分主机的注释:这样,同一sudoers文件可以分发到网络上的多台计算机上,因此网络管理员的工作量较少) 。
也许可以使用sudo来运行命令而无需发出管理员密码,这就是为什么您认为通过SSH使用sudo会很危险的原因(我还没有听说过这样做的一般问题...所以您可以解释您到底意味着什么危险?)。
确保您可以有多个具有不同权限的用户。但是,恐怕使用sudo仍然是管理这些权限的最佳方法。
因此,我希望这里是您需要的这个小食谱:
$ sudo adduser admin
这将创建一个用户“ admin”,询问密码,创建他的主目录,等等。
$ sudo adduser admin sudo
$ sudo adduser admin adm
这会将“ admin”用户放入“ sudo”和“ adm”用户组。并且由于在Linux中通过将用户添加到用户组来管理权限,因此,这为“管理员”用户提供了他所需的所有特权和权限。其中有一行代码,/etc/sudoers
它允许用户组“ sudo”中的任何用户以root用户身份执行任何命令。而此特权正是管理员用户所需要的(将他添加到“ adm”中使他/var/log
无需使用sudo
其他操作即可读取一些日志文件)。sudo
当您以admin身份登录时,仍然需要使用-但是sudo每次大约五分钟不使用sudo时,都会一次又一次询问管理员的密码。
现在注销并以“ admin”用户身份登录。检查是否
$ sudo apt-get update
$ sudo apt-get upgrade
作品。如果是这样,您可以撤消“ pi”用户的某些特权,因为现在您可以确定管理员用户具有正确的特权:
$ sudo deluser pi sudo
$ sudo deluser pi adm
这会将用户“ pi”从用户组“ sudo”中抛出。
$ 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>
你的新用户添加到几个这些用户组的,使他能够使用的音频,视频加速,使用可拔插设备,等等。如果不确定的话,他添加到所有这些群组中(而不是“命令”!)。
visudo
是一个将使用默认编辑器编辑sudoers文件的命令。不带文件就编辑该文件可能会很麻烦,因此不建议这样做。您可以通过发布sudo update-alternatives --config editor
VISUAL=vim visudo
暂时尝试此操作。但是,这是更改默认程序(例如编辑器)的绝佳示例。
是的,您可以配置sudo
为仅允许用户以其他特权运行某些命令。您可以在/etc/sudoers
文件中更改此设置,但建议不要直接执行此操作,而应使用sudo visudo
命令进行更改。
在默认的系统安装中,您应该找到以下行:
pi ALL=(ALL) NOPASSWD: ALL
它告诉sudo
允许用户pi
以用户身份运行所有cammand,root
甚至不提供密码。您可以最后更改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
赋予他们访问不同命令的权限。
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)-和
瞧,即使我在15分钟后以pi身份登录,它也不再提示我输入自己的密码。
同样,更改会立即发生,无需重新启动。
这是2018年5月的答案,说明当以root用户pi登录时如何禁用和启用使用sudo命令的提示。可以用相同的方式配置其他用户和组。
--Ubuntu 16.04 LTS的更新此系统也非常相似。但是,最大的区别是16.04的文件权限要严格得多,因此必须在su
模式下完成工作。如果您忘记了root密码,则可以使用sudo passwd root
Then在正常提示下将其重置,该su
命令将起作用,您可以从那里开始。
sudoers
通常是在创建用户时完成的。使用示例:您会注意到,通用命令字符串sudo apt-get update && sudo apt-get upgrade
两次调用sudo,但令人讨厌的是,它可能会停止并在升级之前再次要求输入密码。因此,我将我的帐户设置为从不提示输入我的登录名(pi),然后再使用sudo apt-get update -y && sudo apt-get upgrade -y
它,这样它也不会停止询问OK进行较大的更改。使它更像Unix。照我说的做,就算我走开也要完成。
允许通过SSH进行sudo访问比允许任何用户安装软件包更安全。如果您真的很担心,请将其更改为/etc/sudoers
:
pi ALL=(ALL) NOPASSWD: ALL
至
pi ALL=(ALL) PASSWD: ALL
这意味着您第一次在任何会话中使用sudo时都会提示输入密码,并且在几分钟后再次提示输入密码。您不能/etc/sudoers
直接编辑;使用sudo visudo
这样做。
看起来Krzysztof跳到那里回答了。您确定每次安装新软件包都需要重新启动吗?除非您要安装新的内核或固件,否则不需要重启。这是我们这里提供的优质操作系统...
timestamp
超时是个好主意。默认是15分钟,顺便说一句。请注意,这PASSWD
是默认值(如果NOPASSWD
在此命令列表的前面未指定)。另外请注意,/etc/sudoers
如果您知道自己在做什么,则可以直接编辑而不会出现问题。通过使用visudo
临时文件进行更改,防止在更改中间自动写入文件(这可能会导致语法错误和/或安全问题),它会锁定此文件以防止同时进行多次编辑,并在写入文件之前进行一些语法检查。
只是scruss所说的替代方法,/etc/sudoers.d/010_pi-nopasswd
通过运行删除文件sudo rm /etc/sudoers.d/010_pi-nopasswd
。然后,编辑主要的sudoers文件会更轻松,更安全,这会破坏sudo。