最近公司應相關部門的監管要求加強了對使用者許可權的控制,為了積極響應國家的號召,公司賬號許可權設計管理的重任就落到我的肩上。花了兩三個小時,對批量建立使用者,普通使用者對除了使用者目錄之外的許可權管理、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 準備乙個使用者名稱列表檔...