偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Linux umask 詳解:創(chuàng)建文件權(quán)限錯(cuò)亂的真正原因

系統(tǒng) Linux
在 Linux 系統(tǒng)中,我們經(jīng)常會遇到文件或目錄權(quán)限問題。很多同學(xué)知道 chmod 可以修改權(quán)限,但卻容易忽視 umask 這個(gè)“幕后黑手”。今天我們就從原理到實(shí)戰(zhàn),徹底搞懂 umask。

一、什么是 umask?

umask(User Mask / File Mode Creation Mask)是文件默認(rèn)權(quán)限的屏蔽值

當(dāng)你在 Linux 中新建文件或目錄時(shí):

  1. 系統(tǒng)會先給它一個(gè)“最大默認(rèn)權(quán)限”;
  2. 然后再用 umask 去掉一些權(quán)限;
  3. 得到最終權(quán)限。
  • 文件最大默認(rèn)權(quán)限666 (rw-rw-rw-)
  • 目錄最大默認(rèn)權(quán)限777 (rwxrwxrwx)

最終權(quán)限計(jì)算公式:

最終權(quán)限 = 最大默認(rèn)權(quán)限 - umask

?? 舉個(gè)例子:

  • umask = 022

     a.文件:666 - 022 = 644 (rw-r--r--)

     b.目錄:777 - 022 = 755 (rwxr-xr-x)

  • umask = 002

        a.文件:664 (rw-rw-r--)

        b.目錄:775 (rwxrwxr-x)

這就是為什么不同環(huán)境下創(chuàng)建的文件權(quán)限不同。

下面是一個(gè)可視化的流程圖??

最終結(jié)果就是你創(chuàng)建文件/目錄時(shí)看到的默認(rèn)權(quán)限。

┌────────────────────────┐
      │  文件/目錄默認(rèn)權(quán)限值   │
      │  文件:666  目錄:777 │
      └───────────┬──────────┘
                  │
                  ▼
       ┌──────────────────────┐
       │    當(dāng)前用戶 umask     │
       │   (如 022, 027 等)    │
       └───────────┬──────────┘
                   │
                   ▼
      ┌────────────────────────┐
      │   默認(rèn)權(quán)限 - umask 位   │
      │ (按位“與非”運(yùn)算  ~umask)│
      └───────────┬──────────┘
                  │
                  ▼
      ┌────────────────────────┐
      │      實(shí)際生效權(quán)限       │
      │  文件:如 644 目錄:755 │
      └────────────────────────┘

二、如何查看 umask?

1. 當(dāng)前環(huán)境

umask

直接輸出當(dāng)前 shell 的 umask,比如:0022。

2. 模擬完整登錄環(huán)境

su -l -c "umask" root/test

這會切換到 root或者test用戶,并加載 對應(yīng)用戶的完整登錄環(huán)境,得到 用戶真實(shí)使用的 umask。

3. 腳本檢測

寫一個(gè)小腳本,一次性檢查多處配置:

#!/bin/bash
echo"===== 當(dāng)前 shell 的 umask ====="
umask
echo

echo"===== su - root 登錄環(huán)境的 umask ====="
su -l -c "umask" root
echo

echo"===== /etc/login.defs 中的默認(rèn) umask ====="
grep -E '^\s*UMASK' /etc/login.defs 2>/dev/null || echo"未設(shè)置"
echo

echo"===== /etc/profile* 和 /etc/bashrc 中的 umask 設(shè)置 ====="
grep -R "umask" /etc/profile* /etc/bashrc 2>/dev/null || echo"未設(shè)置"
echo

echo"===== root 用戶家目錄下的 umask 設(shè)置 ====="
grep -R "umask" /root/.* 2>/dev/null || echo "未設(shè)置"

?? 或者直接搜:

grep -R umask /root/.* /etc/profile* /etc/bashrc /etc/login.defs

?? 對比總結(jié)

方法

說明

適用場景

umask

查看當(dāng)前用戶/當(dāng)前 shell 環(huán)境

日常使用

su -l -c "umask" 用戶

查看目標(biāo)用戶真實(shí)登錄環(huán)境

系統(tǒng)排查 / 安全審計(jì)

推薦:做安全基線檢查時(shí),一定要用 第二種方式,結(jié)果才準(zhǔn)確。

三、如何修改 umask?

1. 臨時(shí)修改(僅當(dāng)前會話有效)

umask 027

退出 shell 后失效。

2. 永久修改(寫入配置文件)

  • 全局生效

     a./etc/profile

     b./etc/bashrc 或 /etc/bash.bashrc

  • 單個(gè)用戶生效

        a. ~/.bashrc

        b.~/.bash_profile

示例:

echo "umask 027" >> ~/.bashrc
source ~/.bashrc

四、為什么 umask 會不一樣?

常見現(xiàn)象:同一個(gè)環(huán)境采用2種方式檢查,結(jié)果不同

[root@host ~]# su -l -c "umask" root
0027

[root@host ~]# umask
0022

通過ansilbe創(chuàng)建文件夾,發(fā)現(xiàn)文件權(quán)限為750,而不是755,證明su -l -c umask root方式檢測的才是準(zhǔn)的。

原因:

  • su -l root(帶 -l)會模擬完整登錄環(huán)境,加載 root 的配置文件(如 /etc/profile~/.bashrc),因此得到更嚴(yán)格的 0027。
  • 直接 umask 繼承的是當(dāng)前 shell 的環(huán)境,常見是 0022。

五、總結(jié)

  • umask 決定新建文件/目錄的默認(rèn)權(quán)限。
  • 文件最大 666,目錄最大 777,減去 umask 就是最終權(quán)限。
  • 查看 umask 有兩種方式

     a.umask → 當(dāng)前環(huán)境

     b.su -l -c "umask" 用戶 → 模擬完整登錄環(huán)境,ansible或者shell遠(yuǎn)程執(zhí)行用這種方式做環(huán)境檢查比較準(zhǔn)確。

  • 修改 umask 需要寫配置文件才能永久生效。
  • 推薦配置:生產(chǎn)環(huán)境 027,既保證可用性,又兼顧安全性。
責(zé)任編輯:龐桂玉 來源: 運(yùn)維之美
相關(guān)推薦

2009-08-04 09:37:34

Linux創(chuàng)建文件命令Linux創(chuàng)建文件命令

2009-12-23 10:58:58

Linux創(chuàng)建文件命令

2009-12-23 10:58:58

Linux創(chuàng)建文件命令

2009-12-22 15:06:38

Linux創(chuàng)建文件系統(tǒng)

2010-12-24 14:12:00

umask命令

2023-03-21 12:52:05

Linux創(chuàng)建文件

2019-02-19 09:00:45

Linux創(chuàng)建文件命令

2009-08-04 09:53:21

linux創(chuàng)建文件命令tail命令自解壓

2009-08-31 12:56:36

C#創(chuàng)建文件夾

2009-09-25 10:01:07

Linux教程Linux mkdir創(chuàng)建文件夾命令

2024-01-10 08:20:50

Linux編輯器pico

2014-03-17 10:27:08

Linux cp備份

2009-08-04 09:42:09

linux創(chuàng)建文件命令ddlinux

2014-05-22 10:25:44

Umask 值Linux

2013-04-25 10:30:03

Linux系統(tǒng)文件權(quán)限

2013-04-10 13:28:52

Linux命令

2009-08-31 13:07:26

C#創(chuàng)建文件

2011-12-24 18:14:02

Symbian

2009-12-09 10:10:08

PHP創(chuàng)建文件夾

2019-04-10 10:15:52

Linux邏輯卷文件系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號