Linux umask0 设置权限掩码为0,即默认新建文件或目录权限为更大可访问。 (linux umask(0))

在Linux系统下,umask是用来控制文件或目录的权限的。umask值是用来掩盖掉权限位的更大值,所以它对应的权限是不被授予的。umask命令可以设置umask的值,通常的默认值是022,即掩盖掉写权限(其他都有权限)。

当我们新建一个文件或目录时,系统会根据umask值来设置它们的默认权限。举个例子,如果umask值是022,那么新建的文件权限是644(rw-r–r–),目录权限是755(rwxr-xr-x)。这就意味着,其他用户只能读取文件,而不能修改或删除它们,同样的目录也是只读的。

但是当我们设置umask值为0时,新建文件或目录的默认权限将被设置为更大可访问权限,也就是说,其他用户也可以修改、删除、执行文件,同样的目录也是可写的。这为我们提供了更多的自由,特别是在建立公共共享目录的时候。

下面我们就来了解具体的设置步骤:

1. 打开终端,切换到root权限,输入sudo su即可。

2. 输入umask 0并回车,这样你就进入了umask值设置模式,此时你所在的终端的umask值就被设置为0,新建的文件或目录默认权限为更大可访问。

3. 可以使用touch命令新建文件,或者mkdir命令新建目录,此时它们的权限位默认为777。

4. 如果你需要改变配置,你可以重设掩码,umask的有效范围是当前登录用户的shell内部,因此如果你在退出这个shell之前进行umask的变更,那它所产生的效果将被清除。

设置umask 0会允许文件和目录文件具有更高权限,这种配置之前仅仅使用在特定的环境中,比如在数控机器环境中。但是在需要公共共享访问的环境中,这个设置可以起到很好的效果,比如公共的文件共享目录、可执行文件目录等等。需要注意的是,umask值的设置是针对整个shell的,取权限更大化要小心地设置它。

相关问题拓展阅读:

linux下nohup 命令怎么kill

Unix中 nohup 命令功能就是不挂断地运行命令,同时 nohup 把程序的所有输出到放到当前目录 nohup.out 文件中,如果文件不可写,则放到 /nohup.out 文件中。那么有了这个命令以后我们php就写成shell 脚本使用循环来让我们脚本一直运行下去,不管我们终端窗口是否关闭都能够让我们php 脚本一直运行下去。 马上动手写个 PHP 小程序,功能为每30秒记录时间,写入到文件 复制代码 代码如下: # vi for_ever.php #! /usr/local/php/bin/php define(‘ROOT’, dirname(__FILE__).’/’); set_time_limit(0); while (true) { file_put_contents(ROOT.’for_ever.txt’, date(‘Y-m-d H:i:s’).”\n”, FILE_APPEND); echo date(‘Y-m-d H:i:s’), ‘ OK!’; sleep(30); } ?> 保存退出,然后赋予 for_ever.php 文件可执行权限: # chmod +x for_ever.php 让它在再后台执行: # nohup /home/andy/for_ever.php.php & 记得最后加上 & 符号,这样才能够跑到后台去运行 执行上述命令后出现如下提示: nohup: appending output to ‘nohup.out’ 所有命令执行输出信息都会放到 nohup.out 文件中 这时你可以打开 for_ever.php 同目录下的 for_ever.txt 和 nohup.out 看看效果! 好了,它会永远运行下去了,怎么结束它呢? # ps PID TTY TIME CMDpts/1 00:00:00 bashpts/1 00:00:00 for_ever.phppts/1 00:00:00 ps # kill找到进程号 5157 杀之,你将看到 + Killed nohup /home/andy/for_ever.php OK! ==================== 在很多项目中,或许有很多类似的后端脚本需要通过crontab定时执行。比如每10秒检查一下用户状态。脚本如下: @file: /php_scripts/scan_userstatus.php 复制代码 代码如下: #!/usr/bin/env php -q $status = has_goaway(); if ($status) { //done } ?> 通过crontab定时执行脚本scan_userstatus.php #echo “*:*/10 * * * * /php_scripts/scan_userstatus.php” 这样,每隔10秒钟,就会执行该信源脚本。 我们发现,在短时间内,该脚本的内存资源还没滑耐态有释放完,又启用了新的脚本。也就是说:新脚本启动了,旧脚本占用的资源还没有如愿释放。如此,日积月累,浪费了很多内存资源。我们对这个脚本进行了一下改进,改进后如下: @file: /php_scripts/scan_userstatus.php 复制代码 代码如下: #/usr/bin/env php -q while (1) { $status = has_goaway(); if ($status) { //done } usleep(); } ?> 这样,不需要crontab了。可以通过以下命令执行脚本,达到相同的功能效果 #chmod +x /php_scripts/scan_userstatus.php #nohup /php_scripts/scan_userstatus.php & 在这里,我们通过&将脚本放到后台运行,为了防止随着终端会话窗口关闭进程被杀,我们使用了nohup命令亩物。那么有没有办法,不使nohup命令,也能够运行呢,就像Unin/Linux Daemon一样。接下来,就是我们要讲的守护进程函数。 什么是守护进程?一个守护进程通常补认为是一个不对终端进行控制的后台任务。它有三个很显著的特征:在后台运行,与启动他的进程脱离,无须控制终端。常用的实现方式是fork() -> setsid() -> fork() 详细如下: @file: /php_scripts/scan_userstatus.php 复制代码 代码如下: #/usr/bin/env php -q daemonize(); while (1) { $status = has_goaway(); if ($status) { //done } usleep(); } function daemonize() { $pid = pcntl_fork(); if ($pid === -1 ) { return FALSE; } else if ($pid) { usleep(500); exit(); //exit parent } chdir(“/”); umask(0); $sid = posix_setsid(); if (!$sid) { return FALSE; } $pid = pcntl_fork(); if ($pid === -1) { return FALSE; } else if ($pid) { usleep(500); exit(0); } if (defined(‘STDIN’)) { fclose(STDIN); } if (defined(‘STDOUT’)){ fclose(STDOUT); } if (defined(‘STDERR’)) { fclose(STDERR); } } ?> 实现了守护进程函数以后,则可以建立一个常驻进程,所以只需要执行一次: #/php_scripts/scan_userstatus.php 这里较为关键的二个php函数是pcntl_fork()和posix_setsid()。fork()一个进程,则表示创建了一个运行进程的副本,副本被认为是子进程,而原始进程被认为是父进程。当fork()运行之后,则可以脱离启动他的进程与终端控制等,也意味着父进程可以自由退出。 pcntl_fork()返回值,-1表示执行失败,0表示在子进程中,而返进程ID号,则表示在父进程中。在这里,退出父进程。setsid(),它首先使新进程成为一个新会话的“领导者”,最后使该进程不再控制终端,这也是成为守护进程最关键的一步,这意味着,不会随着终端关闭而强制退出进程。对于一个不会被中断的常驻进程来说,这是很关键的一步。进行最后一次fork(),这一步不是必须的,但通常都这么做,它更大的意义是防止获得控制终端。(在直接打开一个终端设备,而且没有使用O_NOCTTY标志的情况下, 会获得控制终端). 其它事项说明: 1) chdir() 将守护进程放到总是存在的目录中,另外一个好处是,你的常驻进程不会限制你umount一个文件系统。 2)umask() 设置文件模式,创建掩码到更大的允许限度。如果一个守护进程需要创建具有可读,可写权限的文件,一个被继承的具有更严格权限的掩码会有反作用。 3)fclose(STDIN), fclose(STDOUT), fclose(STDERR) 关闭标准I/O流。注意,如果有输出(echo),则守护进程会失败。所以通常将STDIN, STDOUT, STDERR重定向某个指定文件.linux umask(0)的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux umask(0),Linux umask0 设置权限掩码为0,即默认新建文件或目录权限为更大可访问。,linux下nohup 命令怎么kill的信息别忘了在本站进行查找喔。


数据运维技术 » Linux umask0 设置权限掩码为0,即默认新建文件或目录权限为更大可访问。 (linux umask(0))