与我的问题有关:"如何配置Cassandra来创建具有自定义权限的文件?“。我正试图从操作系统级别着手解决这个问题。
考虑到两个不同的Linux用户-- cassandra和tomcat7 --我能给所有通过cassandra读取访问权限的文件授予tomcat7读取访问权限吗?这些文件仅为o+rw (所以我不能使用组);Cassandra一直在创建新文件,所以手动设置组权限不是一种选择。
发布于 2013-11-06 10:36:49
您可以尝试使用umask更改Cassandra用户的默认文件权限,前提是掩码不是硬编码到cassandra中。这将允许您将tomcat7添加到默认的具有读写权限的cassandra用户组中。
在cassandra的shell配置文件或其他配置文件中的某个位置,很可能有一行引用umask,设置为077或0077。将前7替换为0将允许在创建的所有新文件上为组提供rw。它可能在shell配置文件中,因为它有自己的用户,但有时它是应用程序配置文件的一部分。当然,您需要更改现有文件的文件权限,但这应该是微不足道的。
手册页面在解释umask的来龙去脉方面做得并不出色,但是在Nix上有一个关于了解umask设置的很好的教程。然而,为了防止链接腐烂,在googling上搜索"linux“会从每个人和他的狗身上删除大量的教程。
发布于 2013-11-06 09:01:05
有两种方法可以做到这一点
1)将密码文件中的uid更改为为cassandra和tomcat7相同。将cassandra和tomcat7添加到同一组组中
为了证明这确实有效
( a)添加一个用户,我使用以下命令
sudo adduser likeme --shell /usr/bin/zsh我添加了一个不同的shell,因此很明显这个条目正在被使用。
b)更改/etc/passwd文件中的uid。我使用了这个命令并编辑了文件,以便我的普通登录名(jamie)的uid被用作新用户的uid。
sudo vipwc)测试新用户。下面是发生的事情
$ 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-06 09:01:52
假设您也对非系统用户感兴趣,这些用户应该被允许充当另一个用户,我只允许他作为另一个用户登录。
如果您不愿意只给他其他用户的密码,那么您可以允许他通过ssh (本地)和预共享密钥登录。为此,生成一个密钥(ssh-keygen),将其存储在~cassandra/.ssh/中,并将公共部分也放在~tomcat7/.ssh/authorized_keys中。然后,用户cassandra应该能够使用ssh tomcat7@localhost切换到另一个用户。
https://stackoverflow.com/questions/19807527
复制相似问题