如何将登录类似功能设计为使用suPHP的文件权限.例如,如果我有一个网站www.example.com和以下两个用户拥有自己的主目录,每个用户都有一个php脚本test.php,并且该validateUser.php脚本属于目录中的另一个用户(root,www-data,apache ...)/home.
/home/
??? validateUser.php
??? user1
? ??? test.php
??? user2
??? test.php
user1可以user2's通过访问访问脚本www.example.com/user2/test.php,反之亦然.相反,我想要的,是渠道的所有传入的请求,使用类似mod_rewrite的,对validateUser.php.但是,这样做会导致执行所有脚本作为validateUser.php目标test.php脚本的所有者,而不是目标脚本.
无论如何在suPHP启动之前调用php脚本,然后允许suPHP继续,或完全中止.
编辑这是我提出的第二个赏金.我给Gustav的第一个b/c他给出了一个很好的部分答案.我会提到我到目前为止所尝试的内容,以及为什么它们都不适合我.
1)我尝试使用mod_rewrite将URL重定向validateUser.php到登录用户,或者调用他们想要调用的任何脚本.问题是,我已经把我的虚拟主机,使得每个用户都有自己的虚拟站点(即www.user1.example.com,www.user2.example.com......如果这是一个不好的设计方法,随意粗暴地指出来).因此,虽然OS看到如上所述的文件结构,但在线,根目录也是这样设置的
VirtualHost = www.user1.example.com
??? validateUser.php
??? test.php
VirtualHost = www.user2.example.com
??? validateUser.php
??? test.php
Run Code Online (Sandbox Code Playgroud)
当然,我只是将一份副本移动validateUser.php到每个用户的目录中.问题是现在用户可以删除该文件并在其中放置他们想要的任何内容,就像根本不需要登录一样.解决这个问题的方法是使主文件夹变粘(不是我建议对主文件夹执行的操作)并使validateUser.phproot拥有.但现在它将执行AS root,因为这是suPHP.这就是我放弃的地方.
2)我可以使用古斯塔夫的mod_auth建议,但我不喜欢它预先要求密码(如旧学校网站).
3)我已经考虑了1)的变体,如果我可以在虚拟主机之间重定向.例如,像这样重构虚拟主机
VirtualHost = www.user1.example.com
??? test.php
VirtualHost …Run Code Online (Sandbox Code Playgroud) 目前我的Apache服务器设置如此
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
问题是下面的所有内容/var/www都可以从其他地方访问.如果我有一个网页/var/www/john/bio.html,那么该网页可以借用脚本/图片var/www/jane/
我想像这样设置我的Apache服务器
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www
</VirtualHost>
<VirtualHost *:80>
ServerName www.john.example.com
ServerAlias john.example.com
DocumentRoot /var/www/john
</VirtualHost>
<VirtualHost *:80>
ServerName www.jane.example.com
ServerAlias jane.example.com
DocumentRoot /var/www/jane
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
因此,所有用户的文件john去的/var/www/john/文件夹,同样的用户jane.然后,关闭符号链接(默认情况下),并且仅从/var/www/user/下方提供访问(默认情况下再次),我不必担心john's网页包含来自jane's网页的脚本/图像.
我总是同时处理多个项目.我拥有的文件数量细分如下
Project | Files
--------------------------
Thesis 20
Simulator 50
Plots 30
Graphs 30
Website 500+
Run Code Online (Sandbox Code Playgroud)
将所有这些文件放在一个窗口中是很麻烦的.有几种选择,我会讨论他们的画布,或者我敢说他们的阿喀琉斯之踵.
拆分Windows我可以将vim分成5个窗口,每个项目一个,但我不妨通过针孔编码.我实际上从来不是分裂窗口的粉丝,除了你经常比较和编辑两个相关文件的情况.此外,我发现两个维度的导航无法像水平方向那样无缝导航.
选项卡选项卡,或者更确切地说是视图,愚蠢地称为选项卡,似乎完全适用于此类问题,但它们不提供对缓冲区的限制.例如,如果我在我的Thesis标签中,我只想导航那20个缓冲区,而不是所有500个网站相关的缓冲区.当我将这些保存为会话时,如果我不小心切换到website我的Thesis选项卡中的缓冲区,退出,然后在进入时我可能会导致问题,我有两个website选项卡.这还有问题,因为我:lcd为每个选项卡设置了本地目录().
终端选项卡使用终端选项卡可确保每个选项卡中的缓冲区保持独立.但是,每个vim会话都不能再共享信息.我不能把文字从一个终端拉到另一个终端(我想我可以进入+寄存器).我也不能再使用:buffdo所有的缓冲区了.此外,我喜欢这样一个事实,即我可以将所有vim选项卡保存到单个会话中.
我知道,这样的诅咒公众讨论,所以我会代替问是否有存在的方式来实现我追求的功能.
编辑总结我需要的一个好方法是说我想要"子缓冲区".
编辑我想从vim的标签中获取的是能够更有效地使用它们的功能:视口.我希望能够为我的论文部分专门设置一个标签.在本节中,我将更改本地目录以反映它.此外,我想过滤掉该表中的缓冲区,使其只是所有缓冲区的子集.类似地,在模拟器选项卡中,我想将它专门用于我的模拟器文件.
基本上就是我要的是能力,通过标签,运行VIM的多个独立的会话,但仍然有一些附加津贴(即共享寄存器能够抽出)
通过插入,可以很容易地擦除单词/部分并插入其上,就像这样
cw 删除直到单词结尾(带空格)然后转到插入模式ce 删除直到单词结尾(没有空格)然后转到插入模式c3w 删除直到接下来的3个单词结束(带空格)然后进入插入模式ct. 删除到句点之前然后转到插入模式c$ 删除直到行结束然后转到插入模式如何使用粘贴操作执行此操作?我经常有一条这样的线
var name = "John Smith"
var name = "Jane Smith"
Run Code Online (Sandbox Code Playgroud)
我把它改成了
var name = "John Lee"
var name = "Jane Smith"
Run Code Online (Sandbox Code Playgroud)
和yank(yw)"李",但现在如果我dw从"简史密斯" 删除()"史密斯",我不再有"李"在寄存器中粘贴.我知道我可以使用命名的寄存器.此外,我相信我可以使用视觉模式.但是,我想,因为这是一个很常见的任务,将有使用移动运营商(的方式e,w,t/ T,f/ F,$,0)用粘贴命令来指定哪些粘贴过来.
在Fedora15中,我最初使用的是vim,我的~/.vimrc文件中定义了所有设置.我最近安装了vim-X11,现在已经过渡到gvim了.我定义了一个~/.gvimrc文件,用以下行来设置字体:
set guifont=Bitstream_Vera_Sans_Mono:h11:cANSI
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用.有两件奇怪的事情:
行号,颜色方案等其他设置正常,但字体设置不起作用.相反,我每次都需要在工具栏中设置它们来更改字体:"编辑 - >选择字体".
每次我选择"编辑 - >启动设置"时,它都会打开~/.vimrc文件而不是~/.gvimrc文件.
所以我在里面使用文件流 xmlreader
using (XmlReader reader = XmlReader.Create(new FileStream(archivePath, FileMode.Open), readerSettings))
{
reader.close()
}
Run Code Online (Sandbox Code Playgroud)
但是,进入xmlreader的文件仍然处于使用范围之后的锁定状态,很奇怪,我xmlreader想要为我关闭文件流,不是吗?
感谢帮助.
我通过发出以下命令成功备份了我的SD卡两次
sudo dd if=/dev/sdb of=/home/user/Documents/raspi/images/raspi1.v2.iso bs=1M
Run Code Online (Sandbox Code Playgroud)
但是,现在它给了我以下错误:
dd: reading `/dev/sdb': Input/output error
3027+1 records in
3027+1 records out
3174977536 bytes (3.2 GB) copied, 200.723 s, 15.8 MB/s
Run Code Online (Sandbox Code Playgroud)
环顾网络,这似乎表明SD卡已损坏.但是,我的raspi(我用这张SD卡运行)运行良好(ish)和磁盘工具声称SD卡没有损坏.
有没有其他方法可以找出为什么dd抱怨,如果卡已损坏,如果是,如何修复SD卡.
更新:
我放弃了尝试dd在SD卡上运行,但我确实弄清楚了什么损坏了我的SD卡,这是在本网站上指定的Raspi固件的更新
动机: 我目前正试图在两个联网的raspis上同步两个视频.我尝试从桌面(http和udp)实时流式传输,但每个raspi仍然以明显的延迟打开流.我接下来尝试在raspi上安装vlc并与桌面vlc同步,但这也不起作用.我尝试使用shell脚本在两个raspis上几乎同时启动omxplayer,但也失败了.最后,我使用C脚本在几乎相同的时间启动两个omxplayers,这也失败了.最终,我认为无法控制omxplayer何时开始实际播放视频文件.
当前进展:
因此,现在,我正在修改omxplayer的代码以使用套接字同步两个omxplayers,但我想知道vlc在同步其视频客户端时采用的方法,以便不重新发明轮子.我可能是错的,但我注意到,通过查看详细的输出和调试语句,一个玩家将失去相对于另一个玩家的时间,这样当视频播放时,这种差异会累积,并且在2-3分钟后超过200女士.我觉得这非常令人不安.这意味着在2小时后,差异将是60*200ms=12000ms或在附近12s.我认为现代计算的精确度更像是原子钟的精确度,在1000小时的镜头之后可能会损失1秒,因此我认为只需同步一次这样就足够了.
问题: 如果不同的玩家必须进行常规同步,那么像vlc这样的做法是什么?
注意:我没有流式传输实际的视频文件,因为它们都是通过每个raspis上的NFS远程访问的.
如何有效地使用stat函数来获取有意义的文件权限(用户,组和其他).
我正在查询文件权限,如下所示:
statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
Run Code Online (Sandbox Code Playgroud)
这将以十进制形式返回权限.因此,如果fooBar.txt具有八进制文件权限0700,则此处permissions设置为十进制值448.我想是设置9个变量对每个权限(ownerRead,ownerWright,ownerExecute,groupRead,...)如果我要做到这一点,我会用蛮力方法如下所示:
statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
octPermissions = oct ( permissions )
ownerRead = octPermissions [1] >= 4
ownerWrite = octPermissions [1] == 2 or octPermissions [1] == 6 or octPermissions [1] == 3 or
ownerExecute = octPermissions [1] …Run Code Online (Sandbox Code Playgroud) 我的左手腕总是受到RSI的影响(见这里),我认为这是因为与按下ctrl和shift键相关的扭转动作.因此,我继续购买了下面显示的Advantage Kinesis键盘:

然而,即使使用这个键盘和脚踏板,并将shift键映射到Back Space,我仍然有RSI,再次只在我的左手.然后它对我来说很明显,大量的运动键与左手相关联.这是右边的东西,然后是左手的非详尽列表.
右手:
p 一个简单的粘贴语句,几乎总是单独使用o 在当前行上方/下方写入,几乎总是单独使用i 写入光标,几乎总是单独使用u 撤消,几乎总是单独使用y抽出,用于与运动命令,但只能在右侧的几个运动符(即(,),i...)h,j,k,l,单个字符的运动,很少使用.现在观察
左手:
w,e,b运动一个字.经常与数字一起使用,或多次按下.t,f,$所有结合键等y,d或vw+ h,j,k,或者l,移动窗口,并要求用你的左手一个跃动.x Ctrl f 全方位完成(IIRC)f Ctrl g 在光标下查找文件现在我确信这是一个有偏见的列表,但它得到了我的观点,大量常用的动作键和一些其他困难的组合位于键盘的左侧.
我的问题是,是否有一种非重塑的方式来做到这一点?例如,有没有任何图书馆这样做?如果没有,如果我切换到DVORAK,这会解决我提到的任何问题吗?
vim ×4
permissions ×2
algorithm ×1
apache2 ×1
backup ×1
c# ×1
copy-paste ×1
dd ×1
ergonomics ×1
flash-memory ×1
fonts ×1
login ×1
media-player ×1
octal ×1
paste ×1
php ×1
plugins ×1
python ×1
remap ×1
stat ×1
subdomain ×1
suphp ×1
video ×1
virtualhost ×1
xmlreader ×1
yank ×1