//权限与用户是强相关的,这儿先简单介绍下linux的不同类型用户
一、linux用户
1)管理员:例如root用户,权限最大的用户,拥有所有权限
2)系统用户
系统用户:在红帽5或则6系列的系统中,系统用户的uid值为0-499;不同发行版可能不一致,以实际实现为准;
系统用户通常用于守护进程/服务使用,通常不容许登入系统(即/sbin/nologin),这样可以减少对应进程的权限
3)普通用户
普通用户:通常用于人机交互登陆的帐户
useradd、id、groupadd、userdel、usermod等命令可以设置操作用户名
二、文件类型
Linux文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等。
1)普通文件
Linux中最多的一种文件类型,包括纯文本文件(ASCII);二补码文件(binary);数据格式的文件(data);各类压缩文件。第一个属性为[-]。如[-rw-r–r–]
2)目录文件
在linux中,它的思想是一切皆是文件。第一个属性为[d],比如[drwxr-xr-x]。
3)字符设备文件
串行端口的插口设备,诸如按键、鼠标等等。第一个属性为[c]。
4)块设备文件
储存数据以供系统存取插口设备,简单而言就是硬碟。如/dev/hda1。第一个属性为[b]。
5)套接字文件
第一个属性为[s]。
6)管线文件
FIFO也是一种特殊的文件类型红旗linux操作系统,第一个属性为[p]。
7)链接文件
软联接文件。第一个属性为[l],比如[lrwxrwxrwx]。
lsfilestat等命令可以查看文件信息
文件权限1、普通文件权限
r:read权限
w:write权限
x:execute权限
chmod:设置文件权限
chown:设置文件的所有者和所有主
//详尽操作可查看man指南
新建一个文件时,默认文件权限受umask属性控制
由里面可以看出默认权限有4组数字,其中第一个代表特殊权限,后三个代表普通权限(具体权限前面会描述)
root@test:/home/myuser# umask
0022
root@test:/home/myuser# umask -S
u=rwx,g=rx,o=rx
在默认权限的属性上,目录与文件是不一样的。。我么晓得x权限对于目录来说是十分重要的LINUX 删除目录,而且通常文件的构建则不应当有执行的权限,由于通常文件一般是用于对数据的记录,其实不须要执行权限了。因而在默认情况下:
1)若用户构建的为文件则默认没有可执行权限,即只有可读可写权限,也就是默认文件权限最大为666linux文件执行权限,所以对应类似sh脚本等须要自动添加可执行权限。
2)若用户构建的为目录,则因为x与是否可以步入该目录有关,因而默认所有权限均开放,即默认权限最大为777
2、特殊文件权限
SUID:让程序执行者,临时获取程序所有者的身分;
SGID:让程序执行者,临时获取程序所有组的身分,让目录内的新建文件,承继目录所有组的名称;
SBIT:粘滞位、保护位,让目录内的文件,只能自己删掉自己的;
一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上。诸如:
1)-rwsr-xr-x表示SUID和所有者权限中可执行位被设置
2)-rwSr–r–表示SUID被设置,但所有者权限中可执行位没有被设置
3)-rwxr-sr-x表示SGID和同组用户权限中可执行位被设置
4)-rw-r-Sr–表示SGID被设置,但同组用户权限中可执行位没有被设置
给文件加SUID和SGID的命令如下:
chmodu+sfilename#设置SUID位
chmodu-sfilename#除去SUID设置
chmodg+sfilename#设置SGID位
chmodg-sfilename#除去SGID设置
chmodo+tdirname#设置SBIT位
chmodo-tdirname#设置SBIT位
2.1、SUID
SUID是一种对二补码程序进行设置的特殊权限,可以让二补码程序的执行者暂时拥有所有者的权限。
当s这个标志出现在文件拥有者的x权限上时,这个文件的权限状态“-rwsr-xr-x”,此时这些状态就被称为SetUID,简称为SUID的特殊权限。诸如/usr/bin/passwd:
-rwsr-xr-x 1 root root 68208 Mar 14 16:26 /usr/bin/passwd
特征:
1)SUID权限仅仅对二补码程序有效;
2)执行者对于该程序须要具有x的可执行权限;
3)本权限仅在执行该程序的过程中有效;
4)执行者将具有该程序拥有者的权限;
5)SUID仅可用在二补码程序上,不能否用在shell脚本里面;
Q:/usr/bin/passwd程序为何要设置suid?
A:/etc/shadow文件中储存中linux用户相关的密码信息,所以此文件非root用户是不能任意更改和查看的,但非管理员用户又须要设置或更改自己的帐号密码,既不让更改密码文件,又要更改密码,如何实现呢?这就是suid要解决的问题:
1)普通用户对于/usr/bin/passwd程序来说有可执行的权限,所以普通用户才能执行passwd;
2)passwd的拥有者是root用户;
3)因为passwd程序带有suid标记,所以普通用户在执行passwd时会暂时获得root的权限;
4)通过步骤3,/etc/shadow可以被普通用户所执行的passwd所更改
5)另外,当普通用户cat去读取/etc/shadow时,却不能否读取,由于cat不具有SUID的权限,所以是不能否读取/etc/shadow的。//假如管理员将cat添加了suid,cat就可以看/etc/shadow文件内容了。
2.2、SGID
当s标志在用户属组的x位时则称为SetGID,简称为SGID。SGID可以针对文件或目录来设置。对于文件来说SGID具有如下功能:
1)SGID对二补码程序有用;
2)程序执行者对于该程序来说,须要具备x的权限;
3)执行者在执行的过程上将会获得该程序用户组的支持
4)事实上SGID也就能用在目录中,这也是一种很常见的用途。当一个目录设置了SGID的权限后,它将具有如下的功能:
2.3、SBIT
当某个目录设置了SBIT位,这么该目录中的文件只能被其所有者执行删掉操作。这样就保护了文件linux文件执行权限,防止被其它用户删掉。
SBIT目前只针对目录有效,对于文件早已没有疗效了,
SBIT对于目录的作用如下:
2.4、SUID/SGID/SBIT权限设置
假定要将一个文件权限修改为[-rwsr-xr-x]时,因为s在用户权限位置中,所以是属于SUID.
所以在原来的744之前再加上4,也就是chmod4744filename来设置。据悉还有大S与大T的形成。
root@test:/home/test# ls -l testa
-rw-r--r-- 1 root root 0 May 30 19:31 testa
root@test:/home/test#
root@test:/home/test# chmod 4744 testa
root@test:/home/test# ls -l testa
-rwsr--r-- 1 root root 0 May 30 19:31 testa
root@test:/home/test#
root@test:/home/test#
root@test:/home/test# chmod 7766 testa
root@test:/home/test# ls -l testa
-rwsrwSrwT 1 root root 0 May 30 19:31 testa
root@test:/home/test#
最后一个反例如何会出现小写的S与小写的T呢,由于s与t都是表示在x这个权限的,7666时user、group以及other都没有可执行权限x,所以小写的S、T代表的设置了suid/sgid,但没有执行权限。
SUID设置:u+s
SGID设置:g+s
SBIT设置:o+t
root@test:/home/test# ls -l testa
-rw-r--r-- 1 root root 0 May 30 19:37 testa
root@test:/home/test#
root@test:/home/test# chmod u+s testa
root@test:/home/test# ls -l testa
-rwSr--r-- 1 root root 0 May 30 19:37 testa
root@test:/home/test#
root@test:/home/test# chmod g+s testa
root@test:/home/test# ls -l testa
-rwSr-Sr-- 1 root root 0 May 30 19:37 testa
root@test:/home/test#
root@test:/home/test# chmod o+t testa
root@test:/home/test# ls -l testa
-rwSr-Sr-T 1 root root 0 May 30 19:37 testa
其他
详尽参考man指南