小编sha*_*shi的帖子

File.canWrite 和 Files.isWritable 在 Linux 上没有给出正确的值

我有这个测试java程序

import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Files;

public class TestFileReadOnly
{    
    public static void main(String[] args)
    {
        String filePath = args[0];
        File f = new File(filePath);

        System.out.println("File.canWrite() for file: " + filePath + ", is: " + f.canWrite());
        System.out.println("Files.isWritable() for file: " + filePath + ", is: " + Files.isWritable(FileSystems.getDefault().getPath(f.getParent(), f.getName())));
    }
}  
Run Code Online (Sandbox Code Playgroud)

我使用 root 登录 Linux 并创建两个文件。

echo "test file" > /root/ro.txt
echo "test file" > /root/rw.txt
chmod 444 /root/ro.txt
chmod 777 /root/rw.txt
Run Code Online (Sandbox Code Playgroud)

当我以这种方式执行测试程序时,输出总是不正确

[root@xxx ~]# /jdk1.8.0_31/bin/java TestFileReadOnly /root/ro.txt …
Run Code Online (Sandbox Code Playgroud)

java file-permissions file

5
推荐指数
1
解决办法
2099
查看次数

如何配置基于 x509 客户端证书的身份验证以连接到基于 AWS RDS 的 PostgreSQL

我们希望强制执行动态加密以连接到我们托管在 Amazon AWS RDS 中的 PostgreSQL 数据库。我们按照此处给出的步骤操作:https : //docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.SSL

完成这些步骤后,我们可以使用下面给出的命令连接到数据库,其中我们使用的是 AWS 提供的根证书:

    psql -h mydb.ckpjohsjh7j8.us-east-1.rds.amazonaws.com -p 5432 "dbname=mydb user=root password=mypassword sslrootcert=rds-combined-ca-bundle.pem sslmode=verify-full"
Run Code Online (Sandbox Code Playgroud)

但是,我们也可以在不指定“sslrootcert”或“sslmode”参数的情况下进行连接,如下面的命令所示:

    psql -h mydb.ckpjohsjh7j8.us-east-1.rds.amazonaws.com -p 5432 "dbname=mydb user=root password=mypassword"
Run Code Online (Sandbox Code Playgroud)

这意味着未为 AWS RDS 启用 x509 客户端证书验证。我想必须有某种方法来生成我自己的私钥和 csr 以获得由 AWS 签名的公钥,或者某种方法来配置客户提供的私钥、公钥。我搜索了 AWS 文档,但找不到有关如何启用它的任何参考。

您能否指导我如何配置基于 x509 客户端证书的身份验证的“强制”以连接到基于 AWS RDS 的 PostgreSQL 数据库?

亲切的问候, 沙石

security postgresql ssl amazon-web-services x509

5
推荐指数
1
解决办法
1226
查看次数