与我的问题相关:“How can I configure Cassandra to create files with custom rights?”。我正试图从操作系统级别解决问题。
鉴于两个不同的Linux用户 - cassandra
和tomcat7
- 我是否可以tomcat7
对cassandra
具有读访问权限的所有文件赋予o+rw
读取权限?这些文件只有{{1}}(因此我无法使用群组); Cassandra一直在不断创建新文件,因此不能手动设置组权限。
答案 0 :(得分:1)
有两种方法可以做到这一点
1)将密码文件中的uid更改为cassandra和tomcat7相同。将cassandra和tomcat7添加到同一组组
显示这实际上有效
a)添加用户,我使用了命令
sudo adduser likeme --shell /usr/bin/zsh
我添加了一个不同的shell,因此很明显正在使用此条目
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
答案 1 :(得分:1)
您可以尝试使用umask
更改cassandra用户的默认文件权限,假设掩码未硬编码到Cassandra中。这将允许您将tomcat7添加到具有读/写访问权限的默认cassandra用户组。
在shell配置文件或cassandra的其他配置文件中的某处,可能会有一行引用umask,设置为077或0077.将第一个7替换为0将允许在创建的所有新文件上使用rw。它可能位于shell配置文件中,因为它拥有自己的用户,但它有时是应用程序配置文件的一部分。您当然需要更改现有文件的文件权限,但这应该是微不足道的。
手册页在解释umask的细节方面做得不是很出色,但有关Nix Craft Understanding umask settings的精彩教程。然而,为了防止链接腐烂,谷歌搜索“linux umask”从每个人和他的狗那里收集了大量的教程。
答案 2 :(得分:-1)
假设您也对应该被允许充当其他用户的非系统用户感兴趣,我只允许他以其他用户身份登录。
如果您不愿意只给他一个其他用户的密码,那么您可以允许他通过ssh(本地)和预共享密钥登录。为此,生成一个密钥(ssh-keygen
),将其存储在~cassandra/.ssh/
中,并将公共部分也放在~tomcat7/.ssh/authorized_keys
中。然后,用户cassandra
应该可以使用ssh tomcat7@localhost
切换到其他用户。