Як я можу запобігти доступу користувачів до будь-якого, крім власного домашнього каталогу?


22

Як я можу запобігти доступу користувачів до будь-якого, крім власного домашнього каталогу?

Наприклад, у мене встановлений розділ NTFS /media/ntfs, тому, якщо користувач увійде через ssh, він може дійти до цього розділу. Як я можу відключити користувачів на cdвихід із домашнього каталогу?

Відповіді:


22

Спочатку оцініть свою вимогу. Яку проблему ви намагаєтеся вирішити? Чому ви хочете не дозволяти користувачам залишати свій домашній каталог? Хіба це не те, що ви не хочете, щоб вони перебирали певні інші каталоги - наприклад, домашні каталоги інших користувачів?

Дуже важко не допустити, щоб користувачі залишали свій домашній каталог. Насправді це теж трохи нерозумно (пояснення випливає). Набагато простіше запобігти входу користувачів у каталоги, у які ви не хочете, щоб вони входили.

По-перше, так, ви можете надати користувачам так звану оболонку з обмеженим доступом , див man rbash. Це не дозволить їм в cdіншому місці, але тільки всередині цієї оболонки. Якщо користувач запустить viабо nano(або будь-яка інша програма, здатна відкрити файл), він може знову відкрити файли в будь-якій точці системи. Власне кажучи, обмежена оболонка не перешкоджає, наприклад cat /etc/passwd.

Наступний крок - коренева в'язниця. Більше інформації про вікі спільноти та в цьому питанні . Хоча коренева в'язниця заблокує користувачів всередині огородженого саду, всередині якого вони мають доступ ні до чого, крім файлів та команд, які ви навмисно поміщаєте туди, кореневі в'язниці дійсно призначені для ізоляції непідданого програмного забезпечення, а не користувачів. Зокрема, вони призначені для програмного забезпечення, яке має працювати з підвищеними привілеями - отже, коренева в'язниця.

Користувачам, з іншого боку, довіряють : їм довелося пройти автентифікацію та працювати без підвищених привілеїв. Тому дозволів на файли достатньо, щоб вони не могли змінювати файли, якими вони не володіють, і не бачити речей, які вони не повинні бачити. Щоб користувачі не могли читати вміст файлу, видаліть його з легкою читанністю chmod o-r FILE. Щоб користувачів не було в каталозі, зробіть його недоступним для світу chmod o-rwx DIR.

Всесвітня читаність - це за замовчуванням, хоча з поважних причин: користувачам фактично потрібна більшість матеріалів, що знаходяться у файловій системі. Не замикайте користувачів у своїх будинках лише тому, що зовні існують секрети.

Чому заблокувати користувачів у домашньому довіднику трохи нерозумно

Щоб зробити що-небудь корисне, користувачам потрібен доступ до команд та програм. Вони знаходяться в таких каталогах, як, /binі /usr/binтому, якщо ви не скопіюєте всі необхідні їм команди звідти в свої домашні каталоги, користувачам буде потрібен доступ до /binта /usr/bin. Але це лише початок. Програми потребують бібліотеки з /usr/libта /lib, які, у свою чергу, потребують доступу до системних ресурсів, що знаходяться /dev, та до файлів конфігурації в /etcта /usr/share.

Це була лише частина лише для читання. Програми також хочуть /tmpі часто /varпишуть у них. Отже, якщо ви хочете обмежити користувача в його домашньому каталозі, вам доведеться багато копіювати в нього. Насправді, майже вся базова файлова система - у вас вже є /.


2
Для мене це не має сенсу, може бути так багато причин, чому ви хочете, щоб користувач мав доступ лише до 1 папки. Одним із прикладів може бути надання доступу заради передачі файлів з одного сервера на інший. Я вважаю за краще думати , що це трохи нерозумно , що будь-який користувач може переглядати повну систему замість цього.
Річард

У моєму випадку я налаштовую користувача, щоб дозволити пристроям повертати ssh в машину для віддаленого керування пристроями. Тож я хочу максимально обмежити цей обліковий запис користувача, лише на випадок, коли він поставлений під загрозу - мені просто потрібне успішне з'єднання. Я б не сказав, що це нерозумно, це просто залежить від того, що ви намагаєтеся досягти.
Іван

7

Мені потрібно було, щоб забезпечити доступ до користувача samна /var/xyzтільки і блок лістингу вмісту інших папок всередині/var/

Я використовував таку послідовність команд:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Таким чином, користувач може бачити каталоги, перелічені нижче, /var/але не може бачити вміст під підкаталогами, за винятком /var/xyz.


2
Ласкаво просимо в askubuntu! Я не вважаю це відповіддю на запитання про домашні каталоги.
Старійшина Гік

3
@ElderGeek Чи не може OP просто використовувати ті самі команди, але для домашнього каталогу?
Сет

@Seth Так, але чи це буде зрозуміло середньому користувачеві?
Старійшина Гік

3
@ Старший Так, я вважаю, що це буде. Не ідеально, але все ж відповідь
Сет

1

На додаток до обмеження доступу до інших каталогів, зокрема домашніх каталогів інших користувачів, я також не хотів, щоб користувач ll /homeпереглядав імена інших користувачів у системі.

Щоб запобігти цьому, виконайте запуск root chmod 701 /home. Це змушує сам /homeкаталог "читати / писати / виконувати", щоб виконувати корінь, але лише "виконувати" всі інші. /homeдосі доступний для користувачів cd, але користувачі не можуть читати його вміст - домашні папки інших користувачів і, отже, імена користувачів.


Це, хоча і не є суворою відповіддю на питання, все ж дуже цікаво ... У ситуації, коли ви керуєте віддаленим сервером, на який клієнти можуть вступити, це чудово. Вони все ще можуть пересуватися так, як вони очікували, зберігаючи конфіденційність імен користувачів інших клієнтів.
Jack_Hu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.