Изменены параметры доступа к скрытым файлам /etc/skel, заблокированным в bash/sudo

Справочная информация: я сделал ошибку новичка на виртуальной машине Ubuntu 14.04 и рекурсивно изменил разрешения на /etc папка. Я восстанавливал их по умолчанию по 1 каталогу за раз, используя свежую виртуальную машину в качестве модели и просматривая соответствующие разрешения на apt-browse.org, когда файлы не существуют на виртуальной машине "модели". Когда я добрался до /etc/skel каталог, разрешения были 660 на .bash_logout, .bashrc, а также .profile, но согласно модели & apt-browse.org, они должны быть 644. После просмотра /etc/skelЯ побежал sudo chmod 644 .* а потом побежал ls -la,

С этого момента я больше не мог вызывать sudo и не мог выполнять какие-либо команды оболочки, включая просмотр, просмотр файлов и т. Д.

x@Y:/etc/sgml$ cd /etc/skel/ && ls -la
total 28
drwxr-xr-x   2 root root  4096 Oct 10  2014 .
drwxr-xr-x 129 root root 12288 Sep 12 15:39 ..
-rw-rw----   1 root root   220 Mar 18  2013 .bash_logout
-rw-rw----   1 root root  3637 Apr 23  2014 .bashrc
-rw-rw----   1 root root   675 Mar 28  2013 .profile
x@Y:/etc/skel$ sudo chmod 644 *
chmod: cannot access '*': No such file or directory
x@Y:/etc/skel$ sudo chmod 644 .*
x@Y:/etc/skel$ ls -la
ls: cannot open directory .: Permission denied
x@Y:/etc/skel$ sudo ls -la
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
x@Y:/etc/skel$ sudo su
sudo: unable to stat /etc/sudoers: Permission denied
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Оригинальный скриншот

Кроме того, веб-сайты на сервере теперь выдают ошибку 403: You don't have permission to access / on this server. Server unable to read htaccess file, denying access to be safe

У меня нет физического доступа к серверу, поэтому восстановление режима загрузки проблематично. Кроме того, почему это разрешение изменило вещи? Согласно документации, это было правильно.

1 ответ

Решение

Ты бежал

cd /etc/skel
sudo chmod 644 .*

.* найдете все .files (включая каталоги) в текущем рабочем каталоге и в текущем рабочем каталоге, а также в родительском каталоге. Вы применили режим 644 к этим:

.            <-- problem here as it's the working directory
..           <-- big problem here as it's the /etc directory
.bash_logout  
.bashrc  
.config      <-- problem here as it's a directory
.profile

Причина, по которой ничего не работало, заключалась в том, что вы удалили разрешение на выполнение в текущем рабочем каталоге. Это означает, что у вас не было разрешения быть там!

Каталоги должны иметь разрешение на выполнение для входа или поиска. Это своего рода крайний случай быть внутри каталога, когда из него удалено разрешение на выполнение, но в этой ситуации вы получите permission denied почти для каждой команды.

Вы можете cd вне каталога, но вы не сможете исправить разрешения без физического доступа, поскольку файл sudoers (в /etc) не может быть прочитано.

Вы также можете

  • загрузитесь в режиме восстановления, запустите корневую оболочку и смонтируйте файловую систему на чтение и запись, выполнив mount -o remount,rw /

  • загрузитесь в живую сессию и смонтируйте корневой раздел: sudo mount /dev/sdxY /mnt (заменить /dev/sdxY с правильным именем корневого раздела) тогда cd /mnt

Ты не делал chmod -R (к счастью!), так что вам нужно исправить только три вещи. В рекавери делаю (тоже самое но с sudo и без первого / на пути от /mnt в прямом эфире)

chmod 755 /etc
chmod 755 /etc/skel
chmod 755 /etc/skel/.config

восстановить правильные разрешения.

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