ecryptfs breaks Apparmor naming.
TEST CASE: 1. sudo apt-get install ecryptfs-utils 2. sudo adduser --encrypt-home foo 3. login as 'foo' and verify that encrypted home is correct: $ df |grep '/home/foo/\.Private' /home/foo/.Private 3936216 3313964 422304 89% /home/foo 4. Create the following file as /tmp/359338.sh: #!/bin/sh echo "Touching $HOME/test.txt" touch $HOME/test.txt
5. chmod 755 /tmp/359338.sh 6. add the following to /etc/apparmor.d/tmp.359338.sh: #include <tunables/global>
/tmp/359338.sh { #include <abstractions/base>
/bin/dash rix, /bin/touch rix, /tmp/359338.sh r,
owner @{HOME}/test.txt rw, }
7. reload apparmor: $ sudo /etc/init.d/apparmor force-reload
8. run /tmp/359338.sh as non-foo user: $ /tmp/359338.sh Touching /home/jamie/test.txt
9. run /tmp/359338.sh as foo: $ /tmp/359338.sh Touching /home/foo/test.txt touch: cannot touch `/home/foo/test.txt': Permission denied
dmesg should have something like: Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233018] type=1503 audit(1239651953.911:114): operation="inode_create" requested_mask="a::" denied_mask="a::" fsuid=1001 name="/home/foo/.Private/ECRYPTFS_FNEK_ENCRYPTED.FWYwjom6xTTrhkQH6NYaDlNzbi4a-Y57kI1XsKcpAS2HNDa3p8fkshGrq---" pid=5038 profile="/tmp/359338.sh" Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233027] ecryptfs_do_create: Failure to create dentry in lower fs; rc = [-13] Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233045] ecryptfs_create: Failed to create file inlower filesystem
ecryptfs breaks Apparmor naming.
TEST CASE: foo/\.Private'
1. sudo apt-get install ecryptfs-utils
2. sudo adduser --encrypt-home foo
3. login as 'foo' and verify that encrypted home is correct:
$ df |grep '/home/
/home/foo/.Private 3936216 3313964 422304 89% /home/foo
4. Create the following file as /tmp/359338.sh:
#!/bin/sh
echo "Touching $HOME/test.txt"
touch $HOME/test.txt
5. chmod 755 /tmp/359338.sh d/tmp.359338. sh:
6. add the following to /etc/apparmor.
#include <tunables/global>
/tmp/359338.sh {
#include <abstractions/base>
/bin/dash rix,
/bin/touch rix,
/tmp/359338.sh r,
owner @{HOME}/test.txt rw,
}
7. reload apparmor: d/apparmor force-reload
$ sudo /etc/init.
8. run /tmp/359338.sh as non-foo user: test.txt
$ /tmp/359338.sh
Touching /home/jamie/
9. run /tmp/359338.sh as foo: foo/test. txt': Permission denied
$ /tmp/359338.sh
Touching /home/foo/test.txt
touch: cannot touch `/home/
dmesg should have something like: 3.911:114) : operation= "inode_ create" requested_ mask="a: :" denied_mask="a::" fsuid=1001 name="/ home/foo/ .Private/ ECRYPTFS_ FNEK_ENCRYPTED. FWYwjom6xTTrhkQ H6NYaDlNzbi4a- Y57kI1XsKcpAS2H NDa3p8fkshGrq- --" pid=5038 profile= "/tmp/359338. sh"
Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233018] type=1503 audit(123965195
Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233027] ecryptfs_do_create: Failure to create dentry in lower fs; rc = [-13]
Apr 13 16:45:53 sec-jaunty-amd64 kernel: [ 523.233045] ecryptfs_create: Failed to create file inlower filesystem