003 File Manager
Current Path:
/usr/src/contrib/pjdfstest/tests/rename
usr
/
src
/
contrib
/
pjdfstest
/
tests
/
rename
/
📁
..
📄
00.t
(2.51 KB)
📄
01.t
(579 B)
📄
02.t
(575 B)
📄
03.t
(543 B)
📄
04.t
(1.04 KB)
📄
05.t
(1.01 KB)
📄
06.t
(1.75 KB)
📄
07.t
(1.68 KB)
📄
08.t
(1.37 KB)
📄
09.t
(6.52 KB)
📄
10.t
(4.96 KB)
📄
11.t
(648 B)
📄
12.t
(652 B)
📄
13.t
(583 B)
📄
14.t
(581 B)
📄
15.t
(838 B)
📄
16.t
(820 B)
📄
17.t
(581 B)
📄
18.t
(516 B)
📄
19.t
(528 B)
📄
20.t
(676 B)
📄
21.t
(1.47 KB)
Editing: 09.t
#!/bin/sh # vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EACCES or EPERM if the directory containing 'from' is marked sticky, and neither the containing directory nor 'from' are owned by the effective user ID" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2353" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n4} 0755 cdir=`pwd` cd ${n4} expect 0 mkdir ${n0} 0755 expect 0 chmod ${n0} 01777 expect 0 chown ${n0} 65534 65534 expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 for type in regular fifo block char socket symlink; do # User owns both: the source sticky directory and the source file. expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} # User owns the source sticky directory, but doesn't own the source file. for id in 0 65533; do expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},${id},${id} lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User owns the source file, but doesn't own the source sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User doesn't own the source sticky directory nor the source file. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid if [ "${type}" != "none" ]; then expect 65534,65534 lstat ${n1}/${n3} uid,gid expect 0 unlink ${n1}/${n3} fi done expect 0 unlink ${n0}/${n2} done done # User owns both: the source sticky directory and the source directory. expect 0 chown ${n0} 65534 65534 create_file dir ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rename ${n1}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rmdir ${n1}/${n3} # User owns the source sticky directory, but doesn't own the source directory. # This fails when changing parent directory, because this will modify # source directory inode (the .. link in it), but we can still rename it # without changing its parent directory. for id in 0 65533; do expect 0 chown ${n0} 65534 65534 create_file dir ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect ENOENT lstat ${n1}/${n3} type expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n0}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},${id},${id} lstat ${n0}/${n3} inode,uid,gid expect 0 rename ${n0}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect dir,${id},${id} lstat ${n0}/${n2} type,uid,gid expect 0 rmdir ${n1}/${n3} expect 0 -u 65534 -g 65534 mkdir ${n0}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n0}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},${id},${id} lstat ${n0}/${n3} inode,uid,gid expect 0 rmdir ${n0}/${n3} done # User owns the source directory, but doesn't own the source sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rename ${n1}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rmdir ${n1}/${n3} done # User doesn't own the source sticky directory nor the source directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect ENOENT lstat ${n1}/${n3} type expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect dir,65534,65534 lstat ${n1}/${n3} type,uid,gid expect 0 rmdir ${n0}/${n2} expect 0 rmdir ${n1}/${n3} done expect 0 rmdir ${n1} expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n4}
Upload File
Create Folder