權限:
- 所謂的權限是,由用戶啟動的行程,或者由作業系統啟動的行程,可以訪問哪些檔案,不可以訪問哪些檔案,
- 行程太多了,不可能為每個行程定義權限對吧,所以行程的權限來自于啟動行程的用戶,
- 用戶有哪些權限,則由此用戶啟動的行程就有哪些權限,
- 作業系統啟動后,會啟動很多后臺行程(daemon行程),這些行程有的是由管理員(root)身份啟動的,有的是由一般用戶身份啟動的,
- 有一種需求:不想以root身份啟動行程,若由root啟動的行程被黑客劫持,則黑客就擁有了root權限,
- 有一種需求:不想以root身份啟動行程,那么就創建一個普通用戶,這個普通用戶的作用只是啟動行程而已,不使用她手動登錄系統,這種普通用戶就叫【系統用戶】,手動登錄系統的普通用戶就叫【登錄用戶】
linux使用uid管理用戶;使用gid管理組,uid和gid是16bits的二進制數字,取值范圍從0-65535
一,用戶
用戶分類:
-
管理員(uid:0)
-
普通用戶(uid:1-65535)
- 系統用戶:1-499(CentOS6);1-999(CentOS7)
- 登錄用戶:500-60000(CentOS6);1000-60000(CentOS7)
-
用戶名決議檔案:/etc/passwd,使用
man 5 passwd查看,各個專案的意義,name:password:UID:GID:GECOS:directory:shell
- name:用戶名
- password:密碼,或者占位符,如果是【x】,則密碼在/etc/shadow中,
- UID
- GID:用戶所屬的主組的ID號,
- GECOS:用戶的額外資訊,比如全名,是可選的
- directory:用戶的家目錄
- shell:用戶使用的shell種類
$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash ys:x:1000:1000:ys:/home/ys:/bin/bash
用戶相關命令:useradd,userdel,usermod,passwd
-
添加用戶:
useradd-
語法1:創建用戶,
useradd [options] LOGIN例子1:不指定選項,直接創建用戶,
創建了用戶a1,而且創建了一個私有組a1
# useradd a1 # tail -1 /etc/passwd a1:x:1001:1001::/home/a1:/bin/bash # tail -1 /etc/group a1:x:1001: -
-u:指定UID.
指定了UID,創建了用戶a2,而且創建了一個私有組a2
# useradd -u 3000 a2 # tail -1 /etc/passwd a2:x:3000:3001::/home/a2:/bin/bash # tail -1 /etc/group a2:x:3001: -
-g:指定用戶的主組,這個組必須事先存在,不存在會報錯,
指定主組zg4,創建用戶a3,沒有自動創建了一個私有組a3,因為已經指定了主組zg4.
# useradd -g cloud a3 useradd: group 'cloud' does not exist # tail -1 /etc/group zg4:x:300: # useradd -g zg4 a3 # tail -1 /etc/passwd a3:x:3001:300::/home/a3:/bin/bash -
-G:-G, --groups GROUP1[,GROUP2,...[,GROUPN]]] 指定用戶的附加組,可以多個,用逗號分隔,
創建a5前,組zg4,zg5,a2的附加組串列是空的,使用-G并指定zg4,zg5,a2,創建用戶a5后,組zg4,zg5,a2的附加組串列里就多了用戶a5.而且創建了一個私有組a5.
# tail /etc/group zg4:x:300: zg5:x:3000: a1:x:1001: a2:x:3001: # useradd -G zg4,zg5,a2 a5 # tail /etc/group zg4:x:300:a5 zg5:x:3000:a5 a1:x:1001: a2:x:3001:a5 -
-d:指定用戶的家目錄,如果不指定則默認在/home下創建同名目錄,
如果指定的家目錄不存在,則系統復制/etc/skel/下的所有檔案,到家目錄下,
如果出現錯誤:useradd: cannot set SELinux context for home directory
使用
setenforce 0即可,但只在當前會話有效,若要永久有效,則編輯/etc/sysconfig/selinuxSELINUX=disabled即可,# ls -a /etc/skel/ . .. .bash_logout .bash_profile .bashrc .emacs .mozilla # useradd -d /tmp/aa aa useradd: cannot set SELinux context for home directory /tmp/aa如果指定的家目錄存在,則系統不復制/etc/skel/下的檔案,到家目錄下,并提示家目錄已經存在,所以最好指定不存在的目錄,
# ls -a /etc/skel/ . .. .bash_logout .bash_profile .bashrc .emacs .mozilla # mkdir /tmp/abcd # userdel abcd # useradd -d /tmp/abcd abcd useradd: warning: the home directory already exists. Not copying any file from skel directory into it # ls -a /tmp/abcd . .. -
-c:指定用戶的額外資訊(GECOS)
指定了GECOS,創建了用戶a4,而且創建了一個私有組a4
# useradd -c yyass a4 # tail -1 /etc/passwd a4:x:3002:3002:yyass:/home/a4:/bin/bash # tail -1 /etc/group a4:x:3002: -
-s:指定用戶使用哪種shell,可以選擇的shell記錄在/etc/shells中,不在這個串列里的shell也可以選,但是不太安全,
# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh -
-r:創建系統用戶,
創建了用戶fff,而且創建了一個私有組fff,注意:由于創建的是系統用戶,所以UID和GID都小于1000,
# useradd -r fff # tail -1 /etc/passwd fff:x:986:299::/home/fff:/bin/bash # tail -1 /etc/group fff:x:299: -
-m:如果用戶的家目錄不存在,創建家目錄,這個選項沒太搞懂
# useradd -m bbb [root@localhost ~]# ls /home/bbb/ [root@localhost ~]# ls -a /home/bbb/ . .. .bash_logout .bash_profile .bashrc .emacs .mozilla -
-M:不創建用戶的家目錄,
# useradd -M bb # ls /home/bb ls: cannot access /home/bb: No such file or directory -
-f:指定下面介紹的【password inactivity period(⑤)】,如果是0,則過期后馬上不能登錄系統;如果是-1,即使過期后,只要修改了密碼,還是可以登錄系統的,
-
語法2:在標準輸出顯示創建用戶時,所使用的默認值,更多的默認值,存放在/etc/login.defs里,
useradd -D# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes-
GROUP:?
-
HOME:家目錄
-
INACTIVE:指定下面介紹的【password inactivity period(⑤)】,如果是0,則過期后馬上不能登錄系統;如果是-1,即使過期后,只要修改了密碼,還是可以登錄系統的,
-
EXPIRE:指定下面介紹的【account expiration date(⑥)】,如果是empty,代表永不過期,
-
SHELL:shell的種類
-
SKEL:指定從哪個目錄下復制下面這些檔案,到家目錄,
.bash_logout .bash_profile .bashrc .emacs .mozilla -
CREATE_MAIL_SPOOL:是否創建信箱,yes是創建,創建的信箱放到目錄/var/spool/mail/里,
-
-
語法3:修改創建用戶時,所使用的默認值,修改后的結果保存在檔案/etc/default/useradd中
useradd -D [options]- -b:修改HOME
- -e:修改EXPIRE
- -f:修改INACTIVE
- -g:修改GROUP
- -s:修改SHELL
# useradd -D -s /bin/csh # useradd -D SHELL=/bin/csh # cat /etc/default/useradd SHELL=/bin/csh # useradd nn # tail -1 /etc/passwd nn:x:3010:3010::/home/nn:/bin/csh
-
-
修改用戶:
usermod.經常使用的給用戶增加附加組,聯合使用-a和-g,
-
語法:usermod [options] LOGIN_NAME
-
-u:修改用戶的uid為此處的值,
# tail /etc/passwd bn:x:3011:3011::/home/bn:/bin/csh # usermod -u 4000 bn # tail -1 /etc/passwd bn:x:4000:3011::/home/bn:/bin/csh -
-g:修改用戶的主組為此處的值,注意點和useradd一樣,
# tail -1 /etc/passwd bn:x:4000:3011::/home/bn:/bin/csh # tail /etc/group a5:x:3003: # usermod -g a5 bn # tail -1 /etc/passwd bn:x:4000:3003::/home/bn:/bin/csh -
-G:修改用戶附加組,會覆寫用戶原來有的附加組,不想被覆寫就和-a一起使用,
# tail -20 /etc/group zg4:x:300:a5 zg5:x:3000:a5 a1:x:1001: a2:x:3001:a5 a4:x:3002: # usermod -G a1,a4 a5 # tail -20 /etc/group zg4:x:300: zg5:x:3000: a1:x:1001:a5 a2:x:3001: a4:x:3002:a5原來用戶a5的附加組是zg4,zg5,a2,執行命令后,附加組沒覆寫了,
-
-a:和-G一起使用,給用戶添加附加組,
# tail -20 /etc/group a1:x:1001:a5 a4:x:3002:a5 aa:x:3005: fff:x:299: # usermod -a -G aa,fff a5 # tail -20 /etc/group a1:x:1001:a5 a4:x:3002:a5 aa:x:3005:a5 fff:x:299:a5沒有被覆寫,是追加,
-
-c:修改用戶的額外資訊為此處的值,
# tail -1 /etc/passwd bn:x:4000:3003::/home/bn:/bin/csh # usermod -c hello bn # tail -1 /etc/passwd bn:x:4000:3003:hello:/home/bn:/bin/csh -
-d:修改用戶的家目錄為此處的值,原來家目錄里的檔案,還是放在原來那里,想把家目錄里的檔案也剪切到新的家目錄里的話,就和-m一次使用,
# usermod -m -d /home/nn2 nn # ls -a /home/nn2/ . .. .bash_logout .bash_profile .bashrc .emacs .mozilla # ls -a /home/nn/ ls: cannot access /home/nn/: No such file or directory # tail -2 /etc/passwd nn:x:3010:3010::/home/nn2:/bin/csh/home/nn目錄下的檔案都被剪切到了/home/nn2目錄下了,并且/home/nn目錄都被自動洗掉了,
-
-m:只能和-d一起使用,把舊家目錄里的所有檔案,復制到新的家目錄,
-
-l:修改用戶名為此處的值,
# usermod -l newnn nn # tail -2 /etc/passwd bn:x:4000:3003:hello:/home/bn2:/bin/csh newnn:x:3010:3010::/home/nn2:/bin/csh -
-s:修改用戶的shell種類,
# tail -2 /etc/passwd newnn:x:3010:3010::/home/nn2:/bin/csh # usermod -s /bin/bash newnn # tail -2 /etc/passwd newnn:x:3010:3010::/home/nn2:/bin/bash -
-L:鎖定用戶密碼,即在用戶密碼前加一個!,
# usermod -L newnn # tail -2 /etc/shadow newnn:!1:18247:0:99999:7::: # usermod -U newnn # tail -2 /etc/shadow newnn:1:18247:0:99999:7::: -
-U:解鎖用戶密碼,去掉!,
-
-
洗掉用戶:
userdel [options] LOGIN- -r:洗掉用戶的同時,也洗掉用戶的家目錄,不指定此選項則保留用戶的家目錄,
二,組分類:
-
組分類1
-
管理員組(gid:0)
-
普通用戶組(gid:1-65535)
- 系統用戶組:1-499(CentOS6);1-999(CentOS7)
- 登錄用戶組:500-60000(CentOS6);1000-60000(CentOS7)
-
組名決議檔案:/etc/group
group_name:password:GID:user_list
- group_name:組名
- password:密碼,或者占位符,如果是【x】,則密碼在/etc/shadow中,
- GID:
- user_list:以此組為附加組的用戶成員串列,
-
-
組分類2:站在用戶角度分,一個用戶可以在多個組里,哪個組是用戶的主要組,這個組就叫用戶的主組,
-
用戶的主組
-
用戶的附加組
-
可以使用
id命令查看用戶的主組是什么,附加組是什么$ whoami za1 $ id uid=1001(za1) gid=1001(za1) groups=1001(za1),1002(zg1)gid:用戶的主組,
主組的作用:當創建檔案后,此檔案的所屬組,是這個用戶的主組,
groups:用戶所屬的組的集合,所以用戶的主組和附加組都在這個集合里,
用戶自己可以從自己所屬的組里,挑出一個組,作為自己的主組,所以用戶的主組是可以隨時改變的,使用
newgrp命令,切換用戶的主組,切換成功后,還可以使用exit命令退出來,主組還會變成切換前的,
-
-
組分類3:站在用戶角度分
- 私有組:組名同用戶名,且組里只有自己一個用戶
- 公共組:組內包含了多個用戶
單項加密演算法:
-
md5:對應的命令
md5sum# echo 11 | md5sum 166d77ac1b46a1ec38aa35ab7e628ab5 - -
sha1:對應的命令
sha1sum# echo 11 | sha1sum dd71038f3463f511ee7403dbcbc87195302d891c - -
sha224:對應的命令
sha224sum -
sha256:對應的命令
sha256sum -
sha384:對應的命令
sha384sum -
sha512:對應的命令
sha512sum
Linux 是如何把密碼加密的呢?
如果2個用戶的密碼恰巧一樣,而且這2個用戶都可以查看/etc/shadow檔案,如果加密后的串也相同的話,那么就能知道另一個用戶的密碼了,為了避免這種情況,linux在執行加密前,會加一些salt(亂數)在密碼里,這樣就避免了上面情況的發生,而且亂數也是放到了/etc/shadow檔案里,
密碼存放到哪里了?密碼是單向加密的,就意味著基本無法反向解密,
-
用戶的密碼存放在:/etc/shadow,可以使用
man 5 shadow查看下面各個專案的意義,login name:encrypted password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field
-
login name:用戶名
-
encrypted password:加密后的密碼
-
第一個$$間的數字:代表使用的是哪個加密演算法
1:md5;2:sha1;3:sha224;4:sha256;5:sha384;6:sha512
-
第二個$$間的串:加的salt(亂數),
-
第三個$$間的串:加密后,生成的串,
-
-
date of last password change(①):最近一次修改秘密的時間到1970年1月1號的天數,
- 0:用于下次登錄時,必須修改密碼:
- empty:密碼不用修改,且沒有期限,可以一直使用,
-
minimum password age(②):過了多少天后,才可以修改密碼,
- 0或者empty:不使用minimum password age
-
maximum password age(③):過了多少天后,必須要修改密碼,
- empty:不使用maximum password age, 不使用password warning period, 不使用password inactivity period
- 小于minimum password age:用戶不可以修改密碼
-
password warning period(④):修改密碼的截至日期前多少天開始提醒用戶,要修改密碼了,但是在這個提醒期間內,不修改也是可以登錄系統的,
- 0或者empty:不使用此欄位
-
password inactivity period(⑤):超過了密碼修改的截止期,多少天內,還可以修改密碼,不修改密碼就無法登錄系統,
- empty:不使用此欄位,
-
account expiration date(⑥):從1970年1月1號開始,經過多少天后,賬戶就無法使用,
- empty:永遠不會過期,
-
reserved field:保留欄位,目前未使用,
-
用下圖來說明上面的日期,下圖的圈里的數字對應上面的數字,
- 黑色?段:不可以修改密碼
- 藍色?段:可以修改密碼
- 紫色?段:提醒修改密碼,但不修改也可以登錄系統
- 綠色?段:提醒修改密碼,不修改不可以登錄系統
- 紅色?段:如果修改了密碼,則可以繼續登錄系統;如果沒有修改密碼,則無法登錄系統
- 橙色?段:不可以登錄系統,

# cat /etc/shadow root:$6$n0lH0mnbr28Igon0$KhYX3C0MjrBCP4qf7A6J4jwdP.eviqIhKGPlE4Uy4jaqkL.SzKvN39v860ckYHojGp0d260moqFPU2ugqdO8U.::0:99999:7::: ys:$6$XjEoNab85Vhf0ajr$kEqHY3ZiJm7nWG.fDY0mzEvdm8L2Yc4d0FEYYh8aufBrYhiDfgQqdzljNbJnK0NIK3v9gy/iM/cqMUnbhS0D71::0:99999:7::: -
-
組的密碼存放在:/etc/gshadow
組相關命令:groupadd,groupdel,groupmod,gpasswd
-
添加組:
groupadd默認創建登錄用戶組,- -g:手動指定gid,不指定的話,則由當前最大的gid加1.
- -r:創建系統用戶組
# groupadd zg1 # tail -1 /etc/group zg1:x:1001: # groupadd -g 1005 zg2 # tail -2 /etc/group zg1:x:1001: zg2:x:1005: # groupadd -r zg3 # tail -2 /etc/group zg2:x:1005: zg3:x:979: # groupadd -r -g 300 zg4 # tail -2 /etc/group zg3:x:979: zg4:x:300: -
修改組:
groupmod- -g:修改GID
- -n:修改組名(groupmod -n new old),修改后,里面組員的所屬組的名字也變了,
-
洗掉組:
groupdel,洗掉后里面的組員就沒有所屬組了,groupdel group_name
三,管理用戶(設定用戶密碼,修改用戶密碼的各種時間屬性)
-
語法:
passwd [-k][-l] [-u [-f]][-d] [-e][-n mindays] [-x maxdays] [-w warndays] [-i inactivedays][-S] [--stdin][username] -
修改自己的密碼:不指定任何選項
passwd -
管理員修改用戶密碼:
passwd user -
讓用戶無法登錄:
-l# passwd -l za1 Locking password for user za1. passwd: Success -
解鎖用戶:
-u# passwd -u za1 Unlocking password for user za1. passwd: Warning: unlocked password would be empty. passwd: Unsafe operation (use -f to force) # passwd -fu za1 Unlocking password for user za1. passwd: Success -
洗掉用戶的密碼:
-d洗掉后,用戶登錄系統時,不需要輸入密碼,
-
強迫用戶下次登錄必須修改密碼:
-e把【date of last password change(①)】修改成了0,也就是下次登錄系統時,必須修改密碼,
-e后面不能輸入數字,
# tail -1 /etc/shadow za1::18247:10:60:7::: # passwd -e za1 Expiring password for user za1. passwd: Success # tail -1 /etc/shadow za1::0:10:60:7::: -
修改用戶密碼的【minimum password age(②)】:
-n# tail -1 /etc/shadow za1::18247:0:99999:7::: # passwd -n 10 za1 Adjusting aging data for user za1. passwd: Success # tail -1 /etc/shadow za1::18247:10:99999:7::: -
修改用戶密碼的【maximum password age(③)】:
-x# tail -1 /etc/shadow za1::18247:10:99999:7::: # passwd -x 60 za1 Adjusting aging data for user za1. passwd: Success # tail -1 /etc/shadow za1::18247:10:60:7::: -
修改用戶密碼的【password warning period(④)】:
-w,# tail -1 /etc/shadow za1::0:10:60:7::: # passwd -w 5 za1 Adjusting aging data for user za1. passwd: Success # tail -1 /etc/shadow za1::0:10:60:5::: -
修改用戶密碼的【password inactivity period】:
-i# tail -1 /etc/shadow za1::0:10:60:5::: # passwd -i 8 za1 Adjusting aging data for user za1. passwd: Success # tail -1 /etc/shadow za1::0:10:60:5:8:: -
重定向修改密碼,在shell腳本編程里使用:
--stdin# tail -1 /etc/shadow za1::0:10:60:5:8:: # echo "1" | passwd --stdin za1 &> /dev/null # echo $? 0 # tail -1 /etc/shadow za1:$6$LiKVjDZv$7AGTfLBLiqd48.YC0VglXmCyHfJ5mcCBRtFAtexfEljcjmNWjKdoPQSxFdiFoDyj5BdDBkTdFrR3cPTuSA5F50:18247:10:60:5:8:: -
備胎命令
chage - change user password expiry information,和passwd差不多,
四,管理組(設定組密碼;添加用戶到組;從組洗掉用戶)
-
gpasswd
-
語法:
gpasswd [option] group -
修改組的密碼:不使用選項
# gpasswd zg1 Changing the password for group zg1 New Password: Re-enter new password: # tail -1 /etc/gshadow zg1:$6$P1Ks//MQ.8$48kY7GOxXxlegd14K3ssR038lt7O6XVnPP1b7emXk8S0r5y4FRHGR9OJDRTQiClH0qvFaikNBmRDYY5IBwDEO0::za1為什么要給組設定密碼?防止用戶隨意使用
newgrp命令切換自己的主組,假設用戶要用newgrp把自己的主組切換成zg1,如果此用戶的附加組里有zg1,則不需要輸入組zg1的密碼;如果此用戶的附加組里沒有zg1,則需要輸入組zg1的密碼,
下面的例子,用戶za2的所屬組里沒有zg1,所以切換到zg1時,必須輸入zg1的密碼,然后創建檔案t2,檔案t2的所屬組就變成了zg1.使用exit退出后,za2的主組又變回了za2.
# tail -1 /etc/passwd za2:x:1002:1003::/home/za2:/bin/bash # su za2 $ id uid=1002(za2) gid=1003(za2) groups=1003(za2) $ touch t1 $ ll total 0 -rw-rw-r--. 1 za2 za2 0 Dec 17 14:30 t1 $ newgrp zg1 Password: $ id uid=1002(za2) gid=1002(zg1) groups=1002(zg1),1003(za2) $ touch t2 $ ll total 0 -rw-rw-r--. 1 za2 za2 0 Dec 17 14:30 t1 -rw-r--r--. 1 za2 zg1 0 Dec 17 14:31 t2 $ exit exit $ whoami za2 $ id uid=1002(za2) gid=1003(za2) groups=1003(za2)下面的例子,用戶za1的所屬組里有zg1,所以把自己的主組切換到zg1時,不需要輸入密碼,
$ whoami za1 $ id uid=1001(za1) gid=1001(za1) groups=1001(za1),1002(zg1) $ newgrp zg1 $ id uid=1001(za1) gid=1002(zg1) groups=1002(zg1),1001(za1)-
臨時切換用戶的主組:
newgrp - group,加上橫線:模擬用戶重新登錄系統,以事先重新初始化作業環境,
-
-
向組里添加用戶:
-a username# tail -2 /etc/group zg1:x:1002:za1 # gpasswd -a za2 zg1 Adding user za2 to group zg1 # tail -2 /etc/group zg1:x:1002:za1,za2 -
從組里洗掉用戶:
-d username# tail -2 /etc/group zg1:x:1002:za1,za2 # gpasswd -d za2 zg1 Removing user za2 from group zg1 # tail -2 /etc/group zg1:x:1002:za1
-
五,顯示用戶屬于哪些組id
-
語法:
id [OPTION]... [USER]不輸入USER就顯示當前用戶屬于哪些組
- 只顯示UID:-u
- 只顯示GID:-g
- 只顯示用戶屬于的所有組:-G
- 顯示名字而非id,配合-u,-g,-G使用:-n
六,切換用戶su
-
登錄式切換:模擬用戶登錄,初始化目標用戶的作業環境,比如直接進入目標用戶的家目錄,
su - usernamesu -l username
-
非登錄式切換:模擬用戶登錄,所以導致沒有初始化目標用戶的作業環境,所以就不能直接進入到目標用戶的家目錄,
su usernme
-
管理員可以無密碼切換到其他用戶,
-
最好使用登錄式切換,
-
切換用戶后只是執行一個命令,然后再切換回來:
su - username -c command# whoami root [root@localhost ~]# su - ys -c "ls -lrt" total 0 drwxr-xr-x. 2 ys ys 6 Nov 29 17:08 Downloads # whoami root
七,一些不重要的管理員命令
-
finger和chfn
finger username:查看user的真名,手機,辦公室等資訊,
chfn username:修改user的真名,手機,辦公室等資訊,
# finger za1 Login: za1 Name: Directory: /home/za1 Shell: /bin/bash Last login Tue Dec 17 15:23 (CST) on pts/1 No mail. No Plan. # chfn za1 Changing finger information for za1. Name []: abc Office []: off Office Phone []: 132 Home Phone []: 234 Finger information changed. # finger za1 Login: za1 Name: abc Directory: /home/za1 Shell: /bin/bash Office: off, 132 Home Phone: 234 Last login Tue Dec 17 15:23 (CST) on pts/1 No mail. No Plan. -
修改用戶的shell種類
chsh -s shell username# chsh -s /bin/csh za1 Changing shell for za1. Shell changed. -
檢查用戶密碼是否健康:
pwck -
檢查組密碼是否健康:
grpck
八,sudo簡介
sudo簡介
背景:root用戶是有所有權限的,所有使用root用戶登錄,去操作時,難免會發生意外,洗掉了重要的檔案,為了避免,一般不使用root用戶登錄,而是使用一般用戶,但是一般用戶又沒有權限使用root用戶的命令,所以有了sudo機制,
目的:讓普通用戶可以執行某些管理員才可以執行的命令,但不是全部,
組態檔:/etc/sudoers
用戶名A 主機串列A=(用戶串列A) 命令串列A
- 用戶名A:允許用戶A
- 主機串列A:從哪些ip地址
- 用戶串列A:以哪些用戶的身份
- 命令串列A:允許哪些命令
下面的root用戶的設定:
允許root用戶,從任何主機,以任何用戶的身份,運行任何命令,
root ALL=(ALL) ALL
例子:允許userA用戶,從192.168.55.2主機,以root用戶的身份,運行/sbin/useradd, /sbin/userdel命令,
userA 192.168.55.2=(root) /sbin/useradd, /sbin/userdel
例子:允許userB用戶,從任何主機,以任何用戶的身份,運行任何命令,
userB基本和root差不多了,
userB ALL=(ALL) ALL
使用方法:
$ sudo COMMAND
注意事項:
使用sudo command后,會提示輸入當前用戶的密碼,為了下次sudo不再讓用戶輸入密碼,密碼保留5分鐘,5分鐘后,再sudo command,還是提示輸入當前用戶的密碼,
常用選項:
-k:強制下次sudo輸入密碼,即使在5分鐘內
-l:顯示當前用戶可以執行哪些管理員的命令
[aa@localhost ~]$ sudo -l
[sudo] password for aa:
Matching Defaults entries for aa on localhost:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User aa may run the following commands on localhost:
(ALL) /sbin/useradd
九,練習
1,新建系統組mysql,新建系統用戶mysql,屬于mysql組,沒有家目錄,且shell為/sbin/nologin,嘗試切換至用戶,查看其命令提示符,
# groupadd -r mysql
# tail -1 /etc/group
mysql:x:979:
# useradd -g mysql -M -s /sbin/nologin mysql
# tail -1 /etc/passwd
mysql:x:1003:979::/home/mysql:/sbin/nologin
# id mysql
uid=1003(mysql) gid=979(mysql) groups=979(mysql)
# su - mysql
su: warning: cannot change directory to /home/mysql: No such file or directory
This account is currently not available.
# su mysql
This account is currently not available.
2,新建gid為5000的組mageedu,新建用戶gentoo,要求其家目錄為/tmp/gentoo,密碼同用戶名,
# groupadd -g 5000 mageedu
# tail -1 /etc/group
mageedu:x:5000:
# useradd -d /tmp/gentoo gentoo
# tail -1 /etc/passwd
gentoo:x:1004:1004::/tmp/gentoo:/bin/bash
# passwd gentoo
Changing password for user gentoo.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# tail -1 /etc/shadow
gentoo:$6$HuCz01P5$65qUu5ONTZPKkhHWQJbnTR6jtJDeL3KqY.3mgO2BDpqNoSMlaWasoMSYhBhe6i6EBOstgLRAdNChOErp0PUe0/:18248:0:99999:7:::
# ls -a /tmp/gentoo/
. .. .bash_logout .bash_profile .bashrc .emacs .mozilla
3,新建用戶fedora,其家目錄/tmp/fedora,密碼同用戶
# useradd -d /tmp/fedora fedora
# tail -1 /etc/passwd
fedora:x:1005:1005::/tmp/fedora:/bin/bash
# ls -a /tmp/fedora/
. .. .bash_logout .bash_profile .bashrc .emacs .mozilla
# passwd fedora
Changing password for user fedora.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# tail -1 /etc/shadow
fedora:$6$32gvhWr5$xMk9xO.QUNEC9h7G71DWsD44Bng8TqqcxagzfD4lj6VrcHLFsA6OQppvDTHwHnO2ANfkNtByW4oGFMqmpMo0M1:18248:0:99999:7:::
4,新建用戶www,家目錄/tmp/www;洗掉用戶www,但保留其家目錄,
# useradd -d /tmp/www www
# tail -1 /etc/passwd
www:x:1006:1006::/tmp/www:/bin/bash
# ls -a /tmp/www
. .. .bash_logout .bash_profile .bashrc .emacs .mozilla
# userdel www
# ls -a /tmp/www
. .. .bash_logout .bash_profile .bashrc .emacs .mozilla
# id www
id: www: no such user
5,把用戶gentoo和fedora加到組mageedu里,
# gpasswd -a gentoo mageedu
Adding user gentoo to group mageedu
# gpasswd -a fedora mageedu
Adding user fedora to group mageedu
# id gentoo
uid=1004(gentoo) gid=1004(gentoo) groups=1004(gentoo),5000(mageedu)
# id fedora
uid=1005(fedora) gid=1005(fedora) groups=1005(fedora),5000(mageedu)
6,復制目錄/var/log到/tmp目錄,修改/tmp/log及其內部的所有檔案及子目錄的屬組為mageedu,并讓屬組有寫權限,
# cp -r /var/log/ /tmp/
# ll -d /tmp/log/
drwxr-xr-x. 21 root root 4096 Dec 18 10:44 /tmp/log/
# ll /tmp/log/
drwxr-xr-x. 2 root root 176 Dec 18 10:44 anaconda
drwx------. 2 root root 80 Dec 18 10:44 audit
-rw-------. 1 root root 0 Dec 18 10:44 boot.log
-rw-------. 1 root root 48266 Dec 18 10:44 boot.log-20191211
# chown -R :mageedu /tmp/log/
# ll -d /tmp/log
drwxr-xr-x. 21 root mageedu 4096 Dec 18 10:44 /tmp/log
# ll /tmp/log
drwxr-xr-x. 2 root mageedu 176 Dec 18 10:44 anaconda
drwx------. 2 root mageedu 80 Dec 18 10:44 audit
-rw-------. 1 root mageedu 0 Dec 18 10:44 boot.log
-rw-------. 1 root mageedu 48266 Dec 18 10:44 boot.log-20191211
# chmod -R g+w /tmp/log/
# ll -d /tmp/log
drwxrwxr-x. 21 root mageedu 4096 Dec 18 10:44 /tmp/log
# ll /tmp/log
drwxrwxr-x. 2 root mageedu 176 Dec 18 10:44 anaconda
drwx-w----. 2 root mageedu 80 Dec 18 10:44 audit
-rw--w----. 1 root mageedu 0 Dec 18 10:44 boot.log
-rw--w----. 1 root mageedu 48266 Dec 18 10:44 boot.log-20191211
c/c++ 學習互助QQ群:877684253

本人微信:xiaoshitou5854
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/146881.html
標籤:Linux
下一篇:當前互聯網已經分配的埠和服務
