linux随笔(11)---umask和chmod

一、目的

本文将介绍linux环境下有关文件访问模式相关的命令。

umask用来设置默认的文件访问模式屏蔽值;chmod用来修改文件的访问模式。

本文将选取ubuntu14.04发行版做为描述基础。

二、文件访问模式

linux使用文件访问模式保证文件的安全性,通过一个12bit的数据结构表示文件访问模式的4组属性:

1、SUID、SGID、Sticky属性 ;也叫特殊属性。

2、用户的读、写、可执行属性;也叫用户属性。

3、用户所属组的读、写、可执行属性;也叫用户所属组属性。

4、组内其他用户的读、写、可执行属性;也叫其他用户属性。

这些属性有两种展示方式:一种是文字表示方式,r表示可读,w表示可写,x表示可执行,s表示设置了SUID,-表示禁止该属性。使用ls -al命令可以查看文字方式表示的文件访问属性。还有一种表示方式是八进制,将12bit分为4组,每组可以使用八进制来表示,例如,User八进制值7(二进制为111)表示可读、可写、可执行;5(二进制为101)表示可读、不可写、可执行。

这两种表示方式各有优缺点,文字表示方式直观,八进制表示方式简洁。

三、SUID和SGID属性

SUID属性只和可执行文件相关。正常情况下,当用户启动该可执行文件时,是以当前用户的权限启动该可执行文件;如果设置了SUID属性,那么不管当前用户是谁,都是以文件的所有者的权限启动该可执行文件。

例如,当前用户是zsy,而可执行文件passwd的所有者是root,如果没有设置SUID属性,那么当zsy用户启动passwd可执行程序时,passwd的权限只是zsy拥有的权限,不能修改/etc/shadow文件;如果设置了SUID属性,那么当zsy用户启动passwd可执行程序时,passwd的权限是root拥有的权限,可以修改/etc/shadow。

SGID属性的作用类似,如果设置了SGID属性,那么都拥有文件所属组的权限。

四、stat命令

stat命令可以查看文件的一些基本属性:文件大小、所占的块大小、文件访问模式、文件的所有者ID、文件所属组的ID、文件创建时间等。

语法:stat filename

例如,使用stat命令来查看passwd文件的属性。从图中可以看出passwd的文件访问模式的八进制表示方式是4755,对应的文字表示方式是-rwsr-xr-x。该文件设置了SUID和SGID。

五、umask命令

umask命令设置了默认的文件访问模式屏蔽值,那么当新建文件时则自动禁止被屏蔽的属性。

语法:umask value

例如,使用umask 2命令设置文件访问模式的屏蔽值为2,即0002。那么当新建文件时,自动设置其他属性的写权限为禁止状态。

六、chmod命令

chmod命令可以改变文件的访问模式。

语法:chmod 文件访问模式(文字表示方式或者八进制表示方式) filename

例如,使用chmod命令以文字表示方式增加文件的可执行权限,chmod u+x README.md;或者以八进制表示方式增加文件的可执行权限,chmod 644 README.md。

其中u+x的含义是:u表示文件访问模式中的用户属性,+表示增加,x表示可执行权限。

八进制表示方式比较简洁,所以建议使用八进制的表示方式修改文件的访问模式。

七、总结

linux系统下文件有很多种属性,例如:文件大小、文件的拥有者、文件所属的组、文件访问模式等,其中文件访问模式属性的地位比较重要,因此重点介绍了文件访问模式的概念以及相关命令umask和chmod。

文件访问模式的表示方式有文字表示方式和八进制表示方式,应该熟练掌握。特殊属性的SUID位影响了可执行文件的执行权限,读者应该正确理解SUID的含义以及使用方法。

版权声明:

原创作品,如非商业性转载,请注明出处;如商业性转载出版,请与作者联系。

时间: 2024-11-12 23:46:39

linux随笔(11)---umask和chmod的相关文章

linux文章(11)---umask和chmod

一.用途 文将介绍linux环境下有关文件訪问模式相关的命令. umask用来设置默认的文件訪问模式屏蔽值:chmod用来改动文件的訪问模式. 本文将选取ubuntu14.04发行版做为描写叙述基础. 二.文件訪问模式 linux使用文件訪问模式保证文件的安全性,通过一个12bit的数据结构表示文件訪问模式的4组属性: 1.SUID.SGID.Sticky属性 :也叫特殊属性. 2.用户的读.写.可运行属性:也叫用户属性. 3.用户所属组的读.写.可运行属性.也叫用户所属组属性. 4.组内其它用

修改linux文件权限命令:chmod

修改linux文件权限命令:chmod Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而禁止对其做任何的更改操作.可执行权限表示允许将该文件作为一个程序执行.文件被创建时,文件所有者自动拥有对该文件的读.写和可执行权限,以便于对文件的阅读和修改.用户也可根据需要把访问权限设置为需要的任何组合. 有三种不同类型的用户可对文件或目录进行访问:文件所有者

Linux中的umask

1.文件和目录的默认权限 在Linux中,我们创建文件或者目录的时候,并没有指定user,group,other这三类用户的权限,实际上umask(遮罩码)决定了创建时的默认权限.如果是文件,就用666-umask:如果是目录就用777-umask.记住LINUX的法则之一:文件默认情况下不应具有可执行权限. 2.实验 root用户下: [[email protected] ~]# touch zfz.file [[email protected] ~]# mkdir zfz.dir [[ema

Linux 0.11中write实现

看了一下Linux 0.11版本write的实现,首先它在标准头文件unistd.h中有定义 int write(int fildes, const char * buf, off_t count); 接下来看write.c /* * linux/lib/write.c * * (C) 1991 Linus Torvalds */ #define __LIBRARY__ #include <unistd.h> //定义write的实现 _syscall3(int,write,int,fd,co

Linux 0.11 中字符设备的使用

Linux 0.11 字符设备的使用 一.概述 本文自顶向下一步步探索字符设备的读写是怎么完成的.通常我们在Linux应用程序中用open.read.write对各种类型的文件进行操作.我们可以从键盘输入,然后命令行窗口会显示你的输入,有输出的话则命令行窗口会显示输出.为什么所有的设备在Linux中都被看成是一个个文件,可以通过统一的read.write直接进行读写?文件句柄与终端设备有什么关联?为什么Linux允许多个控制终端登录?tty又是什么东西?读写时将发生哪些硬件中断,驱动程序是怎么回

Linux 随笔1

使用fork()系统调用产生的子进程对父进程中数据的修改不会影响到父进程,因为fork()采用的是写时复制机制,就是在fork产生的子进程没有修改父进程的值时,父子进程共享同一块内存,包括栈区.当子进程修改父进程的数据时,系统会给子进程单分出一块和父进程相同的内存区并将新的修改的值写入.所以父子进程完全在两块内存中不会互相干扰. uid 为0的用户名就是超级用户 echo "12345" | md5sum   //通过 md5加密输出“12345” 查看系统内核版本 方法一: 命令:

Linux新手入门:通过chmod改变文件权限--转

前面介绍过在Linux中如何查看文件的属性,在Linux文件权限详解中我们介绍了Linux文件的三种身份和四种权限,三种身份分别为: u:文件的拥有者 g:文件所属的群组 o:其他用户 对于每个身份,又有四种权限,分别为: r:读取文件的权限(read) w:写入文件的权限(write) x:执行的权限(execute) s:特殊权限 在Linux文件权限详解中我们知道Linux中有两种表示文件权限的方式,分别为数字以及符号表示方式. chmod以数字形式改变文件权限 chmod 755 tes

基于 Docker 快速构建 Linux 0.11 实验环境

by Falcon of TinyLab.org 2015/05/02 简介 五分钟内搭建 Linux 0.11 的实验环境介绍了如何快速构建一个 Linux 0.11 实验环境. 本文介绍如何快速构建一个独立于宿主机的 Linux 0.11 实验环境,该实验环境可以用于任何操作系统的宿主开发机,将非常方便各类学生学习 Linux 0.11,本文只介绍 Ubuntu.在 Windows 和 Mac 下可以用 VirtualBox + Boot2Docker 来启动. 下文要求已经安装 git 和

Linux系统管理11——系统安全及应用

Linux系统管理11--系统安全及应用 一.基本安全措施 1.系统账号清理 (1)将非登录用户的shell设为/sbin/nologin ·方法一: usermod -s ·方法二: chsh命令,交互式修改 ·方法三: chsh -s 示例: 除了上述三种方法,也可以直接vi编辑/etc/passwd文件进行修改. (2)锁定长期不使用的账号 ·方法一: passwd -l  (将在密文前增加2个"!")解锁 passwd -u 查看passwd -S ·方法二: usermod