docker -u 容器内部没有sudo root的处理方案。docker容器化的nextcloud忘记密码的处理。

简介:#

今天在调试nextclou和AD域控互联。结果脑子抽了,刚安装完的nextcloud,居然忘记了管理用户密码。

虽然重新启一下docker挺方便,但是为了以后更好的使用运维nextcloud,还是另找一下解决方案吧。

一:解决方案occ#

sudo -u http php occ user:resetpassword 用户名
sudo -u http php occ user:list
复制代码
 user
  user:add                            添加一个用户
  user:delete                         删除特定用户
  user:disable                        禁用特定用户
  user:enable                         激活特定用户
  user:info                           显示用户信息
  user:lastseen                       显示用户最后登陆了时间
  user:list                           列出所有用户
  user:report                         显示有多少用户访问
  user:resetpassword                  为一个用户重置密码
  user:setting                        读取和修改用户设置
复制代码

二:容器操作#

找到occ,执行occ

复制代码
# cd /
# find -name occ
……
./usr/src/nextcloud/occ
./var/www/html/occ
# cd /var/www/html
# cat occ
#!/usr/bin/env php
<?php
……
require_once __DIR__ . '/console.php';
# ls -la occ
-rwxr-xr-x. 1 www-data www-data 283 Jul 15 02:31 occ
# php occ user:list
Console has to be executed with the user that owns the file config/config.php
Current user id: 0
Owner id of config.php: 33
Try adding 'sudo -u #33' to the beginning of the command (without the single quotes)
If running with 'docker exec' try adding the option '-u 33' to the docker command (without the single quotes)
#  with 'docker exec' try adding the option '-u 33' to the docker command (without the single quotes)
sh: 22: Syntax error: "(" unexpected
# exit
复制代码

毫不意外的出错了,容器没有sudo,但是提示我使用 -u 33 加入docker命令。

复制代码
[root@design ~]# docker exec -it -u 33  nextcloud-app-1 sh
$ ls
3rdparty     core         index.php                 ocs-provider  themes
AUTHORS      cron.php     lib                       public.php    version.php
COPYING      custom_apps  nextcloud-init-sync.lock  remote.php
apps         data         occ                       resources
config       dist         ocm-provider              robots.txt
console.php  index.html   ocs                       status.php
$ php occ user:list
  - jack: jack
复制代码

使用 -u 33 进入容器

使用 php occ 命令即可。

以后使用nextcloud,就可以使用occ命令了。

升级nextcloud,也是需要使用occ命令进行数据扫描,数据库重建的。

 三:其他容器#

其实性质是一样的,关键是-u 的uid。

可以进入容器,cat /etc/passwd 来查看UID

复制代码
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
复制代码

看到root后面的0:0了么?

这个容器可以用 -u 0 进入,就是root权限了。

 

 #

作者:上官飞鸿

出处:https://www.cnblogs.com/jackadam/p/17557372.html

版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。

posted @   上官飞鸿  阅读(1031)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2022-07-16 odoo menuitem
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示