Linux與命令列基礎

在許多 Linux 上執行「ls -l /usr/bin/passwd」會顯示「-rwsr-xr-x 1 root root ...」。擁有者執行位置上的「s」是什麼意思?

  1. A設定了 setuid,不論誰執行,該程式都以檔案擁有者(這裡是 root)的權限運作
  2. B設定了黏滯位元(sticky bit),擁有者與 root 以外的使用者無法刪除或重新命名這個檔案
  3. C表示這個檔案是共用函式庫,只會被其他程式呼叫,無法直接當作指令執行
查看答案與解析

正確答案:A. 設定了 setuid,不論誰執行,該程式都以檔案擁有者(這裡是 root)的權限運作

s 表示 setuid(set user ID)位元與執行權限同時設定,該程式不是以執行者而是以檔案擁有者的權限運作。一般使用者變更自己的密碼時,passwd 必須更新只有 root 能寫入的 /etc/shadow,所以它是 setuid root 的程式。setuid 程式若有缺陷,可能成為一般使用者取得 root 權限的跳板,因此不可隨意設定。以八進位表示時位於 4000 的位數,執行 chmod 4755 就會成為 -rwsr-xr-x。

  • A. 正確。不是以執行者,而是以擁有者 root 的權限運作。
  • B. 黏滯位元會在其他人的執行位置顯示為「t」(例如 /tmp 的 drwxrwxrwt)。設定在目錄上時,其中的檔案只有擁有者等少數人能刪除。
  • C. 是否為共用函式庫不會顯示在權限表示法中。s 是關於執行時所用權限的標記。
練習這個領域 前往領域頁面

Linux與命令列基礎的其他題目

  1. 依序執行上面的指令時,最後的 cat 顯示的內容是下列何者?
  2. 如上所示,在有 a.txt、沒有 nofile 的目錄中執行最後一個指令。結果是下列何者?
  3. 在上面的操作中,最後一個指令輸出的值是下列何者?
  4. 在上面的操作中,最後的 grep 輸出的行是下列何者?
  5. 選項中省略行首的空白。在上面的操作中,最後的管線輸出的行是下列何者?