superuser.cpp
アクセス許可を持つスーパーユーザーによって作成されたファイルがあります770
。ここで、スーパーユーザーは、.cpp と setuidDemonstration.cpp のオブジェクト ファイルをsetuidDemonstration.cpp
使用して、superuser.cpp を開いたファイルを作成します。今、私の質問は: -open("superuser.cpp", O_RDONLY).
rwxrwxr-x
setuidDemonstration プログラムを実行したところ、通常モードとスーパーユーザー モードの両方で、superuser.cpp を開くことができませんでした。なんで?少なくとも、スーパーユーザーモードで開くには成功しているはずです。
今、私はそうします
sudo chmod 4775 setuidDemonstration
。これにより、実行時に setuid ビットが設定されているため、実行中にスーパーユーザーの euid を取得するため、プログラムは通常モードでも superuser.cpp を開くことができますsudo chmod 4775 setuidDemonstration
。しかし、それはできませんでした。また、通常モードから実行中にeuidを印刷すると、印刷され1000
ず0
. なんで?
更新: 間違いを指摘していただきありがとうございます。ファイル パスから「/」を削除したところ、スーパーユーザーでも機能するようになりました。しかし、sudo chmod 4775 setuidDemonstration の後でも、通常モードの実行プログラムはファイルを開くために失敗します。説明してください。