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 test
for more details – Thomas BDX Jul 01 '14 at 18:18