Спочатку оцініть свою вимогу. Яку проблему ви намагаєтеся вирішити? Чому ви хочете не дозволяти користувачам залишати свій домашній каталог? Хіба це не те, що ви не хочете, щоб вони перебирали певні інші каталоги - наприклад, домашні каталоги інших користувачів?
Дуже важко не допустити, щоб користувачі залишали свій домашній каталог. Насправді це теж трохи нерозумно (пояснення випливає). Набагато простіше запобігти входу користувачів у каталоги, у які ви не хочете, щоб вони входили.
По-перше, так, ви можете надати користувачам так звану оболонку з обмеженим доступом , див 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
пишуть у них. Отже, якщо ви хочете обмежити користувача в його домашньому каталозі, вам доведеться багато копіювати в нього. Насправді, майже вся базова файлова система - у вас вже є /
.