在另一个用户主目录中使用root到mkdir


27

在尝试在另一个用户的/home/devuser1/pubic_html文件夹下创建一个文件夹时遇到了一些困难。我试图避免使用sudo和寻找替代方案。该文件夹的权限为:

drwxr-s--- 2 devuser1  www-data 4096 Apr 28 19:40 public_html

或者,假设我使用sudo前缀,则含义是什么?我读过,sudo用来制作文件夹是一个坏习惯。创建新文件夹后,我仍将其所有权更改为相关用户。例:

chown -vR devuser1:www-data /home/devuser1/public_html/$vhost

Answers:


31

使用install,您可以创建具有特定所有者,组和方式的目录:

install -d -o <user> -g <group> -m <mode> <path>

29

sudo -u [username] mkdir /home/[username]/public_html/[folder_name] 工作正常。

从中可以看到,如果我以同一用户身份登录并在下创建文件夹,则权限和所有权是相同的public_html

你也可以打电话 su -c "mkdir /home/[username]/public_html/[folder_name]" [username]


2
运行时sudo -u USERNAME mkdir DIRNAME,您mkdir以用户身份执行命令USERNAME。这并不完全等同于以as身份登录USERNAME,因为登录还意味着设置环境变量等等,但这是很重要的部分,即以特定用户身份执行进程。
吉尔(Gilles)'所以

1
同样,该用户可能没有权限。
mahemoff

1

授予这些权限后,只有目录所有者或超级用户才能创建子目录。

避免使用额外特权来创建文件夹的唯一方法是将所有权更改为您自己(使用sudo),创建子目录,最后将所有权返回给所有者,但对我来说,这似乎不是一个好的解决方案。


是的,这很难。这是一个愚蠢的问题,但是我有什么选择?
maGz 2013年

怎么样(作为root)运行命令为用户?: sudo -u devuser1 mkdir /home/devuser1/public_html/test。这与创建文件夹不同sudo吗? ls -al显示:drwxr-sr-x 2 devuser1 www-data 4096 Apr 28 23:49 test
maGz 2013年

也许我很天真,但是sudo只要您在此之后更改所有权,我在创建文件夹中就不会看到任何邪恶。
RSFalcon13年

从所ls显示的用户内容中public_html,看起来好像不需要更改所有权,但是可能需要更改权限。
maGz 2013年

我想我也很天真:我没有将文件夹创建为su,而是使用它来认证自己作为要创建文件夹的用户……这有意义吗?
maGz 2013年

0

我试图做一个,mkdir -p /srv/postgres/data/mydir但是因为

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srv 有所有者 root

都不install -d -o <user> -g <group> -m <mode> <path> @ user2313838

也不sudo -u postgres mkdir -p /srv/postgres/data/mydir工作@maGz

因此,我必须将其分为两个命令:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.