首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在安装脚本中使chgrp命令可选?

如何在安装脚本中使chgrp命令可选?
EN

Stack Overflow用户
提问于 2015-04-21 18:07:26
回答 2查看 800关注 0票数 0

我正在为Linux游戏创建一个安装脚本。作为安装的一部分,我将游戏可执行文件的suid权限更改为“游戏”组,以便游戏可以更新高分文件,即使它是由常规用户运行的。

现在我的Makefile.am看起来是这样的:

代码语言:javascript
复制
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src man

install-exec-hook:
    chgrp games @bindir@/xjump
    chmod +s    @bindir@/xjump

    mkdir -p    @localstatedir@/xjump
    touch       @localstatedir@/xjump/record
    chmod 660   @localstatedir@/xjump/record
    chgrp games @localstatedir@/xjump/record

我遇到的问题是chgrp命令需要管理权限。如果我使用sudo make install在全球范围内安装游戏,那么它可以正常工作,但如果我将前缀更改为主目录中的某个位置,并尝试执行常规的make install,则由于chgrp失败。

代码语言:javascript
复制
chgrp: changing group of ‘/home/hugo/Desktop/aaa/bin/xjump’: Operation not permitted

由于本地安装的游戏版本只有一个玩家,我真的不需要做chgrp的事情。是否有一种方法可以检测makefile是否在没有根权限的情况下运行,并跳过权限更改?或者我应该在我的配置脚本中添加一个配置标志,而不是试图自动修复这个权限问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 18:20:21

当命令失败时,您没有以root用户的身份运行。似乎没有什么问题,你只是不想要错误信息。您可以看到自己是谁,但最简单的解决方案是用true重定向输出结束,这样您的步骤就不会失败:

代码语言:javascript
复制
chgrp games @localstatedir@/xjump/record 2>/dev/null || true
票数 1
EN

Stack Overflow用户

发布于 2015-04-21 18:26:46

如果您运行"whoami",您将能够找出谁是当前用户。

代码语言:javascript
复制
    runner=`whoami` ; 
    if test $$runner == "root" ; 
    then 
            chgrp games @localstatedir@/xjump/record
    fi
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29779932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档