Как удалить файл/директорию с помощью терминала | PROUBUNTU

Как в Linux удалить пользовательский аккаунт вместе с домашней директорией

Оригинал: How to Delete User Accounts with Home Directory in Linux
Автор: Aaron Kili
Дата публикации: 4 декабря 2015 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2016 г.

Системному администратору Linux может потребоваться удалить пользовательский аккаунт, который долгое время не используется, или если пользователь покинул компанию, либо по каким-либо другим причинам.

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

1. Для демонстрационных целей сначала я создам два пользовательских аккаунта с домашними директориями в своей системе с помощью команды adduser — для пользователей tecmint и linuxsay

# adduser tecmint # passwd tecmint # adduser linuxsay # passwd linuxsay

Вместо команды adduser можно использовать команду useradd, они предназначены для одного и того же.

2. Теперь давайте посмотрим, как удалить аккаунт пользователя в Linux с помощью команд deluser (для Debian и его производных) и userdel (для систем на базе RedHat/CentOS)

Директивы в конфигурационном файле для команд deluser и userdel определяют, как они работают с пользовательскими файлами и директориями.

Давайте посмострим на конфигурационный файл для команды deluser, расположенный в /etc/deluser.conf для производных Debian, таких как Ubuntu, Kali, Mint; и расположенный в /etc/login.defs для RHEL/CentOS/Fedora.

Значения в этих файлах заданы по умолчанию и могут быть изменены в соответствии с вашими нуждами.

# vi /etc/deluser.conf [В Debian и его производных] # vi /etc/login.defs [В системах на базе RedHat/CentOS]

3.

Если пользователь авторизован на сервере, он пользуется различными службами и запускает разные процессы. Необходимо помнить, что полностью удалить пользователя можно только тогда, когда он не авторизован на сервере.

Блокирование пользовательского аккаунта в Linux

Сначала заблокируем пользовательский аккаунт, чтобы пользователь не имел доступа в систему. Это предотвратит запуск процессов в системе от его имени. Для этого используется команда passwd с ключом –lock:

# passwd —lock tecmint Locking password for user tecmint. passwd: Success

Поиск и завершение всех запущенных процессов пользователя

Далее необходимо найти все работающие процессы этого пользователя и завершить их, определив PID процессов, принадлежащих нашему пользователю:

# pgrep -u tecmint 1947 1959 2091 2094 2095 2168 2175 2179 2183 2188 2190 2202 2207 2212 2214

Затем вы можете вы можете вывести список процессов с более подробной информацией:

После того, как вы нашли все запущенные процессы пользователя, вы можете завершить их с помощью команды killall:

# killall -9 -u tecmint

-9 — это номер для сигнала SIGKILL, вместо него можно использовать ключ -KILL.

Замечание: в последних релизах RedHat/CentOS 7.x и Fedora 21+ вы можете получить следующую ошибку:

-bash: killall: command not found

Для ее предотвращения необходимо установить соответствующий пакет, как показано ниже:

# yum install psmisc [В RedHat/CentOS 7.x] # dnf install psmisc [В Fedora 21+ ]

Резервное копирование данных пользователя перед удалением

Далее вы можете сделать резервную копию пользовательских файлов, если нужно. Для создания архива с резервной копией домашней директории пользователя я использовал утилиту tar:

# tar jcvf /user-backups/tecmint-home-directory-backup.tar.bz2 /home/tecmint

Удаление аккаунта и файлов пользователя

Теперь вы можете безопасно удалить пользователя вместе с его домашней директорией. Для удаления всех файлов пользователя предназначена опция —remove-all-files:

# deluser —remove-home tecmint [On Debian and its derivatives] # userdel —remove tecmint [On RedHat/CentOS based systems]

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


Далее перечислены символы и синтаксические конструкции, имеющее особое значение в bash. Для ввода спецсимволов как они есть используют кавычки или спецсимвол \ отменяющий специальное значение следующего символа

\ Экранирование.

Отменяет специальное значение следующего символа
\\ Символ "\"

# Комментарий, не работает в кавычках и в некоторых подстановках переменных и преобразовании основания чисел
echo "Это #не комментарий"
echo 'Это # не комментарий’
echo Это \# не комментарий
echo Это # Вот комментарий.
echo ${PATH#*:} #Специальная переменная
echo $(( 2#101011 )) #Преобразование системы счисления в арифметической подстановке.

>, >> — перенаправление стандартного вывода программы в файл
< — перенаправление стандартного ввода программы из файла
<<TERM перенаправление стандартного ввода программы из текста текущего скрипта со следующей строки до строки, состоящей из слова TERM.
|- перенаправление стандартного вывода программы на стандартный ввод другой программы

; Разделитель команд в строке
echo hello; echo there

;; Разделитель альтернатив в операторе case
case "$VARiable" in
abc) echo "$VARiable = abc" ;;
xyz) echo "$VARiable = xyz" ;;
esac

.

Аналог команды source (#include в С++).

Выполняет скрипт в текущем интерпретаторе.
. myconf

".." Двойные кавычки, отменяют действие спецсимволов кроме $ `..` и \

'…' Апострофы, отменяют действие всех спецсимволов в том числе и \, по этому нельзя включить апостроф в строку ограниченную апострофами

: Нулевая команда, всегда возвращает нулевой код ответа. В сочетании с перенаправлением ">" создает файл, или обнуляет существующий. В сочетании с перенаправлением ">>" создает файл, или изменяет время модификации существующего
:> data.xxx # File “data.xxx” now empty.
(можно и без двоеточия)

Шаблоны в именах файлов. Если подходящие имена находятся, то они подставляются в командную строку как отдельные аргументы (возможно с пробелами внутри). Если имена не находятся, то шаблон остается как есть.

* Шаблон заменяющий любую последовательность символов
? Шаблон заменяющий ровно один символ
[xyz] Шаблон заменяющий один из перечисленных символов
{xxx,yyy,zzz,…} Подстановка одного из вариантов в шаблон. В скобках не должно быть неэкранированных пробелов
grep Linux file*.{txt,htm*} # Ищет слово “Linux” в файлах вида “fileA.txt”, “file2.txt”, “fileR.html”, “file-87.htm”, etc.

$ Подстановка значения переменной, арифметического выражения или стандартного вывода программы. Если значение содержит пробелы, то при подстановке оно разбивается на отдельные аргументы.
$A содержимое переменной A
$$ PID процесса
$? Код возврата из последней выполненной программы или функции, а также код возврата самого скрипта
$((2*2)) подстановка результата вычисления арифметического выражения
$(cmd) подстановка стандартного вывода программы
`…` тоже, что и $(…) – подстановка стандартного вывода программы

Пример: A=EE; echo $A $(echo QQ) $((7+5))
Результат: EE QQ 12
Ошибка: $A=ZZ
Результат: bash: EE=ZZ: command not found

(…) Группировка команд
(A=hello; echo $A)
Для выполнения группы в скобках запускается новый интерпретатор
A=123
(A=321)
echo A = $A # A = 123
# "A" внутри скобок – локальная переменная.

(…) Создание массива ( только в bash версии > 2)
Array=(element1 element2 element3)

[] Элемент массива ( только в bash версии > 2)
Array[1]=slot_1
echo ${Array[1]}

{1..10} — подстановка чисел от 1 до 10
{c..n} — подстановка символов от "c" до "n"

{…} Создание безымянной функции, удобно для перенаправления ввода/вывода нескольких команд в один файл. В отличие от настоящей функции видимости переменных не изменяется.
PACK=mysql
{
echo
echo "Archive Listing:"
rpm -qpl ${PACK} # Список фалов в пакете rpm
echo
rpm -i —test ${PACK} # Проверка, установлен ли пакет.
} > "${PACK}.txt" #И весь вывод в один файл.

[…] Встроенная функция test для вычисления логических выражений

((…)) Арифметическая подстановка, вычисляет арифметическое выражение в стиле языка Си внутри скобок

& — запуск программы в фоновом режиме
bash$ sleep 10 &
[1] 850
[1]+ Done sleep 10

Удаление файлов и каталогов. Тема –ОС Linux: Команды работы с файлами и каталогами: mkdir, cat, cp, mv, rm, rmdir, more

Лабораторная работа № 11

Тема –ОС Linux: Команды работы с файлами и каталогами: mkdir, cat, cp, mv, rm, rmdir, more.

Выполнение работы:

Создание новых каталогов

Для создания нового каталога используется команда mkdir (сокращение от make directory). В качестве аргумента этой команде надо дать имя создаваемого каталога. Во вновь созданном каталоге автоматически создаются две записи: .(ссылка на этот самый каталог) и .. (ссылка на родительский каталог).

Выполните следующие команды в каталоге /home/stud:

$ mkdir sua $ ls Вы создали новый каталог sua и убедились в этом.Перейдите в созданный каталог:$ cd suaи убедитесь в этом командой pwd.Убедитесь, что каталог sua пуст:/home/stud/sua$ ls –lПросмотрите ссылки в созданном каталоге:/home/stud/sua$ ls -f

Создание файлов

Команда catчасто используется для создания файлов.

По команде cat на стандартный вывод (т. е. на экран) выводится содержимое указанного файла (или нескольких файлов, если их имена последовательно задать в качестве аргументов команды). Если вывод команды cat перенаправить в файл, то можно получить копию какого-то файла:

$ cat file1 > file2

Собственно, первоначальное предназначение команды cat как раз и предполагало перенаправление вывода, так как эта команда создана для конкатенации, т. е. объединения нескольких файлов в один:

$ cat file1 file2 … fileN > new-file

Именно возможности перенаправления ввода и вывода этой команды и используются для создания новых файлов. Для этого на вход команды cat направляют данные со стандартного ввода (т. е. с клавиатуры), а вывод команды — в новый файл:

$ cat > newfile

После того, как вы напечатаете все, что хотите, нажмите комбинацию клавиш <Ctrl>+<D> или <Ctrl>+<C>, и все, что вы ввели, будет записано в newfile. Конечно, таким образом создаются, в основном, короткие текстовые файлы.

Чтобы просмотреть содержимое файла введите:

$ cat newfile

Для создания скрытых файлов ставьте точку (.) в начале имени файла. Например,

$ cat > .myhide.txt

Копирование файлов

Для копирования файлов используется команда ср (сокращение от copy).

$ cp [options] source_directory new_directory

Файлы, содержащиеся в каталоге source_directory копируются в каталог new_directory. Для копирования надо иметь права на чтение файлов, которые копируются, и права на запись в каталог, в который производится копирование.

Если в качестве целевого указывается существующий файл, то его содержимое будет затерто, поэтому при копировании надо соблюдать осторожность. Впрочем, можно использовать команду cp с опцией -i, тогда перед перезаписью существующего файла будет запрашиваться подтверждение.

-R или -r Если source — каталог, то копируется как он, так и все входящие в него подкаталоги, т. е. сохраняется исходная форма дерева каталогов
-f Перезаписывать файлы при копировании (если такие уже есть) без дополнительных предупреждений

Пример:

/home/stud/sua$ ср –r /usr/include . /home/stud/sua$ ср /usr/include/* .

В первом случае будет скопирован каталог include со всем содержимым, а во втором – все файлы данного каталога в файл или каталог, который указан последним аргументом. Обратите внимание, что для указания текущего каталога используется символ ..

Просмотрите содержимое каталога sua – убедитесь что произошло копирование.Скопируйте файлы newfile и .myhide.txt, созданные ранее в каталог include каталога sua: /home/stud/sua$ ср newfile .myhide.txt include/Убедитесь в этом командой:/home/stud/sua$ ls -f

 

Перемещение файлов

Если вам необходимо не скопировать, а переместить файл из одного каталога в другой, вы можете воспользоваться командой mv. Синтаксис этой команды аналогичен синтаксису команды cp. Более того, она сначала копирует файл (или каталог), а только потом удаляет исходный файл (каталог). И опции у нее такие же, как у cp.

Команда mv может использоваться не только для перемещения, но и для переименования файлов и каталогов (т. е. перемещения их внутри одного каталога). Для этого надо просто задать в качестве аргументов старое и новое имя файла:

$ mv oldname newname

Но учтите, что команда mv не позволяет переименовать сразу несколько файлов (используя шаблон имени), так что команда mv *.xxx *.yyy не будет работать.

Удаление файлов и каталогов

Для удаления ненужных файлов и каталогов в Linux служат команды rm (удаляет файлы) и rmdir (удаляет пустой каталог). Для того, чтобы воспользовался этими командами, вы должны иметь право записи в каталоге, в котором расположены удаляемые файлы или каталоги. При этом полномочия на изменение самих файлов не обязательны. Если хотите перед удалением файла получить дополнительный запрос на подтверждение операции, используйте опцию -i.

Если вы попытаетесь использовать команду rm (без всяких опций) для удаления каталога, то будет выдано сообщение, что это каталог, и удаления не произойдет.

Для удаления каталога надо удалить в нем все файлы, после чего удалить сам каталог с помощью команды rmdir. Однако можно удалить и непустой каталог со всеми входящими в него подкаталогами и файлами, если использовать команду rmс опцией -r.

Если вы дадите команду rm *, то удалите все файлы в текущем каталоге. Подкаталоги при этом не удалятся. Для удаления как файлов, так и подкаталогов текущего каталога надо тоже воспользоваться опцией -r.

Однако всегда помните, что в Linux нет команды восстановления файлов после их удаления (даже если вы спохватились сразу же после ошибочного удаления файла или каталога)!

Так что дважды подумайте до удаления чего-либо и не пренебрегайте опцией -i.



Дата добавления: 2016-09-03; просмотров: 105 | Нарушение авторских прав


Похожая информация:


Поиск на сайте:


Добавить комментарий

Закрыть меню