Эта проблема находится в актуальных 12.04 и, кажется, недавно запустилась.
Мне установили мой .bash_history файл на только для чтения. В последнее время я заметил, что несмотря на это файл изменяется! Вот сценарий. В новом терминале вот хвост файла:
$ tail -5 .bash_history
mkdir -p ttt ; gs -dNOPAUSE -sDEVICE=png16m -r180 -sOutputFile=ttt/p%03d.png *.pdf
rsync -av /home/u1204 /media/SEAGATE/u1204
gnote.late.reminders|GREP_COLOR='1;32' egrep -i "is overdue"
pvr_iplayer -x -HD /home/u1204/Documents/pvr/tv-hd ; pvr_iplayer -x -STD /home/u1204/Documents/pvr/tv-std
exit
откройте оболочку с повышенными полномочиями
$ sudo bash [sudo]
password for u1204:
# ls -l ~/.bash_history
-r-------- 1 u1204 u1204 1266 Feb 23 19:52 /home/u1204/.bash_history
таким образом, .bash_history все еще определенно только для чтения. Сделайте что-то, затем выйдите из наращиваемой оболочки:
# echo "written to history file"
written to history file
# exit
exit
И Voilà, файл истории был изменен!
$ ls -l ~/.bash_history
-r-------- 1 u1204 u1204 1324 Feb 23 20:10 /home/u1204/.bash_history
Откройте другой терминал для подтверждения:
$ tail -5 .bash_history
pvr_iplayer -x -HD /home/u1204/Documents/pvr/tv-hd ; pvr_iplayer -x -STD /home/u1204/Documents/pvr/tv-std
exit
ls -l ~/.bash_history
echo "written to history file"
exit
Я вполне уверен, который это не сделало используемый, чтобы сделать это (в 10,04, по крайней мере).
Так или иначе это не может быть корректным поведением, не так ли?
Корень имеет универсальное чтение-запись ко всему. Период.
Сторонникам окон нравится утверждать, что его система аутентификации более сильна, потому что она не сделала, чтобы "бог" считал, и даже локальным администраторам можно явно отказать.
Вы не можете запретить корень никакого доступа ни к какой вещи в локальной системе.
После некоторых комментариев это получило меня думающий Вас, мог бы искать способ не записать для избиения истории вообще. Вы могли сделать это как это: http://www.commandlinefu.com/commands/view/7041/dont-save-commands-in-bash-history-only-for-current-session
Помещение сбросило HISTFILE в Вашем bashrc для тех, которые не хотят переходить по ссылке.
Да, Вы можете ultimatively запрещать доступа.
chattr +i
@Thor
Я вполне уверен, который это не сделало используемый, чтобы сделать это (в 10,04, по крайней мере).
Это на самом деле делает.
То, что я думаю, происходит, то, если Вы используете sudo
, Вы все еще добираетесь для хранения идентификационных данных, но со снятыми полномочиями, если Вы использовали sudo su -
с другой стороны, Вы стали бы "реальным корнем". следовательно различие.
RO - ничто, что программа не может переопределить, пока Вы - корень или владелец файла. Таким образом, корректный путь не состоит в том, чтобы установить файл на r - но выполниться
сброс HISTFILE
Для "sudo-s" это должно работать (среда копируется, точно причина, почему .bash_history Вашего пользователя используется), для "sudo-i" (как "su -") Вы используете/root/.bash_history так или иначе. Если Вы не хотите делать это, необходимо сбросить HISTFILE в .bashrc/.bash_profile корня.
btw: как уже упомянуто корректным способом получить корневую оболочку является sudo-s / sudo-i. "sudo su" или "sudo колотят" работы, но это - довольно грязный способ сделать так.