linux Владельцы (пользователи и группы) папок и файлов — как их узнать, менять и понять в терминале (консоли, рекурсивная смена)
В Linux у ресурса (файла или папки) есть как бы два «владельца»:
Т.е. файлом может владеть (и всегда владеет какой-то) пользователь user1 и какая-то группа group22, при этом нужно понимать пользователь user1 в общем случае может и не состоять в группе group22.
Как узнать владельца файла или папки
Используйте команду ls c флагами -la, перейдете в папку с содержимым, для которого вы хотите узнать владельцев:
ответом может быть что-то вроде:
total 8 drwxrwxr-x 2 qwer qwer 4096 июн 2 19:23 . drwxrwxr-x 6 qwer qwer 4096 июн 2 19:15 .. -rw-rw-r-- 1 qwer games 0 июн 2 19:16 myfile1 -rw-rw-r-- 1 qwer qwer 0 июн 2 19:23 myfile2
- myfile1 имеет владельцев: юзера qwer и группу games
- myfile2 имеет владельцев: юзера qwer и группу с тами же именем
Также можно указать путь к файлу, чтобы узнать его владельца:
-rw-rw-r-- 1 qwer games 0 июн 2 19:16 myfile1
Как сменить владельца
Сменить владельца можно с помощью команды chown, причем её формат такой:
chown [парараметры] имяпользователя:имягруппы путькресурсу
Например смена владельца-пользователя файла на user2:
Смена владеющей группы с текущей на games:
Можно и одной командой сменить и владеющего пользователя и владеющую группу на указанные:
Т.е. имя пользователя от имени группы, если они идут рядом отделяется в данном случае двоеточием.
ПРИМЕЧАНИЕ: есть ограничения логичные на смену владельцев, а именно:
- 1) чтобы сменить владельца-пользователя на другого надо выполнять chown под суперпользователем (для этого служит команда sudo).
- 2) чтобы сменить группу-владельца, надо, чтобы пользователь состоял и в текущей группе и в той, на которую надо сменить (т.е. в обеих), в противном случае опять же потребуются права суперпользователя.
Рекурсивная смена владельцев для всего содержимого папки
Делаем пользователя training владельцем для всего содержимого папки /usr/lib/hadoop-0.20-mapreduce/input такой комадой:
sudo chown -R training /usr/lib/hadoop-0.20-mapreduce/input
sudo chown -R training /usr/lib/hadoop
— как показывает практика флаг -R можно писать и имени пользователя и/или группы)