sudo reboot
有什么方法可以编辑pi用户的权限,以使其重新启动(并安装)。包?
我可以有多个具有不同权限的帐户吗?
谢谢
#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
允许用户pi
以root
用户身份运行所有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。
评论
给出的答案是否有帮助?他们中有人吗?然后将其标记为已回答。是。如果您仍然有兴趣,我将其更新到2017年6月-这个问题是在4年零2个月前提出的,它使我找到了今天解决问题的方法。请查看以下答案: