ホームディレクトリから別のユーザーのディレクトリにファイルをコピーしようとしています。他のユーザーがパスワードなしでSudoアクセスできる。私は次のようなことを試みました:
Sudo secondUser cp /home/firstUser/file /home/secondUser
それを行う方法はありますか?また、rootアクセスがなく、secondUserのパスワードがわかりません。
編集:ありis追加の設定なしでこれをすばやく簡単に行う方法。
cat ~firstUser/file | Sudo -u secondUser tee ~secondUser/file >/dev/null
これにより、すべてのファイルのcontentが正確に転送されます。ファイルの権限やタイムスタンプを元のファイルと一致させる必要がある場合は、chmod
とtouch
を使用して個別に修正する必要があります。
元の回答:
ここでの問題は次のとおりです。
secondUser
はホームディレクトリにアクセスできません。secondUser
のホームディレクトリにアクセスできません。そのため、cp
コマンドを自分で実行するかsecondUser
として実行するかに関係なく、ファイルのコピーを実行することはできません。
root
のアクセス権がないと言った場合、明白な答えは、/tmp
などの中間の読み取り可能な場所からファイルをコピーし、ファイルの権限を誰でも読み取り可能なものに変更することです。ただし、ファイル内のデータが機密情報である場合は、転送中にサーバー上の誰もがファイルを読み取ることができるため、これを実行したくない場合があります。 not機密データの場合は、次のようにします。
cp file /tmp/
chmod a+r /tmp/file
Sudo -u secondUser cp /tmp/file ~secondUser
rm /tmp/file
整理できる場合、より良いオプションは、あなたとsecondUser
のみを含むグループを作成し、chgrp
/tmp
内のファイルのコピーをそのグループが所有するようにすることです。グループ。このようにして、ファイルをworld-readにする必要はありませんが、グループのみが読み取り可能です(chmod g+r /tmp/file
を使用)。ただし、groupadd
自体はrootアクセスを必要とするため、これを配置するのは簡単ではありません。状況に応じて(頻繁にsecondUser
と共有/コラボレーションしようとしている場合は、該当する可能性があります)、今後使用するためにこのグループを設定するよう管理者に依頼することを検討してください。
の問題:
Sudo -u secondUser cp /home/firstUser/file /home/secondUser
secondUser
になるとすぐに、/home/firstUser/file
にアクセスできなくなります。
解決策は、secondUser
のファイルをfirstUser
として開き、secondUser
にそのファイル記述子を継承させる必要があることです。
セキュリティ対策として、Sudo
は0
、1
、および2
を除くすべてのファイル記述子を閉じます。ただし、この場合はこれで十分です(より多くのファイル記述子の継承を明示的に許可できます)。
Sudo -u secondUser < /home/firstUser/file sh -c 'cat > /home/secondUser/file'
メタデータを保持できる、より一般的なソリューションの場合、tar
またはcpio
などの出力をSudo
プロセスのstdin
に置くことができます。
tar c file1 file2 file3 | Sudo -u secondUser tar x -C ~secondUser
Sudoの-uフラグを使用すると、コマンドを実行するユーザーアカウントを指定できますが、他のユーザーのパスワードを知っている必要があります。
Sudo -u secondUser cp file /home/secondUser/file
他のユーザーのパスワードがわからない場合、これを行うことができない場合があります。これは、システムの通常の特権分離設計の一部であり、バイパスできないことが理想的です。
また、両方のユーザーアカウントがアクセスできる場所(/ tmpなど)にファイルを移動し、2番目のユーザーに自分のホームディレクトリに移動させることもできます。
できるよ
su secondUser
次に、2番目のユーザーとして作業を行います。