私は非常に基本的な混乱を経験しています。どのようにsudo
動作しますか?
スクリプトを実行したときに、次の権限を持つディレクトリにファイルを書き込もうとしたため、失敗したことがわかりました。
$ ls -l thedir
drwxr--r-- usr grp
しかし、スクリプトを実行するとsudo -u usr
動作します。
sudoを使用してスクリプトを正常に実行できる場合は、最初にスクリプトが失敗するのはなぜですか?
つまり、そのユーザーとして実行するのに十分な権限があれば、最初からスクリプトを正常に実行できる必要があると思います。
答え1
他のユーザーとして行動する能力があるからといって、現在のユーザーと同じ権限が付与されるわけではありません。他のユーザーとして機能する現在のユーザーアカウントの能力によっては、権限は現在のユーザーに転送されません。sudo
そして、su
あなたは他のユーザーが「または」「役割」することができます。つまり、sudoを使用すると、実際に一時的にそのユーザーになります。
root
sudo
他のユーザーとしてコンピュータにログオンしても、システムsu
に関する限り、あなたはそのユーザーではないため、そのユーザーと同じ制限(およびアクセス許可)がありますroot
。
答え2
私の考えに最初にすべきことは、スクリプトがあなたのスクリプトのように実行されるかどうかを調べることです。
#!/bin/bash
whoami
作業中のスクリプト(cronjobなど)を呼び出すのと同じ方法で呼び出します。これにより、スクリプトが他のユーザーとして実行されているかどうかについての手がかりを提供できます。