Ubuntu Server Samba Разрешения лучшие практики
У меня возникли некоторые проблемы с доступом к моему Ubuntu Server 14.04 через Samba. Я пытаюсь получить доступ с моего рабочего стола Ubuntu Gnome 14.04 и других рабочих столов Linux. Я хотел бы иметь точный контроль доступа на сервере, где некоторые пользователи могут читать и писать в общие ресурсы, а другие пользователи могут только читать, но не записывать / удалять файлы. Я не уверен, что делаю это правильно, но я понимаю, что обычно есть много способов сделать что-то в Linux. Я создал папки через командную строку и использую Samba через Webmin, чтобы поделиться ими.
Я полагаю, что ACL на уровне файлов - вот где моя текущая проблема. Например, у меня есть две папки на сервере, одна из которых я могу читать и писать, а другая - не могу писать, но могу читать.
Getfacl перечисляет их свойства следующим образом:
john @ Server: ~ $ getfacl / exports / Stuff
getfacl: удаление начальных символов '/' из имен абсолютных путей
файл: экспорт / материал
владелец: root
группа: корень
Пользователь:: RWX
группа:: гх
другое:: ого
по умолчанию: пользователь:: RWX
по умолчанию: пользователь: джон:rw-
по умолчанию: пользователь: жена:rw-
По умолчанию: Пользователь: дочь:rw-
по умолчанию: группа:: гм
по умолчанию: Группа: Пользователи:r--
по умолчанию: маска:: RWX
по умолчанию: другие:: гх
Джон @ Сервер: ~ $ getfacl / exports / Photos
getfacl: удаление начальных символов '/' из имен абсолютных путей
файл: экспорт / Фотографии
владелец: джон
группа: корень
Пользователь:: RWX
группа:: гх
другое:: ого
по умолчанию: пользователь:: RWX
по умолчанию: пользователь: джон:rw-
по умолчанию: пользователь: жена:rw-
по умолчанию: группа:: гм
по умолчанию: Группа: Пользователи:r--
по умолчанию: маска:: RWX
по умолчанию: другие:: гх
Теперь я вижу, что я владелец Photos, а root - владелец папки Stuff, которая, кажется, самая большая разница между ними.
Другой пользователь в сети, также использующий Ubuntu Gnome, может получить доступ к папке "Фото", но не может писать, это поведение, которое я хотел, и я предполагаю, что Samba контролирует это, поскольку она не указана в ACL, но включена в список безопасности Samba.
Будет ли лучший подход, чтобы удалить ACL файловой системы с помощью setfacl, а затем просто использовать samba для контроля доступа пользователей, или я должен установить их оба совпадения?
Я иду об этом в правильном направлении? Как лучше всего справляться с чем-то подобным? Все клиенты в Linux, так что если у вас есть общие ресурсы, которые некоторые будут просматривать и никогда не писать, а другие будут читать и писать, как вы будете контролировать доступ?
1 ответ
Webmin устарел, имеет проблемы с безопасностью и не должен использоваться.
У меня была такая же проблема 14.04. Многие люди ответили на мой вопрос и сказали, что Samba не так сильно облажалась с предыдущими версиями Ubuntu. Но эту функцию и псевдоним я добавляю в свой $HOME/.bashrc.
####################
# $1 is parameter for function
function fAdduser
{
if [ -z $1 ]; then
echo "ERROR: No user given.";
echo "Usage: cradduser USER";
echo "Sets permissions and groups for home dir of user.";
echo "Also sets up samba for user.";
echo " ";
return;
fi
# Add new user $1 and add to group 'users'.
# -m = make home dir
# -G GROUP = assign to group
sudo useradd -m -G users $1 || { echo "Error in useradd"; return 1; };
sudo usermod -p $1 $1;
echo "fAdduser: Their password is now the same as their username."
sudo passwd -u $1;
echo "fAdduser: Now enter their password.";
sudo passwd $1;
# Now add to samba users. This linux user uses this password for Samba.
# The user is the same, the Samba password is not.
# -a = add user
# -e = enable user
sudo smbpasswd -ae $1;
# Now change permissions for Samba on their home dir.
TDIR=/home/$1;
echo "Changing permissions and group on $TDIR files for Samba...";
sudo chmod a+rw $TDIR;
sudo chmod -R a+rw $TDIR/*;
sudo chgrp users $TDIR;
sudo chgrp -R users $TDIR/*;
echo "These are the users in group 'users'";
getent group users;
echo "Added user $1";
}
alias myadduser='fAdduser'
alias mysambareset='sudo restart smbd; sudo restart nmbd; sudo service smbd restart'
Отредактируйте и сохраните ваш.bashrc, затем сделайте это: source $HOME/.bashrc
чтобы изменения вступили в силу. Функция fAdduser добавляет нового пользователя и настраивает его для Samba. Просмотрите шаги здесь и посмотрите, все ли вы выполнили.
Чтобы настроить пользователя Samba, сделайте это: myadduser USERNAME
,
Если вы измените свой конфигурационный файл Samba, сохраните его и сделайте следующее: mysambareset
,
После долгих противоречивых советов и большого количества проб и ошибок это то, что работает для меня.