我是否可以授予Linux用户与其他用户完全相同的权限?

时间:2013-11-06 08:49:17

标签: linux file-permissions

与我的问题相关:“How can I configure Cassandra to create files with custom rights?”。我正试图从操作系统级别解决问题。

鉴于两个不同的Linux用户 - cassandratomcat7 - 我是否可以tomcat7cassandra具有读访问权限的所有文件赋予o+rw读取权限?这些文件只有{{1}}(因此我无法使用群组); Cassandra一直在不断创建新文件,因此不能手动设置组权限。

3 个答案:

答案 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切换到其他用户。