Articles of unix

Freebsd Secondary Group不允许删除文件夹

TLDR:我有一个作为辅助组的成员的用户。 该用户可以删除具有664个perms的文件作为次要用户,但不能删除具有775个perms的目录。 详情:我有一个用户。 让我们叫他ftpuser。 我用他上传和下载文件到我的发烧箱。 用户的主要组是“ftp”,并在组“www”中作为辅助组。 我的Web服务器以用户www和组www的forms运行,并且我的proftpd(以www和www运行)configuration为将所有文件以www和www(用于文件所有权)的forms放入所需的目录中,并将文件上的664和目录上的775删除。 我的问题是(尝试2 ftp客户端)ftp客户端可以删除文件,但不是文件夹。 Filezilla返回550权限被拒绝。 所有者只能删除标志没有设置,我已经三重检查了权限,他们确实是775。 它驱使我坚持必须login到我的服务器手动删除文件夹每次。 一些文件夹和文件是由我的PHP脚本中的一个创build的,但是当我检查文件的属性时,权限设置得当。 目录和文件创build工作惊人。 可以删除文件,而不是目录。 Freebsd 9.0在VirtualBox中运行(32位一路)Proftpd(作为www和www运行)作为ftp服务器(尝试使用dreamweaver和filezilla作为客户端)基本放大器设置(apache,mysql和php)。 编辑: 父文件夹是755.我知道这将是一些愚蠢简单的事情,容易被忽略。 我以为我设置了775两个目录(apache22 / data)的批量烫发,但我必须在设置烫发后制作该目录。 你每天学习新的东西。 谢谢!

sudo:如何只允许一个参数的命令?

我想添加一个条目到我的suoders,允许一个用户运行一个命令,只有一个非选项参数。 # tail -1 /etc/sudoers ALL ALL = (:tool) NOPASSWD: /bin/echo [az]* $ sudo -g tool /bin/echo abc def abc def $ sudo -g tool /bin/echo -abc def [sudo] password for user: 我可以使用sudoers sytnax来做到吗? 或者我需要创build一个帮手脚本?

在GNU屏幕标题或hardstatusline中正确alignment文本

我有这个在我的.screenrc caption always "%{= Kw} [%0c] %-Lw%{= KW}[%50>%n%f* %t]%{= Kw}%+Lw%=| %l | ${FULLHOST}" 它通常显示如下所示: [01:06] 0$ vim 1$ top 2-$ tail [3$* ~] | 0.26 0.54 0.36 | machine.domain.com 但是,当我打开很多窗口时,右侧的数据被推下并截断: [01:07] 0$ vim 1$ top 2$ tail 3$ ~ 4$ ~ 5$ ~ 6-$ ~ [7$* ~] | 0.21 0.46 0.34 | mac 我怎样才能改变标题命令,所以它会截断窗口列表如果必要的,而不是从边缘推入正确的信息? 如果活动窗口始终显示,则为奖励积分。

如何以最less的停机时间从一台服务器迁移到另一台服务器?

我有一个服务器托pipe一个网站和其他服务,需要重新安装。 我想暂时将这些服务重新定位到另一台服务器上,尽可能减less停机时间。 两台服务器都在同一个数据中心,可以在同一个networking交换机上。 用最less的停机时间来移动这些服务的最佳技术是什么? 该网站是数据库驱动的,所以理想情况下,我想要一个“铁路交换机”事件,我可以确保所有的stream量一次移动到新的服务器。 我不希望在将数据迁移到新数据库后,旧数据库会得到更新。 我考虑过两件事情: 更改DNS以指向临时服务。 这里的主要问题是,我不控制DNS的传播时间,其他服务器可以暂时保留caching的结果,从而使旧url的用户“closures”网站。 有没有办法解决这个问题与Apache +redirect? 我怀疑,因为基于名称的虚拟主机断开没有域名,我不能使用,因为它是陈旧的。 将旧IP地址绑定到新服务器,并在重新安装期间(暂时)为旧服务器分配不同的IP。 在这种情况下,我可以单独离开DNS。 还有其他简单的解决scheme,我忽略了吗?

如何从命令行的whois microsoft.com?

如果你是“whois microsoft.com”,那么你会从恶作剧中得到一大堆列表,他们认为把“microsoft.com”放在他们的子域名中可能会搞砸这个列表。 输出指示: 要选出一条logging,请用“xxx”查找它,其中xxx是上面显示的logging之一。 如果logging相同,则使用“= xxx”查找它们以获得每个logging的完整显示。 但据我所知,这不起作用。 david:~$ whois '"microsoft.com"' whois: com".whois-servers.net: nodename nor servname provided, or not known david:~$ whois =microsoft.com (…blah, blah, blah…) No match for =MICROSOFT.COM david:~$ whois '"=microsoft.com"' whois: com".whois-servers.net: nodename nor servname provided, or not known 你是怎么做到的? 我知道我可以去一个网站查找,但这不是重点。

在Unix上recursion移动实用程序?

有时候我有两棵树曾经拥有相同的内容,但已经不同步了(因为我把磁盘移动了或者其​​它东西)。 一个很好的例子就是我从Fedora的上游软件包镜像。 我想通过将所有文件从tree1移动到tree2来再次合并这两个树。 通常我会这样做: rsync -arv tree1/* tree2 然后删除tree1。 但是,这需要花费大量的时间和磁盘空间,而且要做到这一点会容易得多: mv -r tree1/* tree2 换句话说,recursion移动。 这会更快,因为首先它不会复制,只是移动inode,第二我不需要在最后删除。 这是否存在? 作为一个testing用例,请考虑以下一系列命令: $ mkdir -pa/b $ touch a/b/c1 $ rsync -arv a/ a2 sending incremental file list created directory ./ b/ b/c1 b/c2 sent 173 bytes received 57 bytes 460.00 bytes/sec total size is 0 speedup is 0.00 $ […]

使用查找返回引用文件path的列表

我想创build一个包含ctime小于30天的目录中的文件的tarball。 我发现的大多数教程基本上都是这样做的: tar cvf foo.tar $(find ~/POD -type f -ctime -30) 问题是我想要tar的很多文件都包含空格。 这意味着tar命令将根据空格分隔,这意味着完整的文件path将被分解。 所以现在我试图让find命令返回一个引用文件path的列表。 所以这就是我所尝试的: find . -type f -ctime -30 | xargs printf "\"%s\"\n" 但是这个命令也打破了所有基于空格的文件名。 那么我试过这个: oldifs=$IFS IFS=\n find . -type f -ctime -30 | xargs printf "\"%s\"\n" IFS=$oldifs 但是,这给了我相同的结果。 有没有一种方法可以将完整的path名传给tar并使其名称中的空格都能工作?

UTF-8和!#shell脚本

有没有一种方法可以在Linux上configurationbash(red hat和ubuntu)以允许使用UTF-8对shell脚本进行编码? 我找不到一个简单的方法来改变一个小东西 ,让整个系统只使用UTF-8文件,而不必担心编码。

使用inittab来确保sshd(和其他重要的项目)仍在运行 – 有什么缺点?

设法杀死远程计算机上的sshd(通过运行一个使用机器中所有可用内存的脚本,oops …),除了访问主机[1]之外我无法访问,我正在考虑如何确保该sshd始终保持运行。 除了每隔n分钟或几小时重新启动sshd的hacky cron作业外, 使用inittab让init保持sshd运行似乎是一个好主意 。 这种方法有什么缺点吗? 这似乎是Linux发行版默认情况下明智的做法,因为sshd通常是机器唯一可用的访问方法。 另外,还有其他的守护进程,我应该使用这种方法? 也许是一个监控代理,如nagios的nagios? [1]是的,pipe理卡或networking电源开关将是一个好主意,但他们当时被认为是“不必要的”。

从shell编码到base32

我正在寻找编码inputstringbase32编码直接从shell。 我期待在Ubuntu下做到这一点,但我想这里的味道并不特别重要。 有没有现有的Linux / Unix工具只是做这个? 有些东西是: -bash-3.2$ echo -n 'hello' | base32