访问所有者为 1023 的目录 - 将 1023 添加到 www-data (?)

访问所有者为 1023 的目录 - 将 1023 添加到 www-data (?)

我有一个名为“/data/storage”的目录,其所有者为 1023,权限为“777”。我的目标是使用 php 应用程序访问此目录的内容 = 我想使用“www-data”组中的用户进行访问?我的 PHP 应用程序只想压缩此目录部分的内容。

此用户 1023 不在 /etc/passwd => 我的第一个想法是将其添加到 www-data 组。但我无法将 1023 用户添加到 www-data 组,因为该用户不存在

$ sudo adduser 1023 www-data
adduser: The user `1023' does not exist.

我无法创建这个1023用户:

$ sudo adduser --no-create-home --disabled-login --force-badname 1023
Allowing use of questionable username. Adding user `1023' ... Adding
new group `1023' (1001) ... Adding new user `1023' (1001) with group
`1023' ... useradd: group '1023' does not exist adduser:
`/usr/sbin/useradd -d /home/1023 -g 1023 -s /bin/bash -u 1001 1023'
returned error code 6. Exiting.

我无法更改目录所有者“1023”,因为我的 wildfly 应用程序使用了此系统用户。

任何建议都将不胜感激 感谢您的回答 谨致问候

答案1

尝试添加组1023而不是用户:

$ sudo addgroup 1023 --force-badname

答案2

当你跑步时ls -l看到数字而不是所有者/组列中的常用用户名,这通常意味着你看不到该用户姓名但数字用户ID

当 Linux 存储文件或目录的所有权时,它不会存储用户名(如pduck),而是存储数字用户 ID(如1050)。当我们发出ls -l或类似内容时,将查找实际名称以/etc/passwd显示它,即该文件充当用户 ID 和用户名之间的映射。

现在,当您删除用户 ( deluser pduck) 时,该用户拥有的文件仍然存在,并且元数据仍将 userid 视为1050 其所有者。由于缺少/etc/passwd命令提供的映射,现在只能显示数字 ID 而不是名称。这就是您看到的不是正确名称的ls -l原因。1023

当我在我的计算机上构建 tarfile 而您在您的计算机上解压它时,情况也是如此:tar存储我的用户 ID(1050),当您的计算机上没有具有该 ID 的用户时,它将显示1050为所有者。(tar 有开关可以改变这种行为,但这是一般的想法。)

现在您有两种选择:要么创建一个具有给定用户 ID 的新帐户1023(就您而言)。要么将所有文件和目录的所有权从1023已创建的用户更改为用户。

创建一个 ID 为 1023 的用户

sudo adduser --uid 1023 --gecos "Perl Duck" --disabled-password pduck
Adding user `pduck' ...
Adding new group `pduck' (1023) ...
Adding new user `pduck' (1023) with group `pduck' ...
Creating home directory `/home/pduck' ...
Copying files from `/etc/skel' ...

开关--gecos--disabled-password是可选的;您可以根据需要省略它们。

或者:将 1023/1023 拥有的所有文件的所有权更改为用户barthez和组users

# Try first (i.e. just display what WOULD be done):
sudo find /data/storage -gid 1023 -exec echo chgrp users {} +
sudo find /data/storage -uid 1023 -exec echo chown barthez {} +

# actually change the ownership:
sudo find /data/storage -gid 1023 -exec chgrp users {} +
sudo find /data/storage -uid 1023 -exec chown barthez {} +

顺便说一下,你的

sudo adduser --no-create-home --disabled-login --force-badname 1023

创建了一个用户姓名 1023用户身份 1001。您必须使用 --force-badname开关,因为名称看起来像数字,可能会让用户和命令感到困惑,尤其是当1023存在另一个具有正确名称但 ID 的用户时。试想一下chown 1023 some_file:您指的是文本用户名 1023 还是数字 ID 1023?因此,这被认为是坏名字应避免。

相关内容