我有一个目录,其中有一个由多个用户共享的项目。这些用户使用 SSH 访问此目录并修改/创建文件。
这个项目应该只对特定的用户组是可写的:我们称之为“mygroup”。在 SSH 会话期间,当前用户创建的所有文件/目录默认应归组“mygroup”所有,并具有组可写权限。
我可以解决权限问题umask:
$ cd project
$ umask 002
$ touch test.txt
Run Code Online (Sandbox Code Playgroud)
文件“test.txt”现在是组可写的,但仍然属于我的默认组(“mislav”,与我的用户名相同)而不是“mygroup”。我可以chgrp递归地设置所需的组,但我想知道是否有一种方法可以隐式设置某些组,例如 umask 在会话期间更改默认权限。
这个特定目录是一个带有工作副本的共享 git 存储库,我希望git checkout和git reset操作为在工作副本中创建的新文件设置正确的掩码和组。操作系统是 Ubuntu Linux。
更新:一位同事建议我应该查看POSIX ACL 的getfacl/setfacl,但下面结合umask 002当前会话中的解决方案对我来说已经足够了,而且要简单得多。
这将是一个有点沉重的问题。我在一家成立于 1962 年的公司里编程。很多东西,尤其是计算机/网络方面的东西,已经过时了。让我多介绍一点背景。
该公司已经运营了一台 Windows 服务器。在服务器上,许多计算机在共享网络驱动器中都有文件,也有一些程序。这就是授予公司范围内对会计和库存等内容的访问权限以及文件共享的方式。不幸的是,从来没有一个强大的系统管理员参与任何设计。记帐系统在 Foxpro 上运行。文件完全混乱。员工似乎一般都知道自己的方式,但为了成长和扩展,我们需要快速掌握这个网络。我认为需要的一些东西:
我想在这个数据库之上构建自定义应用程序来支持一切,并构建允许我们的网站与我们内部的东西交互的 API。显然,在构建新系统时,我必须保持现有系统完好无损。我来自网络背景……并且非常熟悉 Unix(我管理过数十台为网站提供服务的服务器)、PHP 和前端开发。我想坚持使用那些我已经很熟悉的开源技术。
我心中最大的问题是从哪里开始。我是否购买服务器机架并开始构建全新的网络?我是在准备好后将每个人都推送到新网络,还是尝试以某种方式同时使用两者并慢慢从旧网络迁移?
我意识到这可能是一个需要一年或更长时间的项目。我真的很感激一些指导——关于系统设计的任何资源,我如何开始,等等。我愿意投入工作 - 我只需要帮助创建一个愿景。
我很好奇是否存在标准的预期行为,以及在具有相同 UID 的 Linux/Unix 上创建多个帐户时是否被认为是不好的做法。我已经用这个在 RHEL5 上做了一些测试,它的表现符合我的预期,但我不知道我是否在使用这个技巧来诱惑命运。
例如,假设我有两个具有相同 ID 的帐户:
a1:$1$4zIl1:5000:5000::/home/a1:/bin/bash
a2:$1$bmh92:5000:5000::/home/a2:/bin/bash
Run Code Online (Sandbox Code Playgroud)
这意味着:
所以我的问题是:
请注意,这里的想法是将其用于系统帐户而不是普通用户帐户。
是否有一种可移植的方式来列出所有N X 系统上支持的终端类型?
如果没有,在 Solaris 上获取此列表的最佳方法是什么?
假设我想要一个服务器拥有尽可能多的用户帐户。最大值是多少?
我想要数百万个用户帐户。那是疯了吗?我会托管数十个负载平衡镜像,用户数据将存储在高度可用的存储共享上,而所有其他数据都假定为易失性。
我有一个.pid文件,我需要检查进程是否正在运行。到目前为止,我发现了两个选项
kill -0 `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
如果 pid 未运行,则会打印出错误。我知道这可以重定向到/dev/null,但这让我认为这不是最好的解决方案。
第二种解决方案是使用ps,但是它也会在 STDOUT 上打印
ps -ef `cat something.pid`
Run Code Online (Sandbox Code Playgroud)
将输出重定向到/dev/null并仅使用返回的状态代码是否正常,或者这是否表明我做错了什么,我需要一个不同的命令?
我已经hostname在多台服务器(RedHat、Ubuntu)上进行了测试,结果hostname -f证明不可靠,有时只返回短名称(如本问题所述)。
我可以在别名中看到 fqn :(hostname -a其中一个别名是我要查找的 fqn),但是别名的顺序不是固定的。
是否有另一种方法可以可靠地获取完全限定名称并将其存储在 bash 变量中?
假设一个(非常)大的进程正在崩溃和转储核心,我们从其他信息(可能是断言消息,也可能是其他信息)中知道原因。
有没有办法阻止核心转储完全生成,因为在这种情况下它是一种浪费?
例如,核心转储过程的 kill -9 会中断核心文件的生成吗?
显然,如果我们提前知道我们不想要核心转储,我们可以适当地设置 ulimit 或使用操作系统的各种核心文件控制实用程序。
但这个问题是关于“核心转储已经在进行中”的阶段......
(例如,假设我是/sf/ask/1285776971/ 中的请求者 并且不想浪费 5 -6 TB 的磁盘空间 :) )
显然我的文件存在于 /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试chown它时,我收到一个错误
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
Run Code Online (Sandbox Code Playgroud)
进一步尝试运行它也失败了!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?