标签: unix

为某个目录中的新文件指定默认组和权限

我有一个目录,其中有一个由多个用户共享的项目。这些用户使用 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 checkoutgit reset操作为在工作副本中创建的新文件设置正确的掩码和组。操作系统是 Ubuntu Linux。

更新:一位同事建议我应该查看POSIX ACL 的getfacl/setfacl,但下面结合umask 002当前会话中的解决方案对我来说已经足够了,而且要简单得多。

unix permissions posix umask chgrp

16
推荐指数
3
解决办法
2万
查看次数

为我们公司构建 Linux 网络 - 我从哪里开始?

这将是一个有点沉重的问题。我在一家成立于 1962 年的公司里编程。很多东西,尤其是计算机/网络方面的东西,已经过时了。让我多介绍一点背景。

该公司已经运营了一台 Windows 服务器。在服务器上,许多计算机在共享网络驱动器中都有文件,也有一些程序。这就是授予公司范围内对会计和库存等内容的访问权限以及文件共享的方式。不幸的是,从来没有一个强大的系统管理员参与任何设计。记帐系统在 Foxpro 上运行。文件完全混乱。员工似乎一般都知道自己的方式,但为了成长和扩展,我们需要快速掌握这个网络。我认为需要的一些东西:

  • 一个关系数据库,可通过网络上的所有计算机访问,它将存储:
    • 文件(即图纸、报价、已完成项目的图片等)
    • 员工(然后我们可以开始做电脑考勤卡之类的事情)
    • 发票、应收付款和库存
    • 密码管理
    • 工作跟踪

我想在这个数据库之上构建自定义应用程序来支持一切,并构建允许我们的网站与我们内部的东西交互的 API。显然,在构建新系统时,我必须保持现有系统完好无损。我来自网络背景……并且非常熟悉 Unix(我管理过数十台为网站提供服务的服务器)、PHP 和前端开发。我想坚持使用那些我已经很熟悉的开源技术。

我心中最大的问题是从哪里开始。我是否购买服务器机架并开始构建全新的网络?我是在准备好后将每个人都推送到新网络,还是尝试以某种方式同时使用两者并慢慢从旧网络迁移?

我意识到这可能是一个需要一年或更长时间的项目。我真的很感激一些指导——关于系统设计的任何资源,我如何开始,等等。我愿意投入工作 - 我只需要帮助创建一个愿景。

unix network-design

16
推荐指数
2
解决办法
3974
查看次数

具有相同 UID 的多个 *NIX 帐户

我很好奇是否存在标准的预期行为,以及在具有相同 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)

这意味着:

  • 我可以使用自己的密码登录每个帐户。
  • 我创建的文件将具有相同的 UID。
  • 诸如“ls -l”之类的工具会将 UID 列为文件中的第一个条目(在本例中为 a1)。
  • 我避免了两个帐户之间的任何权限或所有权问题,因为它们实际上是同一个用户。
  • 我对每个帐户进行登录审核,因此我可以更好地跟踪系统上发生的情况。

所以我的问题是:

  • 这种能力是被设计出来的还是只是它碰巧起作用的方式?
  • 这是否会在 *nix 变体中保持一致?
  • 这是公认的做法吗?
  • 这种做法是否有意想不到的后果?

请注意,这里的想法是将其用于系统帐户而不是普通用户帐户。

security linux unix

15
推荐指数
4
解决办法
1万
查看次数

列出支持的终端类型?

是否有一种可移植的方式来列出所有N X 系统上支持的终端类型?

如果没有,在 Solaris 上获取此列表的最佳方法是什么?

linux solaris unix terminal terminfo

15
推荐指数
2
解决办法
2万
查看次数

一个类 Unix 操作系统可以托管多少个用户帐户?

假设我想要一个服务器拥有尽可能多的用户帐户。最大值是多少?

我想要数百万个用户帐户。那是疯了吗?我会托管数十个负载平衡镜像,用户数据将存储在高度可用的存储共享上,而所有其他数据都假定为易失性。

linux unix user-management

15
推荐指数
2
解决办法
5451
查看次数

检查PID是否正在运行的正确方法是什么?

我有一个.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并仅使用返回的状态代码是否正常,或者这是否表明我做错了什么,我需要一个不同的命令?

linux unix bash process pid

15
推荐指数
2
解决办法
6万
查看次数

如何在 bash 脚本中获取 Unix 上的完全限定名称 (FQN)?

我已经hostname在多台服务器(RedHat、Ubuntu)上进行了测试,结果hostname -f证明不可靠,有时只返回短名称(如本问题所述)。

我可以在别名中看到 fqn :(hostname -a其中一个别名是我要查找的 fqn),但是别名的顺序不是固定的。

是否有另一种方法可以可靠地获取完全限定名称并将其存储在 bash 变量中?

unix bash hostname

15
推荐指数
4
解决办法
5万
查看次数

在内部创建新文件时,目录 mtime 是否总是更改?

在目录中创建新文件时 - 目录的 mtime 会发生变化吗?

linux unix mtime

15
推荐指数
1
解决办法
7004
查看次数

Unix(或Linux)中是否有停止正在进行的核心转储的机制?

假设一个(非常)大的进程正在崩溃和转储核心,我们从其他信息(可能是断言消息,也可能是其他信息)中知道原因。

有没有办法阻止核心转储完全生成,因为在这种情况下它是一种浪费?

例如,核心转储过程的 kill -9 会中断核心文件的生成吗?

显然,如果我们提前知道我们不想要核心转储,我们可以适当地设置 ulimit 或使用操作系统的各种核心文件控制实用程序。

但这个问题是关于“核心转储已经在进行中”的阶段......

(例如,假设我是/sf/ask/1285776971/ 中的请求者 并且不想浪费 5 -6 TB 的磁盘空间 :) )

linux unix dump

15
推荐指数
1
解决办法
4524
查看次数

程序文件存在于/usr/bin中,但无法使用

显然我的文件存在于 /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)

这里发生了什么?

linux unix filesystems file-permissions

15
推荐指数
2
解决办法
4101
查看次数