我正在使用sshfs
通过 ssh 将带有一些 python 项目的文件夹挂载到我的~/
目录中。
$ mkdir -p ~/mount/my-projects
$ sshfs user@example.com:/home/user/my-projects ~/mount/my-projects
Run Code Online (Sandbox Code Playgroud)
我可以按预期执行大多数命令:
$ ls ~/mount/my-projects
some-python-project
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试对 做任何事情sudo
,它会因权限被拒绝而失败:
$ sudo ls ~/mount/my-projects
ls: cannot access /home/user/mount/my-projects: Permission denied
Run Code Online (Sandbox Code Playgroud)
我真正想要完成的是在我的本地机器上测试 python 包安装脚本:
$ cd ~/mount/my-projects/some-python-project
$ sudo python setup.py install
Run Code Online (Sandbox Code Playgroud) 有没有办法强制apt-get
显示是/否提示?--force-yes
存在一个选项,但似乎没有--force-prompt
或类似的选项。如果您尝试安装已经安装了所有依赖项的软件包,它将开始安装而不显示是/否提示。如果您想查看依赖项是否存在以及将安装哪些依赖项,这可能会很麻烦,因为您不知道是否提前安装了潜在的依赖项。
注意:“apt-get install”什么时候会要求我确认是否要继续?有点相关,因为它描述了在什么标准条件下显示提示。我有兴趣知道如何强制它。
我刚刚在 Arch Linux ( pacman -Syu
)上进行了系统更新,并看到了一个关于存在旧 Perl 模块的警告:
WARNING: '/usr/lib/perl5/site_perl' contains data from at least 2 packages which will NOT be used by the installed perl interpreter.
-> Run the following command to get a list of affected packages: pacman -Qqo '/usr/lib/perl5/site_perl'
WARNING: '/usr/lib/perl5/vendor_perl' contains data from at least 8 packages which will NOT be used by the installed perl interpreter.
-> Run the following command to get a list of affected packages: pacman -Qqo '/usr/lib/perl5/vendor_perl'
Run Code Online (Sandbox Code Playgroud)
运行推荐的命令产生以下结果:
$ pacman …
Run Code Online (Sandbox Code Playgroud) 我有一个 ZIP 存档foo.zip,其中一些文件未包含在目录中。我想将它们解压缩到本地foo目录。我正在尝试使用以下命令提取它们:
unzip -v foo.zip -d ./foo
Run Code Online (Sandbox Code Playgroud)
但是,输出说它没有提取:
caution: not extracting; -d ignored
Archive: foo.zip
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
2345 Defl:N 1234 47% 2018-07-16 00:00 0123456f bar
... ... ... ... ... ... ... ...
-------- ------- --- -------
34567 23456 32% n files
Run Code Online (Sandbox Code Playgroud)
为什么它忽略-d
参数而不提取?
我完全知道,非 root 用户不能将文件夹的所有者更改为另一个用户,即使该用户拥有它,除非他们使用sudo
或拥有该权限CAP_CHOWN
。
有没有办法授予特定的非 root 用户权限以通过sudo
或其他一些命令更改其拥有的目录的所有者,但不允许用户任意更改其不拥有的目录的所有者?
我有一台服务器(以非 root “myserver”用户身份运行)并希望它能够为本地用户创建特定目录,并且当它完成一个目录时,将它的所有者更改为所需的用户。
使用 GNU screen(第 4 版),为什么以下内容运行得很好:
$ screen -S some-name
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试/
在会话名称中使用斜杠 ( ),则会出现有关多用户支持的错误。
$ screen -S some/name
Must run suid root for multiuser support.
Run Code Online (Sandbox Code Playgroud)
如果我尝试从屏幕内设置会话名称:
$ screen
C-a :sessionname some/name
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
: bad session name 'some/name'
Run Code Online (Sandbox Code Playgroud)
所以显然 a/
是会话名称的无效字符。查看 screen的手册页,我看不到任何关于以下内容的无效或保留字符sessionname
:
'-S 会话名称'
将新会话的名称设置为 sessionname。此选项可用于为会话指定一个有意义的名称来代替默认的 tty.host 后缀。此名称标识 screen -list 和 screen -r 命令的会话。此选项等效于 sessionname 命令(请参阅会话名称)。
8.5 会话名称——命令:sessionname [name]
(无)重命名当前会话。请注意,对于 screen -list,名称显示时带有进程 ID。如果省略参数名称,则显示此会话的名称。注意: $STY 环境变量仍然反映旧名称。这可能会导致混淆。默认值由 tty 和主机名构成。
此外,unmatched'
和"
在会话名称中抱怨不匹配的引号,这似乎与语法有关。例如,:sessionname 'test"' …
我看到的大多数关于写入 FIFO 的示例都说使用echo
orcat
命令并将标准输出重定向到文件。例如,
echo 'a' > /tmp/my_fifo
Run Code Online (Sandbox Code Playgroud)
但是,如果 FIFO 尚不存在,这将创建一个常规文件。是否有一些类似的东西,mkfifo
但是如果它不存在就会失败?也就是说,类似于:
echo 'a' | write-to-existing-file /tmp/my_fifo
Run Code Online (Sandbox Code Playgroud)