※当サイトの記事には、広告・プロモーションが含まれます。

LinuxのcpのオプションrとRの違い。階層ディレクトリの構造ごとcpは冪等性が無い罠

gigazine.net

セキュリティ企業のTruffle Securityが、GoogleOAuth認証に見つかった欠陥について報告しています。この欠陥は、倒産したスタートアップのドメインを購入した第三者が、そのドメインを使って以前の従業員のアカウントに不正アクセスできてしまうというものです。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

Truffle Securityは発見した欠陥を検証するため、実際に倒産企業の1つのドメインを購入し、ChatGPTやSlack、Notion、Zoom、人事システムなど、その企業が使用していた様々なSaaSサービスの元従業員アカウントにアクセスできることを実証しています。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

特に深刻なのは人事システムで、社会保障番号や給与明細、保険情報などの機密情報が含まれていたとのこと。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

ソーシャルニュースサイトのHacker Newsでは、「GoogleOAuth認証の欠陥という捉え方は不適切であり、ドメインの所有権に基づく認証の根本的な問題だ」とする意見がありました。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

また、Truffle Securityは「subクレームは信頼できない」と述べていますが、このsubクレームを適切に使用すれば問題を防げるという指摘もなされています。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

いずれにしても、HackerNewsでは「技術的な欠陥というよりもドメインベース認証に限界があり、倒産後のドメインや個人情報の管理の必要性を示す問題である」という見方が多くみられました。

GoogleのOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE

⇧ とありますが、

記事の見出しを『GoogleOAuth認証の欠陥を利用して他人になりすます方法をセキュリティ企業が解説 - GIGAZINE』のままにするのはいかがなものか...

LinuxのcpのオプションrとRの違い

ネットの情報を漁っていたところ、

linux cpコマンドについて · GitHub

⇧ とあり、「cp」コマンドで再帰的にコピーする場合、オプション「-R」の方を利用する方が良い模様。

公式のマニュアルでは、オプション「-r」は利用すべきでないとのこと。

階層ディレクトリの構造ごとcpは冪等性が無い罠

で、階層構造になっているディレクトリをコピーする場合、挙動がよく分かっていなくて調べたりしたので備忘録として。

ちなみに、コピー元に存在しないディレクトリは、コピー先に作成してくれるわけではないので、

teratail.com

⇧ 事前にコピー先にディレクトリを作成しておく必要がありますと。

そして、

qiita.com

⇧ 上記サイト様にありますように、挙動が安定しない罠...

あとは、

kakashibata.hatenablog.jp

⇧ オプション「--parents」というのもありますと。

話が脱線しまくりましたが、以下のような階層構造があったとして、

/tmp    
/home/ts0818/work/vagrant
│  docker-compose.yml
│  Vagrantfile
│
├─.vagrant
│  ├─machines
│  │  ├─master
│  │  │  └─virtualbox
│  │  ├─worker1
│  │  │  └─virtualbox
│  │  └─worker2
│  │      └─virtualbox
│  └─rgloader
│          loader.rb
│
├─ansible
│      ansible.cfg
│      inventory.ini
│      k8s-setup.yml
│
└─k8s-manifests
        awx-deployment.yml
        squid-deployment.yml

⇧ workディレクトリ配下(workディレクトリを含む)をコピーするのであれば、

cp -pR /home/ts0818/work /tmp

結果

/tmp/work/vagrant
│  docker-compose.yml
│  Vagrantfile
│
├─.vagrant
│  ├─machines
│  │  ├─master
│  │  │  └─virtualbox
│  │  ├─worker1
│  │  │  └─virtualbox
│  │  └─worker2
│  │      └─virtualbox
│  └─rgloader
│          loader.rb
│
├─ansible
│      ansible.cfg
│      inventory.ini
│      k8s-setup.yml
│
└─k8s-manifests
        awx-deployment.yml
        squid-deployment.yml
/home/ts0818/work/vagrant
│  docker-compose.yml
│  Vagrantfile
│
├─.vagrant
│  ├─machines
│  │  ├─master
│  │  │  └─virtualbox
│  │  ├─worker1
│  │  │  └─virtualbox
│  │  └─worker2
│  │      └─virtualbox
│  └─rgloader
│          loader.rb
│
├─ansible
│      ansible.cfg
│      inventory.ini
│      k8s-setup.yml
│
└─k8s-manifests
        awx-deployment.yml
        squid-deployment.yml

上記を実行せずに、vagrantディレクトリ配下(vagrantディレクトリを含む)をコピーするのであれば、

cp -pR /home/ts0818/work/vagrant /tmp

結果

/tmp/vagrant
│  docker-compose.yml
│  Vagrantfile
│
├─.vagrant
│  ├─machines
│  │  ├─master
│  │  │  └─virtualbox
│  │  ├─worker1
│  │  │  └─virtualbox
│  │  └─worker2
│  │      └─virtualbox
│  └─rgloader
│          loader.rb
│
├─ansible
│      ansible.cfg
│      inventory.ini
│      k8s-setup.yml
│
└─k8s-manifests
        awx-deployment.yml
        squid-deployment.yml
/home/ts0818/work/vagrant
│  docker-compose.yml
│  Vagrantfile
│
├─.vagrant
│  ├─machines
│  │  ├─master
│  │  │  └─virtualbox
│  │  ├─worker1
│  │  │  └─virtualbox
│  │  └─worker2
│  │      └─virtualbox
│  └─rgloader
│          loader.rb
│
├─ansible
│      ansible.cfg
│      inventory.ini
│      k8s-setup.yml
│
└─k8s-manifests
        awx-deployment.yml
        squid-deployment.yml

というような形になりますと。

とりあえず、罠が多過ぎる「cp」コマンドなのだが、

qiita.com

⇧ 上記サイト様にありますように、コピー元の末尾のディレクトリ名とコピー先の末尾のディレクトリ名が同じ場合の挙動が罠過ぎるんよね...

「冪等性」が無いのが辛過ぎるんよ...

毎度モヤモヤ感が半端ない…

今回はこのへんで。