2

与我的问题相关:“如何配置 Cassandra 以创建具有自定义权限的文件? ”。我正在尝试从操作系统级别解决问题。

给定两个不同的 Linux 用户 -cassandra并且tomcat7- 我可以授予tomcat7对所有具有读取访问权限的文件的读取访问权限cassandra吗?这些文件是唯一的o+rw(所以我不能和组一起玩);Cassandra 一直在创建新文件,因此无法手动设置组权限。

4

3 回答 3

1

您可以尝试使用 更改 cassandra 用户的默认文件权限umask,假设掩码没有硬编码到 Cassandra 中。这将允许您将 tomcat7 添加到具有读/写访问权限的默认 cassandra 用户组。

在 cassandra 的 shell 配置文件或其他配置文件中的某处,可能有一行引用设置为 077 或 0077 的 umask。将前 7 替换为 0 将允许对创建的所有新文件的组进行 rw。它可能在 shell 配置文件中,因为它有自己的用户,但有时它是应用程序配置文件的一部分。您当然需要更改现有文件的文件权限,但这应该是微不足道的。

手册页在解释 umask 的来龙去脉方面做得并不出色,但在 Nix Craft上了解 umask 设置有一个很好的教程。然而,为了防止链接失效,谷歌搜索“linux umask”会从每个人和他的狗那里找到一大堆教程。

于 2013-11-06T10:36:49.547 回答
1

有两种方法可以做到这一点

1)将密码文件中的uid更改为cassandra和tomcat7相同。将 cassandra 和 tomcat7 添加到同一组组中

为了证明这确实有效

a) 添加用户,我使用了命令

sudo adduser likeme --shell /usr/bin/zsh

我添加了一个不同的外壳,因此很明显正在使用该条目

b) 更改 /etc/passwd 文件中的 uid。我使用此命令并编辑了文件,以便将我的正常登录 (jamie) 的 uid 用作新用户的 uid。

sudo vipw

c) 测试新用户。这是发生的事情

$ who am i
jamie    pts/10       2013-11-06 19:04 (:0.0)
$ sudo su - likeme
%

请注意,提示已更改,因为正在使用不同的 shell。然而:

% id
uid=1000(jamie) gid=1000(jamie) groups=1000(jamie)

它仍然说我是我!!这是因为从根本上说,这两个用户是相同的。您可能会说有两个用户名,但只有一个用户。

2)配置sudo让tomcat7变成cassandra

tomcat7  ALL = (cassandra:cassandra) ALL
于 2013-11-06T09:01:05.917 回答
-1

假设您也对应该被允许充当其他用户的非系统用户感兴趣,我只会允许他以其他用户身份登录。

如果您不愿意只给他其他用户的密码,那么您可以允许他通过 ssh(本地)和预共享密钥登录。为此,生成一个密钥 ( ssh-keygen),将其存储在~cassandra/.ssh/其中并将公共部分也放入~tomcat7/.ssh/authorized_keys。然后,用户cassandra应该能够使用 . 切换到其他用户ssh tomcat7@localhost

于 2013-11-06T09:01:52.943 回答