与我的问题相关:“如何配置 Cassandra 以创建具有自定义权限的文件? ”。我正在尝试从操作系统级别解决问题。
给定两个不同的 Linux 用户 -cassandra
并且tomcat7
- 我可以授予tomcat7
对所有具有读取访问权限的文件的读取访问权限cassandra
吗?这些文件是唯一的o+rw
(所以我不能和组一起玩);Cassandra 一直在创建新文件,因此无法手动设置组权限。
与我的问题相关:“如何配置 Cassandra 以创建具有自定义权限的文件? ”。我正在尝试从操作系统级别解决问题。
给定两个不同的 Linux 用户 -cassandra
并且tomcat7
- 我可以授予tomcat7
对所有具有读取访问权限的文件的读取访问权限cassandra
吗?这些文件是唯一的o+rw
(所以我不能和组一起玩);Cassandra 一直在创建新文件,因此无法手动设置组权限。
您可以尝试使用 更改 cassandra 用户的默认文件权限umask
,假设掩码没有硬编码到 Cassandra 中。这将允许您将 tomcat7 添加到具有读/写访问权限的默认 cassandra 用户组。
在 cassandra 的 shell 配置文件或其他配置文件中的某处,可能有一行引用设置为 077 或 0077 的 umask。将前 7 替换为 0 将允许对创建的所有新文件的组进行 rw。它可能在 shell 配置文件中,因为它有自己的用户,但有时它是应用程序配置文件的一部分。您当然需要更改现有文件的文件权限,但这应该是微不足道的。
手册页在解释 umask 的来龙去脉方面做得并不出色,但在 Nix Craft上了解 umask 设置有一个很好的教程。然而,为了防止链接失效,谷歌搜索“linux umask”会从每个人和他的狗那里找到一大堆教程。
有两种方法可以做到这一点
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
假设您也对应该被允许充当其他用户的非系统用户感兴趣,我只会允许他以其他用户身份登录。
如果您不愿意只给他其他用户的密码,那么您可以允许他通过 ssh(本地)和预共享密钥登录。为此,生成一个密钥 ( ssh-keygen
),将其存储在~cassandra/.ssh/
其中并将公共部分也放入~tomcat7/.ssh/authorized_keys
。然后,用户cassandra
应该能够使用 . 切换到其他用户ssh tomcat7@localhost
。