• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

浅谈Java安全编码之文件和共享目录的安全性

java 搞代码 4年前 (2022-01-09) 10次浏览 已收录 0个评论
文章目录[隐藏]

一、linux下的文件基本权限

chmod是linux下面的权限管理命令,我们可以通过chmod来对文件的权限进行修改。

普通文件的权限有三种,rwx分别是读,写和执行。再加上三个用户分组:owner,group,other 我们可以很方便的使用三个0-7的数字来表示一个文件的权限。

举个例子,我们创建一个文件:

touch test.log

看一下默认的文件权限:

ll test.log

-rw-r–r–  1 flydean  wheel     0B  8 16 10:36 test.log

默认的文件权限是644,也就是说owner权限是读写,group权限是读,其他权限是读。

我们可以使用chmod命令对其进行修改,比如:

chmod 777 test.log

ll test.log

-rwxrwxrwx  1 flydean  wheel     0B  8 16 10:36 test.log

可以看出权限被本文来源gao@daima#com搞(%代@#码@网2修改成为777。

二、linux文件的特殊权限

讲完普通权限,我们接下来讲一下linux文件中的特殊权限。

2.1、Set UID 和 Set GID

考虑一个常用的修改密码的例子,修改密码调用的是/usr/bin/passwd,看下这个文件的权限:

ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd

可以看到有个很奇怪的s权限。这个s是什么意思呢?s实际是x的变种,是一种特殊的可执行权限。

特殊在哪里呢?passwd是修改用户的密码,密码文件实际上是存放在 /etc/shadow中的。

我们看下/etc/shadow的权限:

ll /etc/shadow

———- 1 root root 707 Jan  2  2020 /etc/shadow

/etc/shadow的owner是root,只有root才权限强行写入这个文件。

那么问题来了,普通用户调用passwd是怎么修改的/etc/shadow呢?

这就是s的妙用,s表示Set UID,简称为SUID,这个UID表示User的ID,而User表示这个程序(/usr/bin/passwd)的拥有者(root),那么我们在调用passwd的过程时候,就会暂时拥有passwd owner的权限,也就是root权限。

注意,SUID只能用在二进制文件中,它是对x权限的一个替换,并且SUID对目录是无效的。

同样的,我们也可以给group设置UID权限,也就是Set GID。

不同的是SGID可以使用在文件和目录两个地方。

用在文件中是和SUID一样的,用在目录中的意思是在该目录中所建的文件或目录的用户组都和该目录的用户组是一样的。

2.2、Sticky Bit


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:浅谈Java安全编码之文件和共享目录的安全性

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址