- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
The prototype of Files.createSymbolicLink()
是:
static Path createSymbolicLink(Path link, Path target,
FileAttribute<?>... attrs)
嗯...为什么?
符号链接(symbolic link)只不过是一个 inode ,其内容是一个指向...的字符串......好吧,无论如何。目标甚至可能根本无效。
出于好奇,我尝试了这个(是的,它以 root 身份运行,但这是故意的):
root@alustriel:/tmp# cat Test.java
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.*;
public final class Test {
public static void main(final String... args) throws IOException {
final UserPrincipalLookupService lookupService =
FileSystems.getDefault().getUserPrincipalLookupService();
final UserPrincipal user = lookupService.lookupPrincipalByName("fge");
final FileAttribute<UserPrincipal> attr =
new FileAttribute<UserPrincipal>() {
@Override
public String name() {
return "owner:owner";
}
@Override
public UserPrincipal value() {
return user;
}
};
final Path target = Paths.get("whocares, I don't exist anyway");
final Path symlink = Paths.get("/tmp/meh");
Files.createSymbolicLink(symlink, target, attr);
}
}
root@alustriel:/tmp# javac Test.java
root@alustriel:/tmp# java Test
Exception in thread "main" java.lang.UnsupportedOperationException: 'owner:owner' not supported as initial attribute
at sun.nio.fs.UnixFileModeAttribute.toUnixMode(UnixFileModeAttribute.java:74)
at sun.nio.fs.UnixFileSystemProvider.createSymbolicLink(UnixFileSystemProvider.java:440)
at java.nio.file.Files.createSymbolicLink(Files.java:996)
at Test.main(Test.java:41)
嗯,我有点预料到了。
我知道符号链接(symbolic link)的权限重要的唯一情况是在 Linux 的/proc/*/fd/中,因为符号链接(symbolic link)的权限与打开文件描述符的权限相匹配。但这是系统生成的符号链接(symbolic link),与用户可以生成的符号链接(symbolic link)完全不同。
是否存在任何操作系统,其中符号链接(symbolic link)的权限实际上以任何方式、形状或形式影响符号链接(symbolic link)和/或其目标的行为?
<小时/>编辑:好吧,我可以使用chown
更改符号链接(symbolic link)的所有者,但是......再说一遍,有什么意义?
最佳答案
Oracle 文档说这仅供将来使用:
The FileAttributes vararg enables you to specify initial file attributes that are set atomically when the link is created. However, this argument is intended for future use and is not currently implemented. (source; emphasis mine)
在 Mac 上,权限 seem to be settable ,尽管它们似乎没有多大作用。我创建了一个只能由 root 读取的文件,以及两个指向它的符号链接(symbolic link):一个是全局可读的,一个是只能由 root 读取的。我可以使用所有三个来cat
该文件,但是当我以用户身份运行它时,ls -l
仅列出了世界可读链接的链接目标:
-rwxrwxrwx 1 root wheel 7 Dec 21 21:32 actual
lrwxrwxrwx 1 root wheel 6 Dec 21 21:33 link_for_all -> actual
lrwx------ 1 root wheel 6 Dec 21 21:34 link_for_root
我找不到任何其他行为差异,但它是一些东西,所以也许您将来可以使用createSymbolicLink
来创建这样的符号链接(symbolic link).
关于java - Files.createSymbolicLink() 采用 FileAttribute<?> 数组作为参数;它在任何操作系统上都有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595842/
如主题所述,是否有可能没有 future 的问题?。基本上我发布此线程以供将来引用,以便人们可以观看该场景。mongodb 被限制为 2Gb 的原因是什么?能否请您指出引用资料,以便像我这样的菜鸟可以
我正在使用 Bootstrap 4 轮播。它适用于所有 Windows 和 Android 操作系统,但不适用于 Mac 和 iPhone 操作系统。有什么解决办法吗?这是我的代码github.com
目录 内存管理硬件结构 早期内存的使用方法 分段 分页 逻辑地址,线性地址(intel架构) 虚拟地址 物理地址
页表的一些术语 现在Linux内核中支持四级页表的映射,我们先看下内核中关于页表的一些术语: 全局目录项,PGD(Page Global Directory) 上级目录项,PUD(
1. 文件路径 绝对路径 绝对路径 (absolute path) : 以一个盘符开头的路径,就是绝对路径 例如这里的 D:\java\IntelliJ IDEA Community Edition
1. 进程介绍 1.1 进程的概念 程序是由指令和数据组成的,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,将数据加载至内存。在指令运行过程中还需要用到磁盘和网络等设备。进程就是用来加载指
1. 文件路径 绝对路径 绝对路径 (absolute path) : 以一个盘符开头的路径,就是绝对路径 例如这里的 D:\java\IntelliJ IDEA Community Edition
我有 REST APIManager 类 - 用于使用服务器 api 的单例。有返回用户Token实体的登录方法; 所有其他 API 方法都使用 token 来发出请求。登录后我应该在哪里存储该 to
当我在学习操作系统类(class)时,我不明白为什么下面代码的输出是这样的 代码: #include #include #include #include int main (int argc
我正在尝试在 C++ 中使用 fork() 和 wait() 系统调用。 我的代码非常简单。但是我收到以下错误: error C3861: 'fork': identifier not found 我
我需要播放不同格式的网络广播。我尝试使用 MPMoviePlayerController 播放广播,但它在 3-4 秒后停止。 var urlAddress = "http://streaming.r
多线程(进阶) 1. 常见的锁策略 1.1 乐观锁 悲观锁 乐观锁 : 总是假设最好的情况,每次去拿数据的时候都认为别人不会修改数据,但是在对数据提交更新的时候,再去判断这个数据在这个期间是否有别人对
如何让内存用起来? 内存使用:将程序放到内存中,PC指向开始地址 那就让首先程序进入内存 让程序从磁盘加载到内存中来,首先需要考虑要将程序代码安放在内存的什么位置 如果把入口地址直接放在0地址处,然后
操作系统 内存 HBase一定需要RAM! 64位 使用64位平台(和64位JVM)。 交换 注意交换,将swappiness设为0。 CPU 确保已将Hadoop设置为使用本机的硬件
我想编写一个脚本,将当前打开的 Windows 移动到某个位置。 理想情况下,我的程序应该是这样的: var window = FindWindow("Winamp"); window.setPos(
以下问题是我对操作系统的测试评论,但我不知道如何回答。我会第一次尝试解决他们的问题,但我也不知道如何开始。 Given the following information for an assembl
在操作系统方面我见过几次这个词。匿名内存 ,但我真的不知道,那是什么。 如果有人问我一些关于它的事情,我真的无法非常确定地说出那是什么。 我也搜索了它的解释,但不幸的是我还没有找到任何令人满意的东西。
在 Abraham Silberschatz 等人的“操作系统概念”第 9 版中,作者说: "Some operating systems support only static linking, i
我知道可用端口有限制(2^16),但我不明白操作系统如何管理这些端口。内部是否有一个微 Controller 可以复用所有打开的端口?端口实际上是如何与操作系统建立连接的?端口是否连接到操作系统中的特
如何激活另一个已最小化的应用程序的窗口? 如果前面有其他窗口,它可以很好地使用 NSRunningApplication 类的 activateWithOptions 方法,但这不适用于最小化的窗口。
我是一名优秀的程序员,十分优秀!