Удалить символ из столбца CSV

Если sudo vi /etc/hostsвыполнено успешно, это означает, что системный администратор разрешил пользователю запускать vi /etc/hostsот имени root.В этом весь смысл sudo :, который позволяет системному администратору разрешать определенным пользователям выполнять определенные команды с дополнительными привилегиями.

Предоставление пользователю разрешения на запуск viдает ему право запускать любую команду vi, включая :shдля запуска оболочки и :wдля перезаписи любого файла в системе. Правило, позволяющее запускать только vi /etc/hosts, не имеет смысла, поскольку позволяет пользователю запускать произвольные команды.

Никакого «взлома» здесь нет. Нарушение безопасности происходит из-за неправильной конфигурации, а не из-за дыры в модели безопасности. Sudo особо не пытается предотвратить неправильную настройку. Хорошо известно -, что его документация сложна для понимания; если сомневаетесь, поспрашивайте и не пытайтесь делать слишком сложные вещи.

Как правило, сложно дать пользователю определенную привилегию, не дав ему больше, чем предполагалось. Бульдозерный подход, такой как предоставление им права запускать интерактивную программу, такую ​​как vi, обречен на провал. Общий совет — предоставить минимальные привилегии, необходимые для выполнения задачи. Если вы хотите разрешить пользователю изменять один файл, не давайте ему разрешение на запуск редактора. Вместо этого либо:

  • Дайте им разрешение на запись в файл. Это самый простой метод с наименьшим риском сделать что-то, чего вы не планировали.

    setfacl u:bob:rw /etc/hosts
    
  • Дайте им разрешение на редактирование файла через sudo. Для этого не давайте им разрешение на запуск редактора. Как объясняется в документации sudo, дайте им разрешение на запуск sudoedit, который вызывает редактор от имени исходного пользователя , а затем использует дополнительные привилегии только для изменения файла.

    bob ALL = sudoedit /etc/hosts
    

    Метод sudo более сложен в настройке и менее прозрачен для пользователя, поскольку ему приходится вызывать sudoeditвместо того, чтобы просто открывать файл в своем редакторе, но его преимущество заключается в том, что все обращения регистрируются.

Обратите внимание, что разрешение пользователю редактировать /etc/hostsможет повлиять на вашу инфраструктуру безопасности :Если есть какое-либо место, где вы полагаетесь на имя хоста, соответствующее конкретной машине, тогда этот пользователь сможет указать это на другую машину. Учтите, что в этом, вероятно, нет необходимости .

0
20.09.2017, 14:28
2 ответа

Это легко сделать с помощью sed:

sed 's/,//3' file

Попробуйте онлайн!

Если вы хотите напрямую применить изменения во входном файле, запустите:

sed -i 's/,//3' file
5
28.01.2020, 02:16

С помощью awk:

awk -F, '{print $1,$2,$3$4}' OFS=',' file

Выход:

random,test123,MyCompany Inc.
hello,12345,TestCompany LLC
0
28.01.2020, 02:16

Теги

Похожие вопросы