今天看linux系统共享文件时,执行代码:usermod -G shared marvin
居然使安装linux系统唯一的账户marvin的sudo命令失效了。
但我的情况更加复杂,因为我的root是默认禁用的。
也就是说 此时我不能通过 su root 召唤出root账号。
下面先回顾我的学习内容:
共享文件
首先创建好 shared组(以下代码 没有权限的时候需要在前面加 sudo)
mkdir testdir
ls -l --此时目录的 属主和属组 都是marvin
chgrp shared testdir 作用:将目录testdir的默认属组改为shared组
chmod g+s testdir (或者 chmod 2775 testdir PS:符号模式 和 八进制模式)
作用:重置组ID 目录中创建的新文件会以目录的默认属组作为默认属组
ls -l --此时目录的 属主是marvin 属组是 shared
umask 002
cd testdir
touch testfile
ls -l --此时文件的 属主是marvin 属组是shared
解决方案(root禁用且唯一账号marvin的sudo失效时)
理论关键点(1. recovery模式是"只读"的 2. /etc/sudoers文件默认是"只读"的)
备注:我的解决方案用我唯一的账号marvin为例
重启机器,一直按shift 让计算机进入recovery模式
选择 root 按 ENTER
在命令行中输入交互式命令:
mount -o remount rw / (recovery模式进系统硬盘是挂载为"只读"的,要想改文件需要remount / 并添加w权限)
chmod u+w /etc/sudoers (/etc/sudoers文件默认是"只读"的)
vi /etc/sudoers
编辑文件:/etc/sudoers(关键点:在root ALL=(ALL:ALL) ALL 下面仿造添加一行 marvin ALL=(ALL:ALL) ALL)
编辑好后保存 ,查看一下文件内容 cat /etc/sudoers 看账号marvin是否添加成功。
chmod u-w /ect/sudoers (为了安全考虑,收回只读文件的写权限)
备注:recovery模式为只读模式
mount -o remount rw / 这条命令的目的是:使/(根目录)可写
mount命令
参数-o 指定挂载文件系统时的选项
remount 重新安装已经安装了的文件系统
rw 以读写方式挂载
永久解决方案(不折腾)
sudo passwd root 启用root账号(备注:我root的密码是521520)
sudo passwd -l root 禁用root账号