批量建立使用者並使用sudo和ACL來控制使用者許可權

2021-09-20 23:59:03 字數 4674 閱讀 6927

最近公司應相關部門的監管要求加強了對使用者許可權的控制,為了積極響應國家的號召,公司賬號許可權設計管理的重任就落到我的肩上。花了兩三個小時,對批量建立使用者,普通使用者對除了使用者目錄之外的許可權管理、root許可權控制進行了設計,目前指令碼已經完全通過測試,在此和大家分享一下。現分別對每一部分**進行一下備註、解析。

批量建立使用者。

hostname=$(hostname)

account=`whoami`

password='ttkx1324'

user1='payer'

temp='/temp'

username=('tangchanggen' 'wuyaxiong' 'lihui' 'wangyifeng' 'yanglongjun' 'liyunfeng' 'xiaoyongan' 'ivandu') #需要新增的使用者

#以下內容,批量建立使用者。

adduser $user1 -g root #將使用者新增到root組裡

echo $passwd | passwd payer --stdin #從標準輸入流讀取密碼ttkx1324

passwd $user1 -x 90 -w 7 #密碼的生命週期為90天,到期前7天提示使用者修改密碼

passwd -e $user1 #chage -d0 payer #使用者首次登陸強制修改密碼

echo -e "\033[47;31m the account $user1 has been created! \033[0m"

for u in $;

doadduser $u

echo $password | passwd $u --stdin

passwd $u -x 90 -w 7

passwd -e $u

echo -e "\033[47;31m the account $u has been created! \033[0m"

sleep 2

done

在sudoer檔案內追加以下內容,看起來是不很凌亂?

echo -e  "runas_alias op = root\ncmnd_alias delegating = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp\ncmnd_alias storage = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount\ncmnd_alias services = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable\ncmnd_alias networking = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/ifconfig, /sbin/mii-tool\ncmnd_alias processes = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall\ncmnd_alias software = /bin/rpm, /usr/bin/up2date, /usr/bin/yum\ncmnd_alias locate = /usr/bin/updatedb\nuser_alias ordinary_develop = $,$,$,$,$\nuser_alias sudo_develop = $\nuser_alias networkmanager = $\nuser_alias devops = $,$\nordinary_develop       $hostname=(op)    nopasswd:/sbin/service\nsudo_develop           $hostname=(op)    nopasswd:services\nnetworkmanager         $hostname=(op)    nopasswd:networking\ndevops                 $hostname=(op)    nopasswd:services,software,storage,delegating,processes,networking,locate">>/etc/sudoers
其實列印出來是這樣的(這裡面的內容一般人仔細一看都能懂的,不解釋):

runas_alias op = root

cmnd_alias delegating = /usr/sbin/visudo, /bin/chown, /bin/chmod, /bin/chgrp

cmnd_alias storage = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount

cmnd_alias services = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable

cmnd_alias networking = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/ifconfig, /sbin/mii-tool

cmnd_alias processes = /bin/nice, /bin/kill, /usr/bin/kill, /usr/bin/killall

cmnd_alias software = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

cmnd_alias locate = /usr/bin/updatedb

user_alias ordinary_develop = tangchanggen,wuyaxiong,lihui,wangyifeng,yanglongjun

user_alias sudo_develop = wuyaxiong

user_alias networkmanager = liyunfeng

user_alias devops = xiaoyongan,ivandu

ordinary_develop usermanager=(op) nopasswd:/sbin/service

sudo_develop usermanager=(op) nopasswd:services

networkmanager usermanager=(op) nopasswd:networking

devops usermanager=(op) nopasswd:services,software,storage,delegating,processes,networking,locate

以下這一段**主要用於acl許可權設定。

then

fiif [ -d $temp ] ; then

setfacl -m u:$:rwx -r $temp

elif [ ! -d $temp ] ; #不存在目錄temp則進行建立

then

mkdir "$temp"

setfacl -m u:$:rwx -r $temp

fifor acl_account in $ $ $ $ $;

do setfacl -m u:$:rwx -r /opt

done

批量刪除使用者指令碼:

#!/bin/bash

user1='payer'

username=('tangchanggen' 'wuyaxiong' 'lihui' 'wangyifeng' 'yanglongjun' 'liyunfeng' 'xiaoyongan' 'ivandu')

echo -e "\033[41;34m these account were deleting now! please wait! \033[0m"

userdel -r $user1

echo -e "\033[47;31m the account $user1 had been deleted! \033[0m"

for u in $;

douserdel -r $u

echo -e "\033[47;31m the account $u had been deleted! \033[0m"

done

完畢!最後我發現乙個問題,/etc/sudoers這個檔案是沒有寫入許可權的,但是可以通過》追加內容,你知道是怎麼回事嗎?麻煩告訴我一下。完整**參見我的github: ,批量刪除使用者指令碼:

linux建立使用者並設定sudo許可權

refer1 然後設定密碼 passwd 使用者名稱 刪除使用者 userdel r 使用者名稱 在root許可權下,useradd只是建立了乙個使用者名稱,如 useradd 使用者名稱 它並沒有在 home目錄下建立同名資料夾,也沒有建立密碼,因此利用這個使用者登入系統,是登入不了的,為了避免這...

批量建立使用者並設定密碼

先把需要建立的使用者名稱寫入乙個文字,我這邊用的是user.txt bin bash date user file user.txt 先定義一下那個寫好使用者名稱的檔案 for user in user list do 使用for語句定義一下剛剛那個定義 if id user dev null th...

使用for語句批量建立使用者

1 使用for語句批量新增與刪除特定使用者 for語句的操作物件為使用者指定名稱的變數,並通過in關鍵字為該變數預先設定了乙個取值列表,多個取值之間以空格進行分隔。為於do.done之間的命令序列稱為迴圈體。新增使用者 root localhost vim list.txt 準備乙個使用者名稱列表檔...