
私のホームディレクトリのファイルを別のユーザーのディレクトリにコピーしようとしています。他のユーザーにsudoアクセス権があり、パスワードはありません。私は次のことをしようとします:
sudo secondUser cp /home/firstUser/file /home/secondUser
これを行う方法はありますか?また、rootアクセス権がなく、2人目のユーザーのパスワードもわかりません。
答え1
編集:はいはい追加設定なしでこれを行うための迅速で簡単な方法です。
cat ~firstUser/file | sudo -u secondUser tee ~secondUser/file >/dev/null
すべてのファイルが転送されます。コンテンツまさに。元のファイルと一致するファイル権限および/またはタイムスタンプが重要な場合は、それぞれを使用して変更する必要がchmod
ありますtouch
。
元の答え:
ここで問題は次のとおりです。
secondUser
ホームディレクトリにアクセスできません。- アクセスできない
secondUser
ホームディレクトリです。
したがって、cp
コマンドを直接実行しても、実行しても、ファイルのsecondUser
コピーを実行することはできません。
アクセス権がないと言うと、root
確かな答えは、誰でも読める中間の場所からファイルをコピーし、/tmp
ファイルの権限を誰でも読めるように変更することです。ただし、ファイル転送中にサーバー上のすべてのユーザーがファイルを読み取ることができるため、ファイル内のデータが機密になった場合はこれを行わないことがあります。もしそうならいいえ機密データの場合は、次の操作を行います。
cp file /tmp/
chmod a+r /tmp/file
sudo -u secondUser cp /tmp/file ~secondUser
rm /tmp/file
より良いオプションは、あなただけが含まれているグループを作成し、そのグループに属するファイルのコピーを所有することsecondUser
です。これにより、ファイルを作成する必要がなくなります。chgrp
/tmp
世界- 読むことはできますが、グループ(使用chmod g+r /tmp/file
)のみ読むことができます。しかし、groupadd
それ自体がルートアクセスを必要とするので、整理は容易ではありません。状況に応じて(頻繁に共有/共同作業を試みる場合に適用される場合がありますsecondUser
)、後で使用するために管理者にこのグループを設定するように依頼することをお勧めします。
答え2
問題は次のとおりです。
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
答え3
sudoの-uフラグを使用すると、コマンドを実行する必要があるユーザーアカウントを指定できますが、他のユーザーのパスワードを知る必要があります。
sudo -u secondUser cp file /home/secondUser/file
他のユーザーのパスワードがわからない場合は、これを実行できない可能性があります。これはシステムの一般的な権限分離設計の一部であり、理想的にはバイパスできません。
また、ファイルを両方のユーザーアカウントにアクセスできる場所(たとえば/ tmp)に移動し、2人目のユーザーにそのファイルを自分のホームディレクトリに移動させることもできます。
答え4
ファイルを/ tmpにコピーし、
su
2番目のユーザーの権限を777に変更します。 / tmpからファイルをコピーします。
コマンドがsudo secondUser
無効です。