我正在尝试创建一个Bash shell脚本,允许将文件从Flash设备传输到用户将指定的存档.虽然我想限制此用户无法在此存档目录中创建任何子目录.
注意:从本质上讲,我希望用户创建/指定的归档目录是一个扁平的单级结构.
我没有第一个线索如何实现这一目标,并希望得到任何帮助.
解决方法:
没有任何本机机制可以轻松实现它. Linux的权限系统无法为创建文件和目录指定单独的权限,因为目录实际上是文件.但试试这样:
>使所有归档目录归一个(或几个不同的)用户所有,只为此目的而创建.让我们假设它的名称为archiveuser.
>让所有归档目录(我猜你有很多)归这个用户所有,in.ex.:
$chown archiveuser:archiveuser /somedir/archivedir1
$chown archiveuser:archiveuser /somedir/archivedir2
$chown archiveuser:archiveuser /somedir/archivedir3
>限制只能为所有者访问的存档目录的访问权限:
$chmod 700 /somedir/archivedir1
$chmod 700 /somedir/archivedir2
$chmod 700 /somedir/archivedir3
>使用sudo机制为存档目录提供cp命令访问权限:
添加到/ etc / sudoers:
someuser1 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
someuser2 ALL=(archiveuser) NOPASSWD:/bin/cp /path/to/pendrive/* /somedir/archiveuser/*
当然,为应该被允许使用此命令的所有用户创建适当的组是很方便的.阅读sudo教程:-).
>就是这样.用户必须使用:
$sudo -u archiveuser cp /path/to/pendrive/somefile /somedir/archiveuser/
您可以创建一些别名以使其更方便使用(即别名cpt =’sudo -u archiveuser cp’).另请注意,在这种情况下,sudo不允许复制目录所需的cp -r.此外,权限还会阻止mkdir命令.这样你的目标就实现了.