我经常使用此命令在我的开发 VM 中的用户之间切换:
✸ sudo su - otheruser
但是,如果我尝试访问/dev/stderr
或类似内容,我会遇到麻烦:
otheruser$ echo hi > /dev/stderr
-bash: /dev/stderr: Permission denied
我知道我可以>&2
在这个特定的实例中使用,但在某些情况下(例如tee /dev/stderr
)你需要一个可打开的文件,而不仅仅是一个文件描述符。
我发现我可以在 sudo 之前打开 tty 的写权限来解决这个问题:
✸ ls -ld /dev/stderr
lrwxrwxrwx 1 root root 15 Jan 13 08:06 /dev/stderr -> /proc/self/fd/2
✸ ls -ld /proc/self/fd/2
lrwx------ 1 aron aron 64 Jan 14 15:08 /proc/self/fd/2 -> /dev/pts/13
✸ ls -ld /dev/pts/13
crw--w---- 1 aron tty 136, 13 Jan 14 15:08 /dev/pts/13
✸ chmod a+w /dev/pts/13
或更简单地说:
✸ chmod a+w /dev/stderr
但我想知道我是否应该使用不同的调用,可以正确分配和/或授予权限。建议?