精华内容
下载资源
问答
  • umask命令
    2019-02-07 11:16:00

      

    基础命令学习目录首页

     

    原文链接:https://blog.csdn.net/stpeace/article/details/45509425

           umask命令用得相对不多, 而umask函数则用得相对较多。 下面, 我们先来看看umask命令, 它主要用来设置权限屏蔽, 说白了, 就是间接地设置权限。
           我们先打开一个linux shell终端, 执行一些命名, 得到如下的结果:
     [taoge@localhost learn_c]$ umask
    0002
    [taoge@localhost learn_c]$ touch a.txt
    [taoge@localhost learn_c]$ ls -l
    total 0
    -rw-rw-r-- 1 taoge taoge 0 May  5 06:57 a.txt
    [taoge@localhost learn_c]$ umask 022
    [taoge@localhost learn_c]$ umask
    0022
    [taoge@localhost learn_c]$ touch b.txt
    [taoge@localhost learn_c]$ ls -l
    total 0
    -rw-rw-r-- 1 taoge taoge 0 May  5 06:57 a.txt
    -rw-r--r-- 1 taoge taoge 0 May  5 06:58 b.txt
    [taoge@localhost learn_c]$ mkdir zzz
    [taoge@localhost learn_c]$ ls -l
    total 4
    -rw-rw-r-- 1 taoge taoge    0 May  5 06:57 a.txt
    -rw-r--r-- 1 taoge taoge    0 May  5 06:58 b.txt
    drwxr-xr-x 2 taoge taoge 4096 May  5 07:00 zzz
    [taoge@localhost learn_c]$
          我们看到, 在我的系统中, umask的默认值是002(当然, 在你系统中, 很可能就不是酱紫的)。 002是个什么意思呢? 意思是说, 如果创建文件, 那么它的默认权限是664, 如果是创建目录, 那么它的权限是775.
          好, 我们创建一个文件a.txt, 然后查看一下, 发现该文件的权限果然是664.
          下面, 我们来改一下umask的默认值, 改为022, 并检验一下, 发现确实是修改成功的, 这意味着:创建文件的默认权限是644, 创建目录的默认权限是755, 我们实践一下, 发现果真如此。
        
          由此可见, umask就是为控制默认权限而生的。
           还没完, 我们再打开另一个终端, 进行操作, 结果为:
    [taoge@localhost learn_c]$ umask
    0002
    [taoge@localhost learn_c]$ ls -l
    total 4
    -rw-rw-r-- 1 taoge taoge    0 May  5 06:57 a.txt
    -rw-r--r-- 1 taoge taoge    0 May  5 06:58 b.txt
    drwxr-xr-x 2 taoge taoge 4096 May  5 07:00 zzz
          我们看到, 在另外一个shell终端中, umask的值仍然是002,  可见, 一个shell进程中的umask值仅在当前shell进程中才有效。

          好, 我们接着看umask函数,
    它常用来控制进程创建文件/目录的默认权限, 代码如下:
    #include <stdio.h> int main(){ system("touch test0.txt"); system("mkdir folder0");  umask(022); system("touch test1.txt"); system("mkdir folder1");  umask(066); system("touch test2.txt"); system("mkdir folder2");  system("ls -l");  return 0;}
          结果为:
     
     [taoge@localhost learn_c]$ umask 000
    [taoge@localhost learn_c]$ gcc test.c
    [taoge@localhost learn_c]$ ./a.out
    total 24
    -rwxrwxrwx 1 taoge taoge 4925 May  5 07:43 a.out
    drwxrwxrwx 2 taoge taoge 4096 May  5 07:43 folder0
    drwxr-xr-x 2 taoge taoge 4096 May  5 07:43 folder1
    drwx--x--x 2 taoge taoge 4096 May  5 07:43 folder2
    -rw-rw-rw- 1 taoge taoge    0 May  5 07:43 test0.txt
    -rw-r--r-- 1 taoge taoge    0 May  5 07:43 test1.txt
    -rw------- 1 taoge taoge    0 May  5 07:43 test2.txt
    -rwxrw-rw- 1 taoge taoge  279 May  5 07:42 test.c
    [taoge@localhost learn_c]$ umask
    0000
    [taoge@localhost learn_c]$
     
         我们知道,  shell是父进程, ./a.out进程是子进程.  下面来分析一下:
         1. 根据test0.txt可知, 父进程可以影响子进程的默认屏蔽字。
         2. 根据test1.txt可知, 子进程可以改变自己的默认屏蔽字。
         3. 根据最后shell进程的屏蔽字为000可知, 子进程不会改变父进程的屏蔽字。

         实际上, umask命令与函数的用法是一致的。 那一年, 我第一次看到umask, 还使劲琢磨着这个玩意儿是干啥的, 哈哈。
    ---------------------
    作者:stpeace
    来源:CSDN
    原文:https://blog.csdn.net/stpeace/article/details/45509425
    版权声明:本文为博主原创文章,转载请附上博文链接!
     
     
    原文链接:https://www.cnblogs.com/zhangchengxiang/p/5196439.html

    umask使用方法

      A 什么是umask?

     

      当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。

     

      你的系统管理员必须要为你设置一个合理的 umask值,以确保你创建的文件具有所希望的缺省权限,防止其他非同组用户对你的文件具有写权限。在已经登录之后,可以按照个人的偏好使用umask命 令来改变文件创建的缺省权限。相应的改变直到退出该shell或使用另外的umask命令之前一直有效。一般来说,umask命令是在/etc /profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久 性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。

     

      B 如何计算umask值

     

      umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。

     

      该命令的一般形式为:

     

      umask nnn

     

      其中nnn为umask置000-777。

     

      让我们来看一些例子。

     

      计算出你的umask值:

     

      可以有几种计算umask值的方法,通过设置umask值,可以为新创建的文件和目录设置缺省权限。下表列出了与权限位相对应的umask值。

     

      在计算umask值时,可以针对各类用户分别在这张表中按照所需要的文件/目录创建缺省权限查找对应的umask值。

     

      例如,umask值002 所对应的文件和目录创建缺省权限分别为6 6 4和7 7 5。

     

      还有另外一种计算umask值的方法。我们只要记住umask是从权限中“拿走”相应的位即可。

     

      umask值与权限

     

      umask 文件 目录

     

      0 6 7

     

      1 6 6

     

      2 4 5

     

      3 4 4

     

      4 2 3

     

      5 2 2

     

      6 0 1

     

      7 0 0

     

      例如,对于umask值0 0 2,相应的文件和目录缺省创建权限是什么呢?

     

      第一步,我们首先写下具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。

     

      第二步,在下面一行按照umask值写下相应的位,在本例中是0 0 2。

     

      第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

     

      稍加练习就能够记住这种方法。

     

      第四步,对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限比特即可。

     

      这就是上面的例子, 其中u m a s k值为0 0 2:

     

      1) 文件的最大权限 rwx rwx rwx (777)

     

      2) umask值为0 0 2 --- --- -w-

     

      3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

     

      4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

     

      下面是另外一个例子,假设这次u m a s k值为0 2 2:

     

      1) 文件的最大权限 rwx rwx rwx (777)

     

      2 ) u m a s k值为0 2 2 --- -w- -w-

     

      3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

     

      4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

     

      C 常用的umask值

     

      下表列出了一些umask值及它们所对应的目录和文件权限。

     

      常用的umask值及对应的文件和目录权限

     

      umask 值 目录 文件

     

      0 22 7 5 5 6 4 4

     

      0 27 7 5 0 6 4 0

     

      0 02 7 7 5 6 6 4

     

      0 06 7 7 1 6 6 0

     

      0 07 7 7 0 6 6 0

     

      D umask命令

     

      如果想知道当前的umask 值,可以使用umask命令:

     

      $umask

     

      如果想要改变umask值,只要使用umask命令设置一个新的值即可:

     

      $ umask 002

     

      确认一下系统是否已经接受了新的u m a s k值:

     

      $umask

     

      002

     

      $touch testfile

     

      $ls -l testfile

     

      rw- rw- r--

     

      在使用umask命令之前一定要弄清楚到底希望具有什么样的文件/目录创建缺省权限。否则可能会得到一些非常奇怪的结果;例如,如果将umask值设置为6 0 0,那么所创建的文件/目

     

      录的缺省权限就是0 6 6!

     

    转载于:https://www.cnblogs.com/machangwei-8/p/10354563.html

    更多相关内容
  • umask命令可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。 语法格式:umask [参数] [权限掩码] 常用参数: -S 以文字的方式来表示...
  • Linux umask命令 Linux umask命令指定在建立文件时预设的权限掩码。 umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。 语法umask...
  • umask命令

    千次阅读 2019-11-19 20:40:04
    命令格式:umask [模式] 说明:创建文件或目录时的掩码。文件创建的权限默认为666-umask,而目录创建的权限是用777-umask,为什么文件和目录创建时候指定的权限不一样,因为666是777减去了文件的执行权限,也就是用...

    命令格式:umask [模式]

    说明:创建文件或目录时的掩码文件创建的权限默认为666-umask,而目录创建的权限是用777-umask,为什么文件和目录创建时候指定的权限不一样,因为666是777减去了文件的执行权限,也就是用777-111,默认不让所有用户对文件有执行权限,目的就是防止恶意的文件被执行,给系统的安全带来威胁

    使用方式:当不指定模式时,是查看默认的umask,当指定模式时,系统就会采用指定的模式,但是,指定的是临时生效的,也就是在当前shell下,如果想全局永久生效,那么就需要修改配置文件/etc/bashrc,修改的位置如下:
    在这里插入图片描述
    第一个位置是修改普通用户的umask,第二个是修改root的umask。修改完了之后使用source /etc/bashrc重新读取配置文件。

    由于root用户默认的umask为022,所以当使用root创建一个目录时,目录的默认权限为755(drwxr-xr-x),创建的文件的默认权限为666-022 = 644(-rw-r--r--)

    但是,当我们修改umask的时候,如果修改的umask反向遮罩出来的文件的权限中带有执行(x)权限,会默认对最终权限进行加一(还是防止恶意文件的执行),演示一下。

    在这里插入图片描述

    创建的test.txt文件默认权限为666-001 = 665,即-rw-rw-r-x,由于会默认加一,所以文件的最终权限就变为了

    -rw-rw-rw-,设计的就是这么巧妙。

    注意:权限中包含x权限默认加一仅仅对文件生效,对目录无效的。
    本人博客https://www.lightingsui.com

    展开全文
  • linux的umask命令

    2022-05-24 15:49:00
    umask命令可以参看当前环境下创建文件/文件夹时的默认权限 查看umask的值 使用命令umask命令可以查看当前帐号环境下umask的值 可以看到这里0022,文件/文件夹权限就表示最高权限减去umask值: 权限r:4 w:2 x:1 ...

    umask命令可以参看当前环境下创建文件/文件夹时的默认权限

    查看umask的值

    使用命令umask命令可以查看当前帐号环境下umask的值
    在这里插入图片描述
    可以看到这里0022,文件/文件夹权限就表示最高权限减去umask值:

    权限r:4 w:2 x:1
    文件夹最高权限:777
    文件最高权限(文件默认无执行权限):666
    
    所以目前我的环境下的
    文件夹权限为:777-0022=755
    文件权限为:666-0022=644
    

    修改umask

    使用umask ***即可修改umask的值:

    uamsk 002
    

    但是这种方式并不能永久更改umask的值,只是将当前的shell临时更改
    如果要永久更改umask的值,可以将命令添加至/etc/profile或/etc/bashrc文件中,然后source改文件即可

    展开全文
  • umask 命令返回或设置系统文件模式创建掩码的值。 umask 命令语法 用法: umask [-p] [-S] [mode] 用户文件创建掩码设置为模式。如果 mode 以数字开头,则将其解释为八进制数; 否则,它被解释为类似于 chmod...

    在 Linux 和其他类 Unix 操作系统上,新文件是使用一组默认权限创建的。而umask 命令返回或设置系统文件模式创建掩码的值。

    umask 命令语法

    在这里插入图片描述

    用法:

    umask [-p] [-S] [mode]

    用户文件创建掩码设置为模式。如果 mode 以数字开头,则将其解释为八进制数; 否则,它被解释为类似于 chmod接受的符号模式掩码。 如果省略模式,则打印掩码的当前值。

    -S 选项使掩码以符号形式打印; 默认输出是八进制数。

    如果提供了 -p 选项,并且省略了 mode,则输出的格式可以重复用作输入。 如果模式已成功更改或未提供模式参数,则返回状态为 0,否则返回 false。

    什么是权限,它们是如何工作的?

    你可能知道,系统上的每个文件都与一组用于保护文件的权限相关联,文件的权限决定了哪些用户可以访问该文件,以及他们对该文件拥有何种访问权限。

    所有基于 Unix 的操作系统都有一组属性,用于定义允许谁读取、写入或执行特定文件或目录。 这些权限适用于三个称为“权限类”的类别,它们的说明如下:

    用户(User):默认情况下,用户是文件或文件夹的所有者或创建者。 新文件的所有权默认归该用户所有。
    组(Group):组是一组用户,它们对文件或文件夹具有相同的访问级别或权限。
    其他(Other):其他组定义为不包括在前两个类别中的任何用户。 这些用户没有创建文件或文件夹,也不属于特定的用户组。 该组包括未被标识为用户或属于用户组的每个人。

    权限如何表示?

    有两种方式来表示文件的权限:符号(使用符号,如“r”表示读取,“w”表示写入,“x”表示执行)或使用八进制数值。

    例如,当您在命令行中使用 ls 命令列出目录的内容时,如下所示:

    在这里插入图片描述
    将看到文件权限信息。 在这里,它以符号方式表示,如下例所示:

    -rw-r–r--

    这里有十个符号。 第一个破折号(“-”)表示这是一个“常规”文件,换句话说,不是目录(或设备,或任何其他特殊类型的文件)。

    其余九个符号代表权限:rw-r–r--。 这九个符号实际上是三组,每组三个符号,分别代表各自的具体权限,从左到右:

    符号含义

    rw- 文件的所有者可以读取、写入,但不能执行此文件作为系统上的进程。
    r-- 文件组中的任何人都可以读取,但不能执行此文件,不能写入。
    r-- 任何人都可以读取该文件,但不能写入该文件或将其内容作为进程执行。

    为了更好地了解 umask 的工作原理,我们需要了解八进制模式安全设置。 三个 rwx 权限 (Read-Write-Execute) 值转换为三位二进制值,并由单个八进制值表示,如下表所示:

    权限八进制值二进制值描述
    0000没有权限
    –x1001只有执行权限
    -w-2010只有写权限
    -wx3011写入和执行权限
    r–4100只有阅读权限
    r-x5101读取和执行权限
    rw-6110读写权限
    rwx7111执行所有三项操作的权限,即读取、写入和执行

    如何计算umask值?

    在这里插入图片描述

    第一个零是特殊许可数字,它是一种特殊的安全功能,可以忽略。三位数字代表文件或目录的 umask 的八进制值。 让我们解释一下使用 umask 得到的输出,0002 。

    上面的输出 (0 0 2) 显示所有者的访问权限是 0,组成员的访问权限是 0,其他的访问权限是 2。

    例子

    要将其视为符号表示,请使用 -S 标志:

    umask -S

    在这里插入图片描述

    它象征性地返回相同的值,例如:

    u=rwx,g=rwx,o=rx

    其中u代表用户,g代表组,o代表其他。 这告诉我们如果我们创建一个新文件,它的默认权限为 664,即 666(文件的默认权限)被 002(我们的 umask 值)屏蔽。

    让我们通过使用 touch 命令创建一个新文件来测试一下:

    在这里插入图片描述

    正如预期的那样,新文件的权限为 -rw-rw-r-- 或 0664:所有者和组可以读取或写入该文件,而其他人只能读取它。

    umask命令C/C++代码实现

    int main(int argc, char * * argv)
    {
        char * arg;
        char * arg0 = *argv;
    
        /* 函数指针保存八进制或符号 umask 打印选择:  */
        int (* print_umask)(char * arg0) = print_umask_octal;
    
        /* 没有任何参数(两个,计算 argv[0]),只需打印 umask:  */
        if(argc < 2)
        {
            if(!arg0)
            {
                arg0 = "";
            }
            return print_umask(arg0);
        }
    
    
        argv += 1;
    
        /* 第一个参数是一个选项(以“-”开头)或 umask:  */
        arg = *argv;
    
        if(*arg == '-')
        {
            arg += 1;
            if(!strcmp(arg, "-help") || !strcmp(arg, "h"))
            {
                return print_help(arg0);
            }
            if(!strcmp(arg, "-version") || !strcmp(arg, "V"))
            {
                return print_version(arg0);
            }
    
            if(!strcmp(arg, "-symbolic") || !strcmp(arg, "S"))
            {
                print_umask = print_umask_symbolic;
            }
            else
            /* 如果它*不是*“选项结束”(“--”)“选项”: */
            if(strcmp(arg, "-"))
            {
                return error_bad_option(arg - 1, arg0);
            }
            argv += 1;
            arg = *argv;
    
            if(!arg)
            {
                return print_umask(arg0);
            }
        }
    
        /* 现在 arg 应该是 umask。  */
    
        if(!parse_and_set_umask(arg))
        {
            return error_bad_umask(arg, arg0);
        }
    
        /* 将 argv 移过 umask,只在 argv 中留下命令: */
        argv += 1;
        arg = *argv;
    
        if(!arg)
        {
            return print_umask(arg0);
        }
        execvp(arg, argv);
        return error_executing_command(arg, arg0);
    }
    
    

    运行结果:

    在这里插入图片描述

    在这里插入图片描述

    chmod 和 umask 有什么区别?

    umask 命令只能用于新文件,即在创建新文件时,在使用 umask 命令之前创建的任何文件都将无效。
    chmod 命令必须用于已经存在的文件,它用于更改之前创建的文件的访问权限。

    总结

    umask 或用户文件创建模式是一个 Linux 命令,用于为新创建的文件夹和文件分配默认文件权限集。 术语掩码引用了权限位的分组,每个位都定义了如何为新创建的文件设置相应的权限。 可以通过调用 umask 命令更改掩码中的位。

    欢迎关注微信公众号【程序猿编码】,需要umask命令完整源码的添加本人微信号(c17865354792)

    展开全文
  • umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask...
  • umask命令详解,umask用途原理,计算方式 # umask umask令新建文件和目录拥有默认权限。 可以看到root创建的目录是755,文件是644 [root@zaishu zaishu]# touch test.txt [root@zaishu zaishu]# mkdir test [root@...
  • Linux umask命令

    2021-05-13 22:13:50
    Linux umask命令Linux umask命令指定在建立文件时预设的权限掩码。umask可用来设定[权限掩码]。[权限掩码]是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。语法umask [-...
  • 简单介绍一下umask 命令使用方法

    千次阅读 2021-03-13 08:13:40
    现在越来越多的人使用linux系统,接下来为大家介绍一下linux系统的umask命令 1.命令简介 umask 为Shell内建命令,用于设置创建文件时的权限掩码。 权限掩码由 3 个八进制数字组成,将 777(八进制)减掉权限...
  • 01、文章目录 文章目录01、文章目录02、命令介绍03、命令格式04、常用选项05、参考示例5.1 查看当前用户的权限掩码5.2 以字母的形式显示新文件的默认权限5.3 带umask...而umask命令就是用来设置限制新建文件权限的掩
  • umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask...
  • 文件权限管理;修改文件权限 - chmod;修改文件权限 - 示例;修改文件权限 - chown;修改文件权限 - 示例;修改文件权限 - chgrp;修改文件权限 - 示例;预设权限掩码 - umask;预设权限掩码 - 示例;谢谢聆听
  • umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。语法umask(选项)(参数)选项-p...
  • 系统之后创建一个文件总是有一个默认权限的,使用umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod...umask命令格式umask [-p] [-S] [mode]umask 函数格式及头文件...
  • 这节课我们重点来学习权限管理命令,说到权限大家可能第一时间能想到的就是读、写、执行 rwx 三种权限,在正式讲解权限命令之前,先简单的介绍一下rwx权限对于文件和目录的不同含义。 权限字符 权限 对文件的...
  • umask 命令

    2017-03-08 17:57:19
  • linux中的umask命令

    2019-06-27 19:35:58
    umask是chmod配套的,总共为4位(gid/uid,属主,组权,其它用户的权限),不过通常用到的是后3个,例如你用chmod 755 file(此时这文件的权限是属主读(4)+写(2)+执行(1),同组的和其它用户有读写权限) 二 umask的作用...
  • 00. 目录 文章目录00. 目录01. 命令概述02. 命令格式03. 常用选项04. 参考示例05. 总结06....umask命令用来设置限制新建文件权限的掩码。...用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖...
  • 原标题:Linux umask 命令使用详解新建一个文件或目录,它的默认权限是什么?如果要修改一个用户创建的文件和目录的默认权限该如何做?本文将介绍相关的内容。说明:本文演示的Linux环境为 Ubuntu 16.04。文件的默认...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,919
精华内容 22,767
关键字:

umask命令

友情链接: 8520085.rar