Ця відповідь все-таки повинна вам допомогти, навіть враховуючи зміни до питання. Зокрема, для облікового запису, створеного за допомогою
--disabled-loginпароля, не встановлено жодного іншого способу входу , але він все одно повинен бути можливим використовувати sudo(пояснено нижче) для запуску команд або оболонки як користувача. Це, власне, те, як
rootналаштовано обліковий запис в Ubuntu.
З командою є кілька проблем su - irssi.
Ця команда намагається запустити оболонку, що належить користувачеві на ім'яirssi .
Він не вдасться, якщо:
irssiКористувача немає .
- Обліковий
irssiзапис користувача вимкнено.
- Обліковий
irssiзапис користувача вимкнено для інтерактивного входу. Іноді в обліковому записі дозволено використовувати такі сервіси, як FTP, але забороняється нормально входити в систему, встановлюючи оболонку на те, що негайно закривається, наприклад /bin/false. Тоді логін негайно закінчується, без повідомлення.
- Введений вами пароль не є правильним для
irssiкористувача.
-Прапор робить його таким чином , оболонка імітує початковий оболонку входу в систему - тобто, так що це дійсно дуже схоже на лісозаготівлі , як irssi. Без -прапора, якщо suкоманда вдалася, ви все одно отримаєте оболонку, якою володіє irssi, але змінні середовища на зразок HOMEбули б незмінними.
Якщо ви натомість хочете запустити програму, яку називають irssi , ви повинні викликати suінше:
su username - -c irssi
Якщо ви залишитесь , це те саме, що - це спроба запустити команду як root.-c username-c root
Ви також можете запустити оболонку, а потім виконати команду :
- Почніть оболонку з .
su username -
- У оболонці запустіть команду (
irssi).
- Якщо ви закінчите, залиште оболонку, запустивши
exit.
Запуск команд як root
Якщо ви хочете запустити irssiяк root, suце не спосіб зробити це. Кореневі входи в режимі Ubuntu відключені за замовчуванням, і лише рідко є якісь причини повторно їх вмикати . Якщо ви ввімкнули rootвхід, тоді ви повинні мати можливість користуватися, suщоб стати root. Причина, через яку не потрібно вмикати rootобліковий запис, полягає в тому, що ви все одно можете запускати команди, як rootі ні sudo.
Коли ви запускаєте команди sudo, ви вводите свій пароль, а не пароль користувача, під особою якого ви бажаєте виконувати команду. Тільки адміністратори можуть виконувати довільні команди, як rootі sudo(якщо, звичайно, не переконфігурувати, sudoщоб дозволити іншим це робити) Таким чином, користувачеві, якому не дозволяється адмініструвати систему, заборонено виконувати команди, як rootзі своїм паролем.
Для запуску irssiяк rootз sudo:
sudo irssi
І ви введете свій пароль, коли буде запропоновано, а не root.
Окрім пароля, який ви вводите, це робить те саме, що:
su -c irssi
За винятком sudoверсії може бути успішною, оскільки вона не вимагає rootввімкнення облікового запису.
Як і у випадку su, ви можете використовувати командиsudo для запуску команд як інший, не rootкористувач . Для запуску irssiяк usernameз sudo:
sudo -u username irssi
Якщо ви хочете , sudo щоб вести себе як su -по відношенню доHOME --that, ви хочете використовувати цільового користувача HOMEзмінні оточення, ви можете запустити sudoз -Hпрапором:
sudo -H irssi
sudo -H -u username irssi
Можна запустити цілу оболонку з sudo, як можна su. За винятком того, чий пароль ви ввели, ця команда має такий же ефект, як і su:
sudo -s
І ця команда має той же ефект, що і su -:
sudo -i
( iСтенди для початкової оболонки для входу .)
Ви можете запустити оболонку і як інший користувач:
sudo -u username -s
sudo -u username -i
Подальше читання далі sudo
Щоб дізнатися більше проsudo це, подивіться на:
Чому gksuпрацювали, коли suне ставали?
gksuнапевно, працював бігомsudo .
gksuє інтерфейсом для обох su та sudo. У Ubuntu він за замовчуванням використовує sudo(оскільки в Ubuntu, suяк правило, не використовується для становлення root, і є лише вторинним способом стати іншими, не- rootкористувачами).
Ви можете gksuскористатися suяк фронтальний запуск, запустивши gksu --su-mode.
Ви можете дізнатися, чи gksuперебуває в suрежимі чиsudo режимі, та (за бажанням) змінити це налаштування, запустивши gksu-properties. Це налаштування для кожного користувача.
Коли gksuв sudoрежимі, він поводиться так само, якgksudo .
Подальше читання далі gksu
Аналіз після рішення
Зрештою, ви виявили, що вам вдалося виконати необхідну команду за допомогою:
sudo -u username irssi
(Що з перерахованих вище методів.)
Зрештою, ви повідомили про дві інформації, які є достатніми, щоб пояснити, чому саме такі методи не вдалися, але це вдалося:
Обліковий usernameзапис був створений з --disabled-loginпрапором, завдяки чому у нього немає пароля (і жодних інших способів входу в систему). Відсутність пароля не означає, що можна ввійти з порожнім паролем . Це означає, що ніякого паролю недостатньо для автентифікації. У поєднанні з усуненням інших засобів аутентифікації це означаєusername взагалі не може бути автентифікованим.
Отже, suрішення, що базуються на всіх , виходять. sudoможе працювати, хоча, оскільки sudoви не автентифікуєте себе як користувача, якому ви збираєтесь себе представити. Натомість ви повинні мати авторизацію себе за себе, і ви засвідчуєте автентифікацію як себе (тобто вводите власний пароль, а не їхній).
В обліковому записі можна встановити пароль, який видаляє цей бар'єр для входу:
sudo passwd username
Однак може бути вагомою причиною, коли користувачеві не дозволяється входити в систему. Наприклад, якби цьому користувачеві було дозволено входити в систему та входити в нього графічно, шкідливі проблеми виникнуть із оточення користувача або привілеї погано підходять для запуску програм X11 ? Якби цей користувач міг увійти в систему, чи дозволить це ввійти віддалено як цей користувач (для машин, де ви виявили мережеві послуги)?
Якщо ви хочете знову відключити його:
sudo passwd -dl username
Пов'язане: повторне вимкнення rootоблікового запису після тимчасового його ввімкнення.
Обліковий usernameзапис має /bin/falseсвою оболонку для входу.
Коли оболонка на зразок bashпрацює як ваша оболонка для входу, вона налаштовує ваше середовище і надає вам інтерактивний підказку, за допомогою якої можна керувати машиною.
Коли /bin/falseпрацює, з іншого боку, вона не робить нічого , і повідомляє збій . ( /bin/trueнічого не робить і повідомляє про успіх.)
Команди falseта trueкоманди корисні для створення сценаріїв та для різних тестових цілей, а також для відключення облікового запису, щоб, коли хтось увійшов у систему, їх сеанс входу відразу закінчувався. Таким чином, можна ввімкнути пароль (або інші засоби аутентифікації), і люди можуть увійти, лише не для доступу до оболонки . Наприклад, якщо є FTP-сервер, вони все ще можуть отримати доступ до свого акаунта через FTP. Якщо є SSH-сервер, вони не зможуть отримати оболонку через SSH, але вони все ще можуть використовувати sftpіscp передавати файли.
Так як usernameЛогін «S оболонка була нефункціональної, команди типу , , , іsu usernamesu - usernamesudo -u username -ssudo -u username -i не міг працювати.
Але команди, які не дають оболонки, як-от абоsudo -u username commandsu username -c 'command' все ще можуть працювати.
Оскільки команди можуть бути запущені, ви можете змінити оболонку входу користувача на щось функціональне:
sudo chsh -s /bin/bash username
Однак це слід також робити обережно, оскільки може бути вагомий привід відключити інтерактивні входи для користувача.
Тут usernameобидва мали відключений пароль та "вимкнено" оболонку. Відсутність будь-якого робочого пароля заважала всім suбазам рішень працювати, тоді як відсутність робочої інтерактивної оболонки входу заважала працювати всім рішенням нерестування оболонок (крім ручного виклику оболонки, як ).sudo -u username bash
sudo -u username command це те, що залишилося.