linux中权限765啥意思,Linux中的文件权限

Linux系统中的每一个文件都与多种权限类型相关联。在这些权限中,我们主要和三类权限打交道:用户(user)、用户组(group)和其他用户(others)。用户是文件的所有者;用户组是指和文件所有者在同一组的其他多个用户的集合;其他用户是除用户或用户组之外的任何用户。

ls -l命令可以列出文件的权限,如:

-rw-rw-r-- 1 lfqy lfqy  529  6月 11 20:21 file-authority.txt

-rw-rw-r-- 1 lfqy lfqy    0  6月 11 19:02 helloworld

drwxrwxr-x 2 lfqy lfqy 4096  6月 11 20:21 try

可以看出,每一行输出代表一个文件。每行输出的前10个字符代表文件的权限信息:第一个字符代表文件的类型(-表示普通文件,d表示目录,c表示字符设备,b表示块设备,l表示符号链接,s表示套接字,p表示管道),剩下的部分可以划分成三组(第一组的三个字符对应用户权限,第二组的三个字符对应用户组权限,第三组的三个字符对应其他用户权限。这9个字符中的每一个字符指明是否设置了某种权限,如果设置了权限,对应位置上就会出现一个字符,否则就一个'-'表明没有设置对应的权限)。其中r代表读权限,w代表写权限,x代表执行权限,比如第一行中的file-authority.txt文件属于用户lfqy,该用户对其拥有读写权限,而没有执行权限,和lfqy在同一组的其他用户也拥有对该文件的读写权限,而其他用户对其只有读权限。

1、文件的权限

1.1 文件的基本权限

rwx分别对应文件的读权限、写权限和可执行权限,然而,对于目录来说,这三种权限有不同的含义。目录的读权限允许读取目录中文件和子目录的列表,目录的写权限允许在目录中创建或删除文件或目录,目录的可执行权限指明是否可以访问目录中的文件和子目录。

1.2 setuid、setgid和sticky bit

实际上,除了最基本的读、写和执行权限之外,Linux中还有setuid、setgid和sticky bit等三种权限。下面分别解释这三种权限。

关于setuid和setgid维基百科上的解释如下:

setuid and setgid (short for "set user ID upon execution" and "set group ID upon execution", respectively) are Unix access rights flags that allow users to run an executable with the permissions of the executable's owner or group respectively and to change behaviour in directories. They are often used to allow users on a computer system to run programs with temporarily elevated privileges in order to perform a specific task.

The setuid and setgid flags, when set on a directory, have an entirely different meaning.

Setting the setgid permission on a directory (chmod g+s) causes new files and subdirectories created within it to inherit its group ID, rather than the primary group ID of the user who created the file (the owner ID is never affected, only the group ID). Newly created subdirectories inherit the setgid bit. Thus, this enables a shared workspace for a group without the inconvenience of requiring group members to explicitly change their current group before creating new files or directories. Note that setting the setgid permission on a directory only affects the group ID of new files and subdirectories created after the setgid bit is set, and is not applied to existing entities. Setting the setgid bit on existing subdirectories must be done manually, with a command such as the following:

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

The setuid permission set on a directory is ignored on UNIX and Linux systems. FreeBSD can be configured to interpret it analogously to setgid, namely, to force all files and sub-directories to be owned by the top directory owner.

1.2.1 setuid权限

setuid可以设置使文件在执行阶段具有文件所有者的权限。setuid属性出往往用用户权限的第三个字符表示:如果用户权限的第三个字符是s,则表示该文件的属主对该文件有可执行权限的同时,该文件还有setuid权限;如果用户权限的第三个字符是S,则表示该文件的属主对该文件没有可执行权限,但是该文件有setuid权限(实际上,从下文也可一看出,这种情况,没有可执行权限只有setuid权限无任何意义)。setuid权限允许用户以其文件拥有者的权限来执行可执行文件,即使这个可执行文件是由其他用户运行的。从下面的例子中可以看出setuid权限的意思。

Linux中的密码通常是保存在"/etc/paswd"和"/etc/shadow"文件中,这两个文件对系统安全至关重要,因此只有Root用户才能对其执行读写操作。以管理员的身份登陆系统,在Linux提示符下执行"ls /etc/passwd /etc/shadow"命令,在返回信息中可以看到普通用户对上述这两个文件并没有写权限,因此从文件属性的角度看,普通用户在更改自身密码时,是无法将密码信息写入到上述文件中的,哪么用户是怎样成功的更改密码的呢?实际上,问题的关键不在于密码文件本身,而在于密码更改命令"passwd"。在提示符下执行命令"ls /usr/bin/passwd",在返回信息中的文件所有者执行权限位上显示"s"字样,表示"passwd"命令具setuid权限,其所有者为root,这样普通用户在执行"passwd"命令时,实际上以有效用户root的身份来执行的,并具有了相应的权限(包括读写passwd和shadow文件的权限),从而将新的密码写入到"/etc/passwd"和"/etc/shadow"文件中,当命令执行完毕,该用户的身份立即消失。这样,通过setuid权限,普通用户在执行passwd程序时,也能获得passwd程序属主(root)一样的权限(也可以对文件passwd和shadow进行读写)。这样,普通用户也可以通过passwd工具来修改自身密码。

1.2.2 setgid权限

setgid权限的含义和setuid类似,它允许用户以其拥有者所在的组的权限来执行可执行文件。setgid属性往往用用户组权限的第三个字符表示:如果用户权限的第三个字符是s,则表示该文件的属主对该文件有可执行权限的同时,该文件还有setgid权限;如果用户组权限的第三个字符是S,则表示该文件的属主对该文件没有可执行权限,但是该文件有setgid权限(实际上,从下文也可一看出,这种情况,没有可执行权限只有setuid权限无任何意义)。setgid权限允许用户以其文件拥有者所在组的权限来执行可执行文件,即使这个可执行文件是由其他用户运行的。

1.2.3 sticky bit

关于sticky,维基百科上的解释如下:

In computing, the sticky bit is a user ownership access-right flag that can be assigned to files and directories on Unix systems.

The most common use of the sticky bit today is on directories. When the sticky bit is set, only the item's owner, the directory's owner, or the superuser can rename or delete files. Without the sticky bit set, any user with write and execute permissions for the directory can rename or delete contained files, regardless of owner. Typically this is set on the /tmp directory to prevent ordinary users from deleting or moving other users' files. This feature was introduced in 4.3BSD in 1986 and today it is found in most modern Unix systems.

sticky-bit之后,尽管其他用户有写权限,也必须由属主执行删除、移动等操作。对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、移动等操作。

sticky bit出现在其他用户权限中的执行权限(x)位置,使用t或T表示。t表示既有可执行权限,又设置了sticky bit,T表示只设置了sticky bit而没有设置可执行权限。

2、管理文件权限

2.1 设置基本权限

2.1.1 用助记符的方式设置文件基本权限

可以采用"chmod u=rwx g=rw o=r filename"来设置文件的权限。其中u代表用户的权限,g代表用户所带组的权限,o代表其它用户的权限。如果要添加权限可以"chmod a+x filename"(给所有的用户添加可执行权限),"chmod o+x filename"给其他用户增加可执行权限。如果要删除相应的权限,可以"chmod a-x filename"(删除所有用户的可执行权限)。

2.1.2 用八进制数的方式设置文件的基本权限

也可以采用八进制数的形式。读、写和执行权限都有与之对应的唯一的8进制数:r(4),w(2),x(1)。我们可以将权限序列的八进制值相加来获得所需的权限组合:rwx(4+2+1=7),rw-(4+2=6),r-x(4+1=5)等。因此,用8进制设置权限的命令为"chmod 765 filename"。

2.2 设置setuid,setgid和sticky bit

2.2.1 用助记符的方式

chmod u +s temp -- 为temp文件加上setuid标志

chmod g +s tempdir -- 为tempdir目录加上setgid标志

chmod o +t temp -- 为temp文件加上sticky标志

2.2.2 采用八进制方式

对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下:

abc

a - setuid位, 如果该位为1, 则表示设置setuid 4xxx

b - setgid位, 如果该位为1, 则表示设置setgid  2xxx

c - sticky位, 如果该位为1, 则表示设置sticky   1xxx

设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如

rwsrw-r-- 表示有setuid标志

rwxrwsrw- 表示有setgid标志

rwxrw-rwt 表示有sticky标志

对于setuid,setgid和sticky bit,如果表示这写权限的位上本来有x, 则这些特殊标志显示为小写字母 (s, s, t);若无执行权限则显示为大写字母(S, S, T)。

3、其它

文件的权限是为了使用的安全性和方便性而设置的,了解这写权限的含义能是我们更加方便的使用Linux,防制由于文件权限管理不善而带来的安全问题。实际上,在设置文件的权限时,应该慎重考虑,尤其是在使用setuid、setgid和sticky bit等权限的时候。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29366942/viewspace-1062231/,如需转载,请注明出处,否则将追究法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CV中的色彩空间大全

HSI、HSV、RGB、CMY、CMYK、HSL、HSB、Ycc、XYZ、Lab、YUV颜色模型 HSV颜色空间 HSV(hue,saturation,value)颜色空间的模型对应于圆柱坐标系中的一个圆锥形子集,圆锥的顶面对应于V1. 它包含RGB模型中的R1,G1,B1 三个面,所代表的…

linux 系统调用时怎么知道当前上下文属于那个进程,linux – 编写系统调用来计算进程的上下文切换...

如果您的系统调用只应报告统计信息,则可以使用内核中已有的上下文切换计数代码.struct rusage {...long ru_nvcsw; /* voluntary context switches */long ru_nivcsw; /* involuntary context switches */};您可以通过运行来尝试:$/usr/bin/time -v /bin/ls -R....V…

linux串口缓冲区的大小,linux-----------串口设置缓冲器的大小

转自:http://stackoverflow.com/questions/10815811/linux-serial-port-reading-can-i-change-size-of-input-bufferYou want to use the serial IOCTL TIOCSSERIAL which allows changing both receive buffer depth and send buffer depth (among other things). The maximum…

FLOPs、FLOPS、Params的含义及PyTorch中的计算方法

FLOPs、FLOPS、Params的含义及PyTorch中的计算方法 含义解释 FLOPS:注意全大写,是floating point operations per second的缩写(这里的大S表示second秒),表示每秒浮点运算次数,理解为计算速度。是一个衡量…

设置中文linux输入ubuntu,Linux_ubuntu怎么设置成中文?ubuntu中文设置图文方法,  很多朋友安装ubuntu后,发 - phpStudy...

ubuntu怎么设置成中文?ubuntu中文设置图文方法很多朋友安装ubuntu后,发现都是英文,看不懂要怎么办?其实ubuntu是可以设置成中文的,下文小编就为大家带来ubuntu中文的设置方法,一起去看下设置方法吧。ubuntu中文设置方…

科普 | 单精度、双精度、多精度和混合精度计算的区别是什么?

科普 | 单精度、双精度、多精度和混合精度计算的区别是什么? 转自:https://zhuanlan.zhihu.com/p/93812784 我们提到圆周率 π 的时候,它有很多种表达方式,既可以用数学常数3.14159表示,也可以用一长串1和0的二进制长串表示。 …

linux 磁盘分配 简书,linux 磁盘分区

1物理磁盘的构成: 盘面:由一圈一圈的磁道组成机械手臂:读取数据主轴马达:帮助机械手臂转动2 扇区:磁盘上存取数据的最小单位512字节按照扇区分配大小,如果数据只有一字节也会占用512字节簇:用若…

条件控制与条件传送详解

条件控制与条件传送详解 提要 CSAPP3e中文译本 3.6.5 用条件控制来实现条件分支 3.6.6 用条件传送来实现条件分支 CSAPP3e第三章前面主要是介绍了机器级代码的二进制形式和汇编形式、反汇编、x86汇编的基础指令、条件码及其访问方式等。 在介绍到汇编语言的条件分支时分了两…

联合体(union)的使用方法及其本质

联合体(union)的使用方法及其本质 转自:https://blog.csdn.net/huqinwei987/article/details/23597091 有些基础知识快淡忘了,所以有必要复习一遍,在不借助课本死知识的前提下做些推理判断,温故知新。 1…

linux设备驱动之串口移植,Linux设备驱动之UART驱动结构

一、对于串口驱动Linux系统中UART驱动属于终端设备驱动,应该说是实现串口驱动和终端驱动来实现串口终端设备的驱动。要了解串口终端的驱动在Linux系统的结构就先要了解终端设备驱动在Linux系统中的结构体系,一方面自己了解的不够,另一发面关于…

linux python复制安装,复制一个Python全部环境到另一个环境,python另一个,导出此环境下安装的包...

复制一个Python全部环境到另一个环境,python另一个,导出此环境下安装的包导出此环境下安装的包的版本信息清单pipfreeze>requirements.txt联网,下载清单中的包到all-packet文件夹[[email protected] ~]# pip download -d ./all-packet -r requirement…

NVIDIA英伟达的Multi-GPU多卡通信框架NCCL

NVIDIA英伟达的Multi-GPU多卡通信框架NCCL 笔者注:NCCL 开源项目地址:https://github.com/NVIDIA/nccl 转自:https://www.zhihu.com/question/63219175/answer/206697974 NCCL是Nvidia Collective multi-GPU Communication Library的简称&…

C语言n个坐标点间的最大距离,c语言已知两点坐标,求另一点到穿过这两点的直线最短距离。...

c语言已知两点坐标,求另一点到穿过这两点的直线最短距离。以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!c语言已知两点坐标,求另一点到穿过这两点的直线最短距离。#…

[分布式训练] 单机多卡的正确打开方式:理论基础

[分布式训练] 单机多卡的正确打开方式:理论基础 转自:https://fyubang.com/2019/07/08/distributed-training/ 瓦砾由于最近bert-large用的比较多,踩了很多分布式训练的坑,加上在TensorFlow和PyTorch之间更换,算是熟…

s3c2416开发板 linux,S3C2416移植内核Linux3.1的wm9713声卡过程

移植内核的声卡驱动。原因没有声卡驱动,WM9713声卡驱动移植(原来的内核有UDA1341声卡驱动,我们再次基础上直接修改)1、直接复制内核得到三个文件:s3c2416_wm9713.c , wm9713.c , s3c2416_ac97.c.linux-3.1\sound\soc\codecs\Wm9713.c---->wm9713.c;li…

Linux查看文件内容命令:cat, tail, head, more, less

Linux查看文件内容命令:cat, tail, head, more, less cat 直接显示整个文件。 cat直接显示全部文件内容,没有换页等交互。 cat filenamemore more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会…

linux查看队列 msg,linux第10天 msg消息队列

cat /proc/sys/kernel/msgmax最大消息长度限制cat /proc/sys/kernel/msgmnb消息队列总的字节数cat /proc/sys/kernel/msgmni消息条目数消息队列综合案例//server#include #include #include #include #include #include #include #include #define ERR_EXIT(m)do{perror(m);}wh…

Linux中 C++ main函数参数argc和argv含义及用法

Linux中 C main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数; argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称&…

c语言六位抢答器课程设计,51单片机八路抢答器课程设计

;说明:本人的这个设计改进后解决了前一个版本中1号抢答优先的问题,并增加了锦囊的设置,当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始。;八路抢答器电路请看下图是用ps仿真的,已…

ELF文件详解—初步认识

ELF文件详解—初步认识 转自:https://blog.csdn.net/daide2012/article/details/73065204 一、 引言 在讲解ELF文件格式之前,我们来回顾一下,一个用C语言编写的高级语言程序是从编写到打包、再到编译执行的基本过程,我们知道在C…