cp +パーミッションを上書きしたくない


23

cpターゲットファイルの権限を変更せずにコマンドを使用するにはどうすればよいですか?例えば:

cp /tmp/file   /home/file

私は変更したくないchownchgrp/home/file


3
ソースのアクセス許可を保持するのか、ターゲットのアクセス許可を保持するのかについては明確ではありません。また、スーパーユーザーにクロスサイトスパムを送信しました。
トム・ショー

レコードの場合、「保存」オプションはsourceを参照していますcp -pターゲット属性をソース属性と一致させます(それにより保持します)。
mpersico

1
このページに出会ったばかりです。デフォルトでは、cpはターゲットを許可し、user:groupを保持する必要があります。これは、ターゲットを更新モードで開き、inodeを保持するためです。したがって、答えがこれを示さない理由は、私には明らかではありません。
ブルドーザー

回答:


30

マニュアルをcp開いたのが ...

次はファイルのパーミッションと所有権+グループを上書きしません:

cp --no-preserve=mode,ownership /tmp/file /home/file

所有権とグループシップを保持する場合は、ルート権限が必要であることに注意してください。

マニュアルからの抜粋:

  --preserve[=ATTR_LIST]
      preserve   the   specified   attributes   (default:  mode,owner-
      ship,timestamps), if possible  additional  attributes:  context,
      links, xattr, all

著者が望んだものとは正確に異なります。(またはそのエイリアス)の--no-preserve後に使用する場合は意味が--preserveありcpます。それ以外の場合は、の動作に影響しません。作成者は、既存のターゲットファイルのファイルモードを維持し、その内容のみを上書きしたかった
basin

例:sshホストキーを置き換えますcp --no-preserve=mode,ownership ssh* /etc/ssh/。これにより、秘密鍵が世界中で読み取り可能になります。
流域

manページの--preserveの説明は、何を保存するのかを明確にしないため、私見では無意味です。ソースまたはターゲットの属性
Waslap


0

または、この特定の目的のために作成されたGNU coreutilsからのより良いインストールプログラムを使用できます。再帰はできないことに注意してください(-Rまたは-rオプションはありません)。

http://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html


1
ターゲットの所有物またはグループを保持するためのスイッチはありませんでした。それを新しい値に強制します。
ピート

0

許可関連のスイッチを使用しないでください。特に--no-preserve、奇妙な動作をするためです。

良い:

[il@localhost Downloads]$ sudo cp ssh_host_* /etc/ssh/
[il@localhost Downloads]$ ls -l /etc/ssh
total 604
-rw-r--r--  1 root root     581843 Oct 20  2017 moduli
-rw-r--r--  1 root root       2276 Oct 20  2017 ssh_config
-rw-------  1 root root       3907 Oct 20  2017 sshd_config
-rw-r-----. 1 root ssh_keys    227 Oct  2 12:26 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        172 Oct  2 12:26 ssh_host_ecdsa_key.pub
-rw-r-----. 1 root ssh_keys    411 Oct  2 12:26 ssh_host_ed25519_key
-rw-r--r--. 1 root root        100 Oct  2 12:26 ssh_host_ed25519_key.pub
-rw-r-----. 1 root ssh_keys   1679 Oct  2 12:26 ssh_host_rsa_key
-rw-r--r--. 1 root root        392 Oct  2 12:26 ssh_host_rsa_key.pub

悪い:

[il@localhost Downloads]$ sudo cp --no-preserve=mode,ownership ssh_host_* /etc/ssh/
[il@localhost Downloads]$ ls -l /etc/ssh
total 604
-rw-r--r--  1 root root     581843 Oct 20  2017 moduli
-rw-r--r--  1 root root       2276 Oct 20  2017 ssh_config
-rw-------  1 root root       3907 Oct 20  2017 sshd_config
-rw-r--r--. 1 root ssh_keys    227 Oct  2 12:27 ssh_host_ecdsa_key
-rw-r--r--. 1 root root        172 Oct  2 12:27 ssh_host_ecdsa_key.pub
-rw-r--r--. 1 root ssh_keys    411 Oct  2 12:27 ssh_host_ed25519_key
-rw-r--r--. 1 root root        100 Oct  2 12:27 ssh_host_ed25519_key.pub
-rw-r--r--. 1 root ssh_keys   1679 Oct  2 12:27 ssh_host_rsa_key
-rw-r--r--. 1 root root        392 Oct  2 12:27 ssh_host_rsa_key.pub

0

デフォルトでは、cpは許可をオーバーライドしません。許可が上書きされないようにしたい場合は、

cp --preserve=mode,ownership /tmp/file /target_dir_where_file_resides
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.