闯了大祸,根目录权限变成我自己了。
我的磁盘空间不够了,之前分区的时候没搞好,根目录给了 1.7T 一直闲置,为了下载一个 700 多 G 的文件,我简单的 mount 到了一个下载目录下,transmission 下载的时候报错说权限问题,我直接 chown -R uuair:www-data 了,我还纳闷,一个空目录,怎么会卡住了。。。结果 sudo 的时候发现错误,然后,./目录下大部分文件都不是 root 的了,尤其是/etc 下,所有的都是我了。
好了,现在怎么办?
第一:/home文件夹下有 3.2T 的文件,我没有其他的硬盘可以备份。
第二:我运行了 12 个 docker ,其中有几个配置了很久,可能我自己都记不清了,这部分怎么保留?
我使用了docker commit -p 然后 docker save -o ~/container-backup.tar container-backup的方法保存成 tar 文件了,但现在拷贝不出来
不是云服务,就是一台 GEN7 的服务器,我没有富裕的硬盘备份,3.2T 的资料,我把 docker 一个一个的备份成 tar 文件了。。。有一个目录不知道为什么,变成了用户 911 的,组也是 911 ,但我没这个用户。。。
先恢复关键系统目录的所有权吧
sudo chown -R root:root /etc
sudo chown root:root /bin
sudo chown root:root /lib
sudo chown root:root /usr
sudo chown -R root:root /usr/bin
sudo chown -R root:root /usr/lib
这什么都不用干吧, 就算都是你的, root 用户照样能读写
不懂,直接权限还原回去会遇到什么问题?
#1
#2
不成啊,sudo 就提示错误了。虽然我有 root 权限,但我也需要 su 才可以。。
sudo: /etc/sudo.conf is owned by uid 1000, should be 0
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
#3 还原权限怎么操作??我现在./99%的文件都不是 root 的了,我没法 sudo 啊。
进 rescue ,mount 后,把别的同版本 OS 的关键文件都 rsync 过去。
没办法切换到 root 用户?实在不行重启到单用户模式进去改应该可以。
记得我知乎看过一个热帖就是根目录权限被改掉了,好像挺难恢复的
我找不到第二台电脑做这事,而且一个一个的改看起来也不现实啊。。。能不能覆盖安装一下?保留/home 不动,直接安装,是不是就可以了?
少侠好武功
用你自己的用户把 sudo.conf 改成 root 不行?
找个 liveCD 进去,把 docker tar 包放 home ,home 里面的文件应该是同一用户的,-R 直接改 owner 就行。
对于 docker 的配置,在/var/lib/docker/containers/*/config.v2.json 可以拿到相关信息。
至于系统本身是没救了,尤其是 etc ,不同文件对应不同 owner 。
所以我直接用 root
如果 home 是单独的分区,重装时候不选择格式化 home 就行;如果不是,那就有些麻烦,怎么操作都有丢数据的风险,最好还是找个盘备份出来再动。
其实还可以救。用 livecd 或者恢复环境进去,chroot 方式重新安装 sudo 以及 su 的包。这样保证你能进正常系统用 sudo 和 su ,其他有权限问题的可执行文件用这种方式解决。普通文件有 sudo 后改下权限就行了,就是有点麻烦。
metamug.com/article/networking/unable-to-access-sudoers-owned-by-uid-1000.html
用 dd 命令,把 home 打包一下。重装再还原(也许行
少侠好武功
看有没有备份,无解,基本很多软件都会开自己的用户。
如果是云机器 可以申请 加硬盘
如果不能加 想办法 通过网络 把文件传出去
可以备份回滚
挺多 linux 发行版支持,比如 opensuse 的 snapper
如楼上所说,尝试进单用户模式,操作一下。
chown -R 的威力如同 rm -rf
先别重启,有个 docker-autocompose 应用,能把你正在跑的容器转成 docker-comopse.yml ,可以备份当前容器的各种配置,不过你的系统已经烂了,试试能不能把 autocompose 镜像拉下来,然后逐个备份容器生成 yml 文件
找个虚拟机,备份一下权限,然后 livecd 进去恢复权限试试?
少侠好功力。
你没有进行磁盘快照备份吗?
下次记得千万别飘了,少个.区别太大代价太承重 2333
权限乱了以后其实更难恢复,听上去是 centOS ,更严,2333
拿个 u 盘做个 livecd 启动,然后把磁盘挂载到 livecd 系统中,改文件权限
u 盘启动
如果不会就摇人吧
太麻烦了
如果是云服务的话,临时租个内网服务器,在挂个 oss ,备份好现有数据后,直接重装系统和服务
如果物理服务器,就借个电脑搞一下,几 T 数据用不了多少时间
我倒有个傻瓜点的方法。不嫌麻烦的话。
1 ,首先解决 sudo 。或者以 root 用户登录。这是必须要做的。
2 ,安装同版本同类型 Linux 发行版。参照权限重新恢复。或者这个安装好的同类型版本 Linux 的权限每个文件 acl 用 shell 打印出来导出成文件。
3 ,在旧系统,以同样脚本恢复回去。其实这样做完肯定还有问题,只能自己慢慢查日志去解决了。
如果觉得这样解决时间太长,重新安装配置其实是最优选择。
一般系统提供的包管理软件,以 rpm 为例
--setperms set permissions of files in a package
--setugids set user/group ownership of files in a
这个是可以修复权限的,可以去试试
没 rm -rf 就不叫事儿
本地设备?
拿个 u 盘 livecd 改回来呗
#32 怎么改回来啊??所有的目录都是我自己了,手动我不知道怎么改啊
全部改成 777 ,文件拖出来,重装系统
还好只是 chown ,如果是 chmod -R 那就惨了得对着具体文件恢复,你这样找个正常的相同系统直接对着恢复就行。恢复必须要 liveCD 环境,随便找个闲置的存储设备插进去启动就行,另外 sudo 有问题不代表就不能用了,这只是一个软件包没有也能切到 root 。
#15 这个我做了,开了两个 ssh 进去,但就是不成。。。pkexec 哪里始终无法运行。
如果所有者都是你,那不需要 sudo 啊,直接 chown 改
#4 根据错误提示,先用 su 拿到 root ,然后用 chmod 4755 和 chown 把这个文件改一下,把 sudo 问题解决了先。
- 把你自己的 group 加到 admin rules ,以 ubuntu 为例, 只有 sudo/admin group 才行
cat /usr/share/polkit-1/rules.d/49-ubuntu-admin.rules
polkit.addAdminRule(function(action, subject) {
return ["unix-group:sudo", "unix-group:admin"];
});
然后再 pkttyagent -p $(echo $$) |pkexec chown root /path/to/file
(ctrc+c to abort pkttyagent )
- 如果你在 docker 组里
docker run -it --privileged --name fixperm -v /:/host busybox
然后编辑 /host/path/to/file - 重启时候编辑 Grub menu ,append to kernel command line
systemd.debug-shell=1
OR
init=/bin/sh
想有个能查看历史复制记录的软件 剪贴板可以查看那种 有推荐的软件吗 Windows 系统下按 Windows+v 快捷键就是 ditto 、ecopaste copyQ …
大家都有什么人生遗憾的?分享分享我:没好好上学,导致现在想参与进 AI 看懂 AI 是怎么干的,只能从头开始对数学下手。还不知道自己能不能拿下。人生流下的泪水都是脑子进过的水呀…
刚才无聊顺手打开 csdn , 主页看到一个图像卷积的文章,点开,文章需要 VIP 解锁,虽然看样子文章不是什么高质量文章(科普的),但是好奇之下点了一下开通 VIP, 然后就…