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)
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.
Sign up to join this communityIs 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> && ...
man test
for more details
Jul 1, 2014 at 18:18
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...
Nov 14, 2015 at 6: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.
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