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,

После долгих противоречивых советов и большого количества проб и ошибок это то, что работает для меня.

Другие вопросы по тегам