Is it possible to test effective permissions of a file for a specific user?
I normally do this by su user and then accessing the file, but I now want to test this on an user with no shell (i.e. a System user)
Is it possible to test effective permissions of a file for a specific user?
I normally do this by su user and then accessing the file, but I now want to test this on an user with no shell (i.e. a System user)
I found convenient to use in scripts something like
sudo -u <user> test -r <file-to-test> && ...
The sudo command can run anything as a particular user with the -u option. Instead of worrying about shells, just try to cat (or execute, whatever) your file as your target user:
$ sudo -u apache cat .ssh/authorized_keys
cat: .ssh/authorized_keys: Permission denied
cat is probably not the best choice though... it you are testing a large file or a binary file...
– Alexis Wilke
Nov 14 '15 at 06:29
.ssh (u=rwx,g=,o=) and its children (u=rw,g=r,o=r) or it will refuse to use the entire config for that user. This does not test that.
– detly
Sep 13 '20 at 23:35
sudo -u <user> test -r <file-to-test>; echo $?
The echo $? part will output the exit status from the test.
Just remember here that the output will be 0 if the operation was successful! Or non-zero, e.g. 1, if not.
Like @Thomas's comment on @user72025's answer, use man test to get more operation tests, like test -x to test executability, test -w for writability, etc.
I've found you can use su -s <shellname> <username> to enter a specific shell as a specific user. You can then test file permissions as usual.
E.g.:
su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
man testfor more details – Thomas BDX Jul 01 '14 at 18:18