权限 | 解释 | 对应的数字 |
r (read) | 读 | 4 |
w (write) | 写 | 2 |
x (execute) | 执行 | 1 |
- | 没有权限 | 0 |
总结:linux目录的读、写、执行权限说明:
1.可读r:表示具有浏览目录下面文件及子目录的权限,及ls dir
1)如果没有x权限,不能进入目录,即无法cd dir
2)如果么有x权限,ls列表时可以看到所用文件名,但是会提示无权限访问目录下的文件
3)如果ls -l 列表,所用的属性会带有问号,也会提示无权访问目录文件。但是可以看到所用的文件名。
2.可写w:表示具有增加、删除或修改目录内文件名(一般指文件名)的权限(需要x权限配合);
3.可执行x:表示具有进入目录的权限:例如:cd dir
但是没有r无法列表文件及目录,没用w无法新建和删除
chmod 命令
chmod是用来改变文件和目录权限的命令,但是只用文件的属主和超级用户root才用这种权限。通过chmod来改变文件和目录的权限有两种方法:一种是通过权限字母和操作符表达的方式的方法来设置权限;另外一种是使用数字方法来设置权限。
如果我们想改变的仅仅是打开目录的权限,是用chmod命令时不用加然和参数。如果想把目录一下的所用文件或子目录也同时改变,需要使用-R参数
文件的权限计算
文件的权限是从666开始算起的
就是666-umask 得到的就是文件的默认权限
umask 都为有偶数,直接相减
umask 如果用奇数,对应位加1
suid、sgid、sticky
什么是suid 和sgid,分别有什么作用
特殊权限位基本说明:
linux系统基本权限位9位权限,但是还用额外的3位权限位,共12位
suid s(有x) S 4 用户对应的权限位(用户对应的3位上)
sgid s(有x) S 2 用户组对应的权限位用户组对应的3位上
sticky t(有x) T 1 其它用户对应的权限位
suid | s(有x) | S | 用户对应的权限位(用户对应的3位上) |
sgid | s(有x) | S | 用户组对应的权限位(用户组对应的3位上) |
sticky | t(有x) | T | 其它用户对应的权限位(第三位) |
suid 知识小结:针对命令和二进制程序的
1)用户或用户主对应的前三位权限的x位上如果用s就表示suid权限。当x位上没用小写的x执行权限的时候,suid的权限显示的就是大写S。
2)suid作用是让普通用户可以运行只用root用户角色才能运行的程序或命令,对应本来没用权限操作的文件等。
注意:su 及sudo的区别,suid为某一个命令设置特殊权限(使用者为所用人)
3)suid 修改的是执行命令passwd,而不是处理的目标/etc/shadow
4)仅对二进制命令程序有效,不能用在shell等类似脚本文件上(因为shell脚本仅仅是调用二进制命令程序而已,因此,具体权限还需要看二进制命令本身)
5)二进制命令程序需要用执行权限x配合
6)suid权限仅仅在命令程序执行中有效
7)执行suid命令的任意系统用户都可以获得该命令程序在执行期间的拥有者的所用权限。
8)suid双刃剑,是一个比较危险的功能,对系统安全用一定的威胁。
系统suid的无用的功能取消suid权限(安全优化)
sgid知识总结介绍:
特别说明:
1.于suid 不同的是,sgid即可以针对命令也可以针对目录设置!
2.sgid是针对用户组权限位的。对于文件来说,sgid功能如下:
a.sgid仅对二进制命令程序有效
b.二进制名伶程序需要用可执行权限X
c.执行命令的任意用户可以获得该命令程序执行期间所属组的权限
对于目录:sgid 的功能如下:
1)linux里默认情况所用的用户创建文件,默认用户和组都是自身
2)sgid可以让用户再此目录创建的文件和目录,具有和此目录相同的用户组设置。
setgid位主要用的目录中,当为某个目录设置setgid位后,该目录中新创建的文件具有
sticky:粘滞位
sticky:比SGID的更安全措施,让多用户都具有写的权限的目录,每个用户都能删除自己的文件。表现在other位!用t表示,如果没用执行权限,那么就是T;如果没用实行权限,那么就是t表示。
特殊权限位置对应的数字小结。
粘滞位的功能很少用,不过对象/tmp目录这样的,是整个系统临时文件放置地,还是有点意义。一个目录即使它的所用权限都放开rwxrwxrwx,如果是设置了粘贴位,除非目录的属主和root用户有权限删除它,除此之外其他用户不能删除这个目录。用途一般是把一个文件的权限都打开,然后来共享文件,象/tmp目录一样。方便带来的安全隐患,生产环境我们一般这样使用!
tmp经典的粘滞位目录案例,特点,谁都下特权,因此安全成问题。常常是木马的第一手跳板地点。
设置方法:
suid:chmod 4755 file 或者 chmod 8+S file
sgid:chomd 2755 file 或者 chmod g+S file
sticky:chomd 1755 file 或者 chmod o+T file
chattr 命令
i (不可变的)相当于一个锁,不过这个锁root用户也打不开,必须用chattr命令解锁
chattr +i file
chattr -i file
linux 基础优化: /etc/passwd ,/etc/shadow,/etc/gshadow,/etc/inittab chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab cd /usr/bin mv chattr hehe