48

For example, for managing a disk partition for another system where the user exists. I know I can simply create a user temporarily but I find this question interesting.

glarry
  • 914
  • 1
  • 7
  • 16

2 Answers2

53

Yes, you can chown to a numerical UID that does not have a corresponding user.

DopeGhoti
  • 76,081
  • I tested before I asked: chown \#1005 file returns chown: invalid user: ‘#1005’. – glarry Jan 18 '18 at 22:39
  • 11
    Do not use an octothorpe; it is not a number. Just use the number, e. g. sudo chown 1005 /path/to/file. – DopeGhoti Jan 18 '18 at 22:40
  • According to this logic, sudo thinks it's a number. Furthermore, it thinks groups of digits that don't start with a number sign are not numbers. :) – glarry Jan 18 '18 at 22:54
  • 1
    I first tried chown 1005 file, by the way. It didn't work, for an unrelated reason, but I blamed it on the missing number sign. You have to at least use ./file, apparently for chown to be able to tell which of the two is the user. Just so you (reader) know. – glarry Jan 18 '18 at 23:14
  • 2
    @glarry I do not have to use ./. Is the file name really file? – Hauke Laging Jan 18 '18 at 23:28
  • @HaukeLaging No, and it was a very well hidden typo, if you ask me. The fact that I used tab completion after ./ made the difference. – glarry Jan 19 '18 at 07:47
35

chown UID:GID fileName can be done either with numbers or username or groupname

ex: chown 1000:1000 dirname is valid

you may have to reset the directory permission with chmod 755 for example after doing it to get access on it

Hints

  • You can check user id with id someUsername
  • You can check group id with gid someUsername
  • You can change permissions only on directories with find someLocation -type d -exec chown 1000:1000 {} \;
  • 1
    Using variables chown -R $HOST_USER_ID:$HOST_GROUP_ID /usr/bin/mariadb/install/data gives me an error chown: invalid spec: '1000:' sous Lubuntu 16/04` – Stephane Jan 17 '19 at 17:35
  • I could work around the issue by doing two distinct commands chown -R $HOST_USER_ID /usr/bin/mariadb/install/data; chgrp -R $HOST_GROUP_ID /usr/bin/mariadb/install/data; – Stephane Jan 17 '19 at 18:00
  • @Stephane your UID and GID must be the number of the group/id you want to change, and is setted into /etc/group and /etc/passwd or either by other system like ldap, you can refer to commands like gentent to have more infos about that. – Philippe Gachoud Jan 24 '19 at 15:13