如何禁用在Linux中已停用90天的帐户?

如何禁用在Linux中已停用90天的帐户?

问题描述:

使用脚本禁用90天内不活动的帐户。无法真正找到研究我的问题了几天后一个答案,但我做了一个论坛,发现这个命令:如何禁用在Linux中已停用90天的帐户?

lastlog -t 10000 > temp1; lastlog -t 90 > temp2; diff temp1 temp2; rm temp1; rm temp2 

此命令输出处于非活动状态90天的用户。我认为,解决我的问题将是:

  1. 筛选该命令将显示所以只有在用户名的输出(在列表中,每行1名)。

  2. 取出此输出并将其写入文本文件。

  3. 为文件中的每一行运行一个for循环,该行的内容(应该只是一个用户名)存储在名为“inactiveUser”的变量中。然后执行命令usermod -L -L inactiveUser

我的建议解决方案是否可行?如果是这样,那怎么能实现呢?是否有更简单的方法来锁定我不知道的非活动帐户?

你可以简化这个:

lastlog -b 90 

直接列出谁没有在过去90天内曾登录的用户。

但是,它也有一个标题行,并列出大量系统用户。

使用tail跳过标题行:

lastlog -b 90 | tail -n+2 

那么你可以使用grep过滤掉系统用户:

lastlog -b 90 | tail -n+2 | grep -v 'Never log' 

虽然也许有找到真正的,非一个更安全的方式系统用户,例如:

cd /home; find * -maxdepth 0 -type d 

除了问题,你可以得到只是用户名不与awk

lastlog -b 90 | tail -n+2 | grep -v 'Never log' | awk '{print $1}' 

那么无论输出列表保存到文件,或者直接通过while read环或xargs运行usermod

lastlog -b 90 | tail -n+2 | grep -v 'Never log' | awk '{print $1}' | 
    xargs -I{} usermod -L {} 

或许你也应该登录你做了什么:

lastlog -b 90 | tail -n+2 | grep -v 'Never log' | awk '{print $1}' | 
    tee -a ~/usermod-L.log | xargs -I{} usermod -L {} 
+1

这很好用!将输出重定向到文本文件并运行while循环以禁用所有用户。谢谢! – Gabbo

+0

不客气:) – webb

虽然其他答案的作品,它可以使得更清洁通过使用awk代替tail | grep | awk

lastlog -b 90 | awk '!/Never log/ {if (NR > 1) print $1}' | xargs -I{} usermod -L {} 

对于不具有表情纹的awk命令checkes在它(!/Never log/)“从不记录”。

NR > 1模拟tail -n +2

print $1打印的第一列。