文件/目录的默认权限

该博客围绕Linux系统中umask值展开,以root和zhangsan用户分别进行umask值测试,包括查看、修改umask值,新建目录和文件并查看默认权限。还分析了普通用户家目录权限为700的原因,涉及useradd命令相关的默认配置文件。
  • 问题

1)以用户root登入,测试umask掩码值

    1. 查看当前的umask值
    2. 新建目录udir1、文件ufile1,查看默认权限
    3. 将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
    4. 请把umask值重新设置为022

2)以用户zhangsan登入,查看当前的umask值

3)请问为什么普通用户的家目录权限都是700

  • 方案

本题的主要目的主要是让大家能够记住并理解umask值的作用,它决定着这个Shell环境创建文件以及目录的默认权限。

  • 步骤

实现此案例需要按照如下步骤进行。

步骤一:以用户root登入,测试umask掩码值

    1. 查看当前的umask值
    2. 新建目录udir1、文件ufile1,查看默认权限
    3. 将umask设为077,再新建目录udir2、文件ufile2,查看默认权限
    4. 请把umask值重新设置为022

命令操作如下所示:

[root@localhost ~]# whoami       //确保自己登录身份是root

root

[root@localhost ~]# umask        //查看当前umask值,需用最大权限777减去022

0022

[root@localhost ~]# umask –S     //另外一种查看方式,-S选项是直接显示默认权限

u=rwx,g=rx,o=rx

分析: 查看创建目录以及文件的默认权限,是否与umask一致,注意文件默认安全起见没有赋予x执行权限

[root@localhost ~]# mkdir /udir1        //创建测试目录

[root@localhost ~]# touch /ufile1       //创建测试文件

[root@localhost ~]# ls -ld /udir1/      //查看是否与umask值相符合

drwxr-xr-x. 2 root root 4096 2月  26 16:37 /udir1/

[root@localhost ~]# ls -l /ufile1        //查看是否与umask值相符合

-rw-r--r--. 1 root root 0 2月  26 16:37 /ufile1

[root@localhost ~]# umask 077            //更改umask值

[root@localhost ~]# umask                //查看是否修改成功

0077

[root@localhost ~]# umask –S             

u=rwx,g=,o=

[root@localhost ~]# mkdir /udir2         //创建测试目录

[root@localhost ~]# touch /ufile2        //创建测试文件

[root@localhost ~]# ls -ld /udir2        //查看是否与umask值相符合

drwx------. 2 root root 4096 2月  26 16:43 /udir2

[root@localhost ~]# ls -l /ufile2        //查看是否与umask值相符合

-rw-------. 1 root root 0 2月  26 16:44 /ufile2

[root@localhost ~]# umask 022             //更改umask值为022

[root@localhost ~]# umask                 //查看是否修改成功

0022

步骤二:以用户zhangsan登入,查看当前的umask值(本题的目的主要是为了让大家知道管理员与普通用户的默认umask是不同的)

命令操作如下所示:

[root@localhost ~]# umask    //查看root的umask值

0022

[root@localhost ~]# su – zhangsan   //切换zhangsan用户身份

[zhangsan@localhost ~]$ umask       //查看zhangsan的umask值

0002

步骤三:请问为什么普通用户的家目录权限都是700

分析: 本题主要考察,useradd这条命令在执行的时候,与那些默认配置文件相关,有两个配置文件分别为/etc/default/useradd、/etc/login.defs。

命令操作如下所示:

[root@localhost ~]# grep -v "^#" /etc/login.defs | grep -v "^$" | grep -i umask

UMASK           077       //此配置文件规定创建用户家目录时,需遵循的umask值

<think>好的,我现在需要回答用户关于Ubuntu系统中默认文件权限和umask的问题。首先,我要回忆一下umask的作用,它是用来控制新创建文件目录默认权限的。在Linux系统中,文件目录权限通常用三位八进制数表示,比如755或644。 用户提到的是目录下的默认权限设置,所以需要区分文件目录的不同处理。默认情况下,Ubuntu的umask值是多少呢?根据之前的引用,比如引用[2]和[3]提到,通常umask设置为022,这样文件权限是644(即666减去022),目录是755(777减去022)。不过可能不同版本或配置会有差异,需要确认。 接下来,我需要解释umask如何影响权限。对于文件默认权限是666减去umask值,但要注意,如果umask的某一位是奇数,比如执行权限被屏蔽,那么文件的实际权限可能需要再调整,因为文件通常不会默认有执行权限。例如,umask为022,666-022=644,即rw-r--r--。而目录默认权限是777减去umask,所以022得到755,即rwxr-xr-x。 然后,用户可能想知道如何查看当前umask值。使用umask命令即可,直接输入umask会显示当前值,比如0022或者022。在终端中运行这个命令,用户就能看到当前会话的umask设置。 另外,用户可能关心默认umask的位置。根据引用[1],Ubuntu可能将umask设置在/etc/login.defs中,而其他系统可能在/etc/profile或/etc/bash.bashrc里。需要检查这些文件来确认系统的默认配置。例如,查看/etc/login.defs中的UMASK行。 还有临修改和永久修改的方法。临修改直接在终端输入umask 022即可,但关闭终端后会恢复,如引用[2]所述。永久修改需要编辑用户的家目录下的.bashrc或.profile文件,添加umask设置,如引用[3]提到的在~/.bashrc末尾添加umask 022。对于系统全局设置,可能需要修改/etc/profile或/etc/login.defs,但需管理员权限。 最后,用户可能需要知道如何验证设置是否生效。创建文件目录后,使用ls -l查看权限是否符合预期。例如,创建文件touch testfile,权限应为644;创建目录mkdir testdir,权限应为755。 需要确保回答结构清晰,分点说明,并引用相关的参考资料。同,生成相关问题要围绕umask、权限设置、修改方法等方面提问,帮助用户深入理解。</think>Ubuntu系统中文件/目录默认权限由umask值控制,其权限计算规则如下: ### 一、默认权限规则 1. **基础权限**: - 文件默认基础权限为$666$(rw-rw-rw-) - 目录默认基础权限为$777$(rwxrwxrwx) 2. **权限屏蔽计算**: - 实际权限 = 基础权限 - umask值 - 例如umask=022: $$文件权限 = 666 - 022 = 644 \quad (\text{rw-r--r--})$$ $$目录权限 = 777 - 022 = 755 \quad (\text{rwxr-xr-x})$$ ### 二、Ubuntu默认umask值 - **普通用户**:默认umask为$002$(对应权限$664$文件/$775$目录) - **root用户**:默认umask为$022$(对应权限$644$文件/$755$目录) 可通过命令验证当前umask值: ```bash umask # 输出示例:0002 或 0022 ``` ### 三、umask配置文件路径 1. **系统级配置**: - `/etc/login.defs`(Ubuntu主要配置文件)[^1] - `/etc/profile`(部分发行版使用) 2. **用户级配置**: - `~/.bashrc`(bash shell用户配置文件)[^3] - `~/.profile`(图形界面登录加载) ### 四、修改方法 | 类型 | 操作命令/步骤 | 生效范围 | |------------|-----------------------------------------------------------------------------|-------------------| | 临修改 | `umask <数值>`(如`umask 027`) | 当前终端会话 | | 永久用户级 | 在`~/.bashrc`末尾添加`umask 022` | 用户所有新会话 | | 永久系统级 | 编辑`/etc/login.defs`中`UMASK`行(需root权限) | 所有用户 | ### 五、验证示例 ```bash touch testfile && mkdir testdir ls -l testfile testdir # 输出示例: # -rw-r--r-- 1 user user 0 testfile # drwxr-xr-x 2 user user 4096 testdir ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值