Как создать пользователя linux с автоматическим истечением срока действия после периода исправления

Решением для вас было бы просто использовать gnomesuвместо sudo. Как написано здесь,

это обычная проблема безопасности. У вас есть многопользовательская система, в которой многие пользователи могут войти в систему, локально или удаленно, в сеансе графического интерфейса. Что, если другие вошедшие в систему люди смогут открывать окна на вашем рабочем столе без вашего разрешения? По крайней мере, неудобно, но также можно было бы создать окно, в котором можно было бы прочитать все, что вы печатаете на клавиатуре, включая ваши банковские счета. Таким образом, необходимо учитывать xhost.

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

Попробуйте запустить xhost +localhostв своем терминале, а затем запустите снова судо. Это позволяет всем пользователям вашей системы (т.е. root) открывать окна на вашем экране. Обязательно используйте +localhost, а не просто +, поскольку более безопасно разрешать подключения только с локального хоста, чем с в любом месте.

Чтобы сделать это постоянным, отредактируйте файл ~/.xinitrc следующим образом:

Запустите gedit ~/.xinitrc

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

#!/bin/bash 
xhost +localhost &

Теперь сохраните файл, выйдите из системы и снова войдите в систему. Теперь все должно работать нормально с sudo.

1
13.04.2017, 15:36
2 ответа

Для параметра истечения срока в утилите useradd требуется дата, указанная в формате ГГГГ-ММ-ДД .

Вы можете вычислить эту дату, используя параметр -d для команды date . Используя пример вашего 5-месячного сценария:

$ date +"%Y-%m-%d"
2017-04-08
$ date -d "5 months" +"%Y-%m-%d"
2017-09-08
0
28.01.2020, 00:57

Ключ -e в useradd ожидает дату в международном формате даты ( YYYY-MM-DD ), как можно найти на его странице руководства. :

   -e, --expiredate EXPIRE_DATE
       The date on which the user account will be disabled. The date is
       specified in the format YYYY-MM-DD.
       [...]

Теперь вам просто нужно указать дату истечения срока действия учетной записи. Вы можете сделать этот расчет в PHP. Ответ, на который вы связались, делает это с помощью стандартного инструмента командной строки, поэтому язык высокого уровня использовать не нужно.

Вот пример кода, как это сделать в PHP:

$diffHour = 0;
$diffMinute = 0;
$diffSecond = 0;
$diffMonth = 10;
$diffDay = 0;
$diffYear = 0;

$hour = date("H") + $diffHour;
$minute = date("i") + $diffMinute;
$second = date("s") + $diffSecond;
$month = date("n") + $diffMonth;
$day = date("j") + $diffDay;
$year = date("Y") + $diffYear;

$time = mktime($hour, $minute, $second, $month, $day, $year);

$date = date("Y-m-d", $time);

Просто введите переменные в самый верхний блок. Я заполнил их для вашего примера за 10 месяцев. Вы тоже можете вернуться в прошлое. Например, если вы хотите, чтобы срок его действия истек через 7 месяцев минус 4 дня, вы можете установить $ diffMonth = 7; и $ diffDay = -4; .

Затем передайте значение даты ( 2018-02-09 при запуске сегодня (за исключением случаев, когда вы живете в Америке, тогда это день раньше, потому что мы все еще используем отложенную систему времени с часовыми поясами. )) в ваш сценарий bash.

Пример bash-кода:

useradd -e "2018-02-09" "rizal"
0
28.01.2020, 00:57

Теги

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