別のユーザーのホームディレクトリで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

回答:


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ユーザとしてコマンドをUSERNAMEUSERNAMEログインは環境変数の設定なども意味するため、asとしてログインすることとまったく同じではありませんが、重要な部分、つまり特定のユーザーとしてプロセスを実行することです。
ジル 'SO-悪であるのをやめる'

1
また、そのユーザーには権限がない場合があります。
mahemoff

1

これらの権限が与えられた場合、ディレクトリの所有者またはスーパーユーザーのみがサブディレクトリを作成できます。

余分な特権を使用してフォルダーを作成することを避けることができる唯一の方法は、所有権を自分自身に変更し(でsudo)、サブディレクトリを作成し、所有権を最終的に所有者に戻すことですが、私には良い解決策ではありません


ええ、これは難しいものです。これはばかげた質問ですが、私の選択肢は何ですか?
maGz

そのユーザーとして(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

たぶん私はナイーブになっているかもしれませんがsudo、その後所有権を変更する限り、フォルダの作成に悪さは実際にはありません。
RSFalcon7

何よりls、ユーザーの内容に明らかにしpublic_html、それが所有権を変更するかのように表示されるパーミッションがけれども、多分、必要とされていません。
maGz

私もこれを考えているのはナイーブだと思います:としてフォルダを作成しているのではなく、フォルダを作成しようとしているユーザーとして自分自身su認証するためにそれを使用しています...
maGz

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

@maGzsudo -u postgres mkdir -p /srv/postgres/data/mydir動作しません

だから私はそれを2つのコマンドに分割しなければなりません:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.