<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 文件系統,第 3 部分:權限 > 原文:<https://github.com/angrave/SystemProgramming/wiki/File-System%2C-Part-3%3A-Permissions> ## 提醒我,權限再次意味著什么? 每個文件和目錄都有一組 9 個權限位和一個類型字段 * r,讀取文件的權限 * w,寫入文件的權限 * x,執行文件的權限 chmod 777 | CHMOD | 7 | 7 | 7 | | --- | --- | --- | --- | | 01 | 111 | 111 | 111 | | d | RWX | rwx | rwx | | 1 | 2 | 3 | 4 | 1. 文件類型 2. 所有者權限 3. 組權限 4. 其他人的許可 `mknod`更改第一個字段,即文件的類型。 `chmod`接受一個數字和一個文件并更改權限位。 該文件有一個所有者。如果您的進程具有與所有者(或 root)相同的用戶 ID,則第一個三元組中的權限將適用于您。如果您與文件位于同一組(所有文件也歸組所有),則下一組權限位適用于您。如果以上都不適用,則最后一個三元組適用于您。 ## 如何更改文件的權限? 使用`chmod`(“更改文件模式位”的縮寫) 有一個系統調用`int chmod(const char *path, mode_t mode);`,但我們將專注于 shell 命令。使用`chmod`有兩種常用方法;使用八進制值或符號字符串: ``` $ chmod 644 file1 $ chmod 755 file2 $ chmod 700 file3 $ chmod ugo-w file4 $ chmod o-rx file4 ``` base-8('octal')數字描述了每個角色的權限:擁有該文件的用戶,該組以及其他所有人。八進制數是給予三種權限類型的三個值的總和:read(4),write(2),execute(1) 示例:chmod 755 myfile * r + w + x =數字 * 用戶有 4 + 2 + 1,完全權限 * group 具有 4 + 0 + 1,讀取和執行權限 * 所有用戶都有 4 + 0 + 1,讀取和執行權限 ## 如何從 ls 讀取權限字符串? 使用`ls -l'。請注意,權限將以“drwxrwxrwx”格式輸出。第一個字符表示文件類型的類型。第一個字符的可能值: * ( - )常規文件 * (d)目錄 * (c)字符設備文件 * (l)象征性聯系 * (p)管道 * (b)阻止裝置 * (s)插座 ## 什么是 sudo? 使用`sudo`成為機器上的管理員。例如通常(除非在'/ etc / fstab'文件中明確指定,否則您需要 root 權限才能掛載文件系統)。 `sudo`可用于以 root 身份臨時運行命令(前提是用戶具有 sudo 權限) ``` $ sudo mount /dev/sda2 /stuff/mydisk $ sudo adduser fred ``` ## 如何更改文件的所有權? 使用`chown username filename` ## 如何從代碼中設置權限? `chmod(const char *path, mode_t mode);` ## 為什么有些文件'setuid'?這是什么意思? set-user-ID-on-execution 位在文件運行時更改與進程關聯的用戶。這通常用于需要以 root 身份運行但由非 root 用戶執行的命令。這方面的一個例子是`sudo` set-group-ID-on-execution 更改運行進程的組。 ## 它們為什么有用? 最常見的用例是,用戶可以在程序的持續時間內擁有 root(admin)訪問權限。 ## sudo 運行的權限是什么? ``` $ ls -l /usr/bin/sudo -r-s--x--x 1 root wheel 327920 Oct 24 09:04 /usr/bin/sudo ``` 's'位表示執行和 set-uid;該進程的有效用戶標識將與父進程不同。在這個例子中它將是 root ## getuid()和 geteuid()之間有什么區別? * `getuid`返回真實用戶 ID(如果以 root 身份登錄則為零) * `geteuid`返回有效的用戶 ID(如果作為 root 用戶,則為零,例如由于程序上設置的 setuid 標志) ## 如何確保只有特權用戶才能運行我的代碼? * 通過調用`geteuid()`檢查用戶的有效權限。返回值為零表示程序以 root 身份有效運行。 [轉到文件系統:第 4 部分](https://github.com/angrave/SystemProgramming/wiki/File-System,-Part-4:-Working-with-directories)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看