Files

在控制台列印 /etc/shadow 文件

  • October 27, 2014

如何更改執行檔的權限以訪問 /etc/shadow 文件?

到目前為止,我有以下 bash 腳本:

#!/bin/bash

gcc print.c -o print
chmod +s print

./print

exit 0

和以下c程式碼:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   FILE *open = fopen("/etc/shadow", "r");
   int tmp;

   do {
     tmp = fgetc (open);
     printf("%c", tmp);
   } while (tmp != EOF);

   fclose(open);
   return 0;
}

我可以輕鬆地列印該/etc/passwd文件,但是一旦我嘗試訪問該文件,我就會得到一個轉儲的核心/etc/shadow

要授予二進制權限以 root 身份執行,您需要在二進製文件上設置“粘性位”。

通常編譯後,您可能會看到:

# ls -l print
-rwxr-xr-x  1 mark  mark  111 24 Oct 17:32 print

設置 set-uid (sticky) 位可以使用和八進制模式完成,或者象徵性地完成(請注意,您需要“root”權限才能更改文件的所有權):

# chown root print
# chmod o-x print
# chmod u+s print
# ls -l print
-rwsr-xr--  1 root  mark  111 24 Oct 17:32 print

在第一個版本s中,正如您已經發現的那樣,權限中的 表示這既是執行檔又是“set-uid”。但是您還必須更改文件的所有權,以便“set-uid”設置root的 uid而不是您自己的使用者。在這一點上,“組”沒有改變它的價值,但這在這種特殊情況下並不重要。(雖然它可能是安全的一個因素。)

上面的最後一行顯示了也可以表示為八進制數的權限,因此如果這是您想要的結果,那麼您可以將chmod上面的兩行替換為一行:

# chmod 4754 print

有關更多詳細資訊,請查看手冊頁chmod

如果這不是您想要的,請在您的問題中說明您的要求。

重要提示:該/etc/shadow文件出於某種原因而保密。如果您使用其他使用者可以執行的東西公開它,您可能會危及系統的安全性。刪除世界可執行權限是對安全性的“點頭”,但是如果您覺得需要以/etc/shadow這種方式公開,則可能是在解決錯誤的問題

引用自:https://unix.stackexchange.com/questions/164079