安装 Ubuntu Server 过程中创建的首个用户无法实现免密 sudo 效果
- 0次
- 2021-07-08 12:46:59
- idczone
正常情况下,在安装好 Ubuntu Server 之后, adduser 新建一个用户 Tom 后,如果希望这个 Tom 能够在执行 sudo 时不需要输密码,那么使用 sudo visudo 命令在 /etc/sudoers 里面添加这么一行: Tom ALL=(ALL) NOPASSWD: ALL ,即可实现,这个没有问题。
那么问题来了,在安装 Ubuntu Server 的过程中,安装流程默认会让你新建一个用户(首个用户),假设叫 Mick ,这个 Mick 默认就具备了 sudo 权限,但是如果我想让 Mick 也具备不需要输密码也能 sudo 的能力,那么同样使用 sudo visudo 命令在 /etc/sudoers 里面添加这么一行: Mcik ALL=(ALL) NOPASSWD: ALL ,亲测发现在 sudo 的时候仍然需要密码,求教高手这是怎么回事?如何解决呢?拜谢!
和 LZ 问题无关,只是吐槽下,为毛教程都是让改 /etc/sudoers ?把用户加到 sudo 组里就行了的事情。非得那么费劲。。。。。。。唉。
Mcik? Mick?
要免密码还是需要 visudo 的。。
不好意思,是 Mick ,笔误。但是,服务器上是没写错的。
两个问题:
1. 如果想要让一个用户具有 sudo 权限,只要加入到相应的组就行了,不需要修改 /etc/sudoers
这个组名, ubuntu 好像就是 sudo , centos 是 wheel
2. /etc/sudoers 这个文件,最好不要直接编辑,要使用 visudo
3. 你的问题我没试过,觉得隔一段时间输个密码也不费事。楼主发现问题了结一下贴
谢谢指点。
1 、赋予 sudo 权限只需要加入 sudo 组,俺知道,但是这样不能实现免密码 sudo 。
2 、 /etc/sudoers 这个文件,最好不要直接编辑。俺也知道的,我是通过 sudo visudo 来编辑的,不是直接编辑的。
3 、所述问题依旧在。
直接把文件内容贴上来看看,说不定有 typo 呢
还有这行加在文件最后比较合适
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/
sbin:/bin"
Host alias specification
User alias specification
Cmnd alias specification
User privilege specification
root ALL=(ALL:ALL) ALL
Mick ALL=(ALL:ALL) NOPASSWD: ALL
Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
See sudoers(5) for more information on "directives:
/etc/sudoers.d
其实上面已经说了一半答案了。
你的用户在%sudo 组里,所以改下%sudo 组试试看?
PS: 如果 Mick 那行不加的话,请记得务必给 root 设一个密码。 Ubuntu 的 sudo 用户组,如果你不小心给自己账户设组的时候把 sudo 组去掉了的话,就再也回不去 root 了。
我的建议是加上 Mick ,同时给%sudo 加上 NOPASSWD 。
你有没有重启过 sudo 的服务呢? `sudo service sudo restart`
另外,关注一下最后面那个目录`sudoers.d`,里面还有文件的,找一找有没有自己的那个用户,如果有的话,这个目录里面的内容会覆盖你的设置。
http://askubuntu.com/questions/192050/how-to-run-sudo-command-with-no-password
上面是一个参考链接,我觉得还不错。
BTW :答案没有经过尝试,纯属瞎答。正准备试一下的时候, vagrant up ,发现我的 D 盘挂了。正在恢复数据中。
我连服务器都重启过 2 次了。现在试试 的办法。
看了一眼 debian 的 sudo 服务文件,里面只写了一件事,就是把 /var/lib/sudo 里的东西全删了。
非常感谢,已经测试成功,你的方法靠谱。我是在保留 Mick 那行的基础上,再同时给%sudo 加上 NOPASSWD 。
添加的代码如下:
………………
Mick ALL=(ALL:ALL) NOPASSWD: ALL
………………
Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
由此又想到了另外一个问题,这样应该是 sudo 组下所有用户都可以免密码 sudo 了吧,而不是指定的某一个人,当然,这个问题有点钻牛角尖了。
再次感谢以上积极帮忙解答的各位!
自然是这样。如果要安全的话,留下自己名字的 sudo 权限,然后把 sudo 从自己的 groups 里删了就好。
我估计就是你用户名写错了,用户名一般都是全小写。大写字母默认要加强制参数才能设置。
恩恩,确实,我傻了 :)
不是用户名写错了,小写的用户名都试过了,问题照旧。 的方法是正解。
问题解决,见 13 楼,结贴。
恢复了一中午硬盘,搞好了测试了一下。
useradd testuser -G sudo
sudo visudo /etc/sudoers
把 Mick ALL=(ALL:ALL) NOPASSWD: ALL 这一行放在所有的组授权下面就可以。
看情况应该是下面的:%sudo 这一行覆盖了你上面的 NOPASSWD 设定。
就是加在上一行,没有发现任何问题,非常自然。 sudo ls ,如丝般顺滑
推荐 visudo ,之前就是直接改文件把 sudo 搞挂了。。没有 root , sudo 进不去。。
为什么让 sudo 不要密码 那和直接 root 登录有啥区别?
我今天也遇到了这个问题,弄的满头包。
最后发现一条妙计:
pkexec "/usr/sbin/visudo"
他会自动查找具有 sudo 权限的用户,你选择一个普通用户,比如自己的用户,然后输入密码,珰珰:可以使用 root 权限编辑了。
尝试了一下 ubuntu 和 centos 好像都有这个命令。
不打 sudo 便无法获得特权。
修改并且保存 /etc/sudoers 之后,把用户先注销再登录一次
加入 sudo 组是允许使用 sudo 命令,/etc/sudoers 文件是配置如何使用 sudo 命令、有权使用 sudo 命令的用户如何划分更细的权限。
直接 root 的话所有命令自动是 root 权限,无密码 sudo 只有在 sudo xxx 的时候才是 root 权限,其它时候还是普通权限。
那打了 sudo 没有密码和在 root 下直接执行哪个更方便,又想用 sudo 又不想用密码不懂为啥。被 windows 宠坏了? sudo 还是需要密码的,不需要密码就用 root 直接登录。
真是莫名其妙。
我需要一个不用打密码就能提权,但是不打 sudo 就不提权的环境,有什么问题吗?
为啥别人一定要像你一样,要么所有命令都提权执行,要么就不停敲密码?
你这种想法我才不懂是要为啥。
如果是生产环境还真是不要这样用的好, 当然如果不是的话也不是说一定不让用, 只是安全性降低了而已
有问题。
如果你想坚持这么用,那也可以。
Ubuntu 新安装的 sudoers 文件有问题, adm admin 用户组傻傻分不清楚,不了解是 typo 还是故意的
别自虐成么,还要求别人也像你一样自虐。绝大部分情况下都是不打 sudo 的,如果特意多敲了 sudo 当然是有这意图的,干嘛还要再敲一次密码呢(敲这玩意很爽?还是因为弱密码),又不是把 sudo rm -rf 做成 alias
我不觉得有两个锁的门比有一个锁的更安全
倒觉得初学者为了纠正习惯性的打 sudo 才有必要设密码
应该也没降低多少安全性。
只有在个人账户被入侵且入侵者不知道账户密码的时候才有区别。
远程都是证书登录的,而且只在自己电脑上登录。
所以很少有机会被人在不拿到密码的情况下拿到账号 shell 的。
+1 。 Nice 比喻。
19 楼正解,下面这行覆盖了你的设置,
%sudo ALL=(ALL:ALL) ALL
要么把这行注释掉,要么把你设置的挪下来。
sudo su
这样不行么
呵呵
免密码设置需要加到末尾
看起来是个好命令,我是直接在 recovery mode 下重新修改的权限。。
只有我一个人感觉这样很危险吗?
不危险,禁用 root 登录,设置自己账户用证书登录,没什么危险的。
所有的命令都是 root 权限很爽是吧。
呵呵,我是用 sudo 有密码形式进行,你要用 sudo 没密码这种脱裤子放屁的形式,我也干涉不了。
那好,你想删除你家目录下面的一个东西: rm ~/bin/foobar
结果手一滑,打成了 rm ~ /bin/foobar
所以说最好不要在 root 下直接执行命令,而是用普通用户 sudo
然后用 sudo 有密码嫌麻烦,自然要用无密码 sudo 啊,这也是无密码 sudo 的意义:在麻烦的需要输入密码的 sudo 和不需要密码的 root 之间设置了一个两全其美的选择。
你要是非得说有密码 sudo 可以在输入密码的时候再查看输入命令有没有错误,那我也没法:这是应该在按回车之前就看好的。
你们爱 sudo 没密码就没密码啦,我喜欢 sudo 有密码,就这样,别再回了。