sudoを使用せずにディレクトリ(コンテンツを含む)を他のユーザーのホームディレクトリに移動しますか?

sudoを使用せずにディレクトリ(コンテンツを含む)を他のユーザーのホームディレクトリに移動しますか?

他のユーザーのホームディレクトリに移動したいディレクトリ(およびその内容を再帰的に)があります。私はこのユーザーのホームディレクトリに書き込む権限がありませんが、彼のパスワードを知っています。

私はどうするか知っていますコピー使用するディレクトリscp -r(参照ここ)。ただし、両方のディレクトリは同じファイルシステムにあるため、ディレクトリを移動したい場合は、元のディレクトリをコピーして削除するのは非効率的です。どのような方法がありますか?移動する(ルートのパスワードはsudoわかりませんが、他のユーザーのパスワードはわかっています)?

関連:バラよりここシングルを移動する方法文書。ただし、この投稿はディレクトリには適用されません。

答え1

所有権を変更せずにファイルを移動するには、そのファイルを含むディレクトリに書き込むことができます。したがって、/home/usera/dir1/dir2コンテンツをに移動するには、/home/userb/dir3次から始めてくださいusera

cd ~/dir1
find . -type d -print0 | xargs -0 chmod 777
su userb
cd ~/dir3
mv ~usera/dir1/dir2 .
exit

次に、usera権限を元の状態(特にdir1)に復元します。

useraただし、移動されたファイルの所有者は維持され続けるため、不便になる可能性があります。もう1つのオプションは;を使用して同様の操作を実行してcp -rlリンクファームを作成することです。これは同様の条件で機能しますuserb

答え2

私はKupferdacheと反対にします:

自宅にパブリックに書き込み可能なディレクトリを作成し、別のアカウントに移動してファイルを自分のディレクトリに移動し、ディレクトリ権限を再度変更します。

注:これは実際の動きです。その後、必要に応じて権限を設定する必要があります。だからあなたの解決策はSCPおそらく安全です(あなたの側の安全で良いファイル権限)

答え3

これはあなたの要件を満たしていますか? rsync は、ディレクトリ、ファイル、および権限を宛先ディレクトリにコピーします。

rsync -avz /path/to/files target_server:/path_to_files

編集:コピーが成功したら、フラグを追加して元のファイルを削除できます。

答え4

うん、あなたはそれを望んでいないので、他のものを試してみましょう!

1 - 他のユーザーとしてコマンドを実行し、パスワードを要求しません。

まず、コマンドの実行にパスワードが必要ないように環境を準備する必要があります。

ユーザー2を準備します。

user2@machine:~$ cp /bin/bash .bash
user2@machine:~$ chmod a+s /home/user2/.bash

はい、user1はパスワードなしでuser2としてログインできるようになりました!

user1@machine:~$ /home/user2/.bash -p
bash-4.3$ whoami 
user2

これで、user1ではパスワードなしでこれを行うことができます。

user1@machine:~$ chmod -R 777 source ; /home/user2/.bash -pc "mv source dest"

ただし、他のユーザーが/home/user2/.bash -pがパスワードなしでuser2としてログインしていることを知っている場合、セキュリティは安全ではないため、これは非常に安全ではない可能性があります。パブリックグループに2人のユーザーがいる場合は安全であるため、chmod a + sの代わりにchmod ug + sを使用して環境を準備し、そのグループのユーザーだけが他のユーザーと同じです。ちょうどbashを実行してください!とても良くないですか?

2-パスワードが必要な作業を実行します(より安全です)。

パブリックグループにユーザーがなく、他のユーザーのようにコマンドを実行したい場合は、次のようにパスワード要求バージョンを使用することを検討できます。

user1@machine:~$ chmod -R 777 source ; su user2 -c "mv source dest"

これは役に立ちますか?

関連情報