N25第三周總結

linux   bassic The third week of blogging

1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。

 ~]# who | cut -d' ' -f1 | uniqroot

2、取出最后登錄到當前系統的用戶的相關信息。

~]# who | tail -1

3、取出當前系統上被用戶當作其默認shell的最多的那個shell。

~]#~]# cat /etc/passwd |cut -d: -f7 | uniq -c | sort -n| tail -1 | cut -d ' ' -f7
 /sbin/nologin

4、將/etc/passwd中的第三個字段數值最大的后10個用戶的信息全部改為大寫后保存至/tmp/maxusers.txt文件中。

~]# cat /etc/passwd | sort -t ':' -k 3 | tail -10 | tr 'a-z' 'A-Z'|tee  /tmp/maxusers.txt  # tee命令追加也可以就不會輸出到屏幕上了

5、取出當前主機的IP地址,提示:對ifconfig命令的結果進行切分

Centos 6:
~]# ifconfig eth0 | cut -d':' -f2 | cut -d ' ' -f1 | cut -d$'\n' -f2
192.168.145.128
~]# ifconfig eth0 | cut -d':' -f2 | cut -d ' ' -f1 | head -2 | tail -1        
192.168.145.128
Centos 7:
~]# ifconfig ens32 | head -2| tail -1 | cut -d' ' -f10
192.168.110.131
~]# ifconfig ens32 | grep "inet\>" | cut -d' ' -f10
192.168.110.131
~]# ifconfig ens32 | grep "inet\>"| cut -d' ' -f10
192.168.110.13

6、列出/etc目錄下所有以.conf結尾的文件的文件名,并將其名字轉換為大寫后保存至/tmp/etc.conf文件中。

~]# ls /etc/*.conf| tr 'a-z' 'A-Z' > /tmp/etc.conf
~]# cat /tmp/etc.conf 
/ETC/ASOUND.CONF
/ETC/DNSMASQ.CONF
/ETC/DRACUT.CONF
/ETC/E2FSCK.CONF
/ETC/HOST.CONF
/ETC/KDUMP.CONF
/ETC/KRB5.CONF
/ETC/LD.SO.CONF
/ETC/LIBAUDIT.CONF
/ETC/LIBUSER.CONF
/ETC/LOCALE.CONF
/ETC/LOGROTATE.CONF
/ETC/MAN_DB.CONF

7、顯示/var目錄下一級子目錄或文件的總個數。

~]# ls /var/|wc -l
21
~]# ls /var/|tee a.txt| wc -l 通過tee命令輸出到某個文件中將顯示的內容
21
]# cat a.txt 
adm
cache
crash
db
empty
games
...

8、取出/etc/group文件中第三個字段數值最小的10個組的名字。

~]# cat /etc/group | sort -t: -k3 -n |head -10|cut -d: -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem

9、將/etc/fstab和/etc/issue文件的內容合并為同一個內容后保存至/tmp/etc.test文件中。

~]# cat /etc/fstab /etc/issue |tee /tmp/etc.test
#
# /etc/fstab
# Created by anaconda on Thu Nov  3 20:39:44 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=317ccf35-bbc0-499f-a0a7-0c81292ae5cb /                       xfs    defaults           0 0
UUID=6250c764-1374-4d93-9e91-6bab91101fd6 /boot                   xfs     defaults        0 0
UUID=53e22171-ae66-428b-a359-a0b0f3293def swap                    swap    defaults        0 0
\S
Kernel \r on an \m
 ~]# cat /etc/fstab /etc/issue > /tmp/etc.test

10、請總結描述用戶和組管理類命令的使用方法并完成以下練習:

安全上下文:
	進程以其發起者的身份運行;
	進程對文件的訪問權限,取決于發起此進程的用戶的權限;
系統用戶:為了能夠讓那后臺進程或服務類進程以非管理員的身份運行,通常需要為此創建多個普通用戶;這類用戶從不用登錄系統					
groupadd命令:添加組
		groupadd [選項] group_name
			-g GID:指定GID;默認是上一個組的GID+1;
			-r: 創建系統組;
	groupmod命令:修改組屬性
		groupmod [選項] GROUP
			-g GID:修改GID;
			-n new_name:修改組名;
	groupdel命令:刪除組
		groupdel [選項] GROUP
	useradd命令:創建用戶
~]# file `which adduser` 命令引用
/usr/sbin/adduser: symbolic link to `useradd'
----------------
useradd [選項] 登錄名
			-u, --uid UID:指定UID;
			-g, --gid GROUP:指定基本組ID,此組得事先存在;
			-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;前提組的實現存在
			-c, --comment COMMENT:指明注釋信息;
			-d, --home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄并重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件; skel(骨骼)
-d : 用于指定用戶主目錄(并不創建),如果此目錄不存在,則同時使用-m選項,可以創建主目錄
~]# useradd -d /tmp/moosefs moosefs
~]# ls /tmp/
moosefs
~]# ls -a /tmp/moosefs/
.  ..  .bash_logout  .bash_profile  .bashrc
[root@mytest2 ~]# mkdir  /tmp/mytest
[root@mytest2 ~]# useradd -d /tmp/mytest mytest
useradd: warning: the home directory already exists. 已經存在目錄的話不會復制
Not copying any file from skel directory into it.
[root@mytest2 ~]# ls -a /tmp/mytest
.  ..
[root@mytest2 ~]# ls -a /etc/skel
.  ..  .bash_logout  .bash_profile  .bashrc
看到實際上就是復制skel中的文件內容,重命名后
			-s, --shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
/bin/sh
/bin/bash
/sbin/nologin 
/bin/dash
/bin/tcsh
/bin/csh
			-r, --system:創建系統用戶;

注意:創建用戶時的諸多默認設定配置文件為/etc/login.defs	

useradd -D:顯示創建用戶的默認配置;
useradd -D 選項:   修改默認選項的值;
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1           非活動期限禁用
EXPIRE=               過期期限:永不過期
SHELL=/bin/bash        默認shell
SKEL=/etc/skel     默認復制骨架信息
CREATE_MAIL_SPOOL=yes     每創建一個用戶,會在/var/spool/mail創建油桶
useradd –D –s /bin/csh
~]# cat /etc/default/useradd
修改的結果保存于/etc/default/useradd文件中;可以直接修改此文件來實現
-----------------------

usermod命令:修改用戶屬性
		usermod [選項] 登錄
			-u, --uid UID:修改用戶的ID為此處指定的新UID;
			-g, --gid GROUP:修改用戶所屬的基本組; 前提這個組得事先存在;
			-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組;原來的附加組會被覆蓋;
			-a, --append:與-G一同使用,用于為用戶追加新的附加組;
			-c, --comment COMMENT:修改注釋信息;
			-d, --home HOME_DIR:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置;
			-m, --move-home:只能與-d選項一同使用,用于將原來的家目錄移動為新的家目錄;
			-l, --login NEW_LOGIN:修改用戶名;
			-s, --shell SHELL:修改用戶的默認shell;

			-L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之前添加一個"!";
			-U, --unlock:解鎖用戶的密碼;
-----------------------
passwd命令:
		passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]

		(1) passwd:修改用戶自己的密碼;
		(2) passwd USERNAME:修改指定用戶的密碼,但僅root有此權限;管理員修改任何用戶的密碼無需原來密碼;
		-l, -u:鎖定和解鎖用戶;
		-d:清除用戶密碼串;
		-e DATE: 過期期限,日期;
		-i DAYS:非活動期限; 后面必須跟參數 天
		-n DAYS:密碼的最短使用期限;
		-x DAYS:密碼的最長使用期限;
		-w DAYS:警告期限;
		--stdin:從標準輸入來獲取用戶密碼,獨特輸入機制,重定向至標準輸入
		echo "PASSWORD" | passwd --stdin USERNAME
         不用輸入兩遍了
~]# echo "123" | passwd --stdin docker &> /dev/null   腳本中通常這樣使用
[root@localhost ~]# echo $?
0
---------------------
gpasswd命令: 不屬于的組切換的時候就要輸入密碼
		組密碼保存的文件:/etc/gshadow
		gpasswd [選項] group
			-a USERNAME:向組中添加用戶
			-d USERNAME:從組中移除用戶
給組添加密碼的作用:
~]# gpasswd mygrp
添加完成密碼123
~]# cat /etc/group
netadmin:!::gentoo
mygrp:$6$XIGnQ9GrCW/g.K$6l5VKMbCFtRjToOPt0/EE4H7R7q77oOB9tNA2CDQEQn4fAkcAKPWeCHABvapVqojlVFX5Dar0u7oD1qeFhoDP0::
想讓某一用戶臨時切換到某個組中,
~]# su - archlinux
[archlinux@localhost ~]$ whoami
archlinux
~]$ id
uid=4003(archlinux)gid=4003(archlinux)groups=4003(archlinux),502(mytest),5003(mygrparchlinux 
所屬的組也是archlinux

~]$ touch test
~]$ ll
total 0
-rw-rw-r-- 1 archlinux archlinux 0 Dec  7 19:56 test
文件屬主是archlinux,屬組基本組,每個用戶創建文件的時候它的屬組都是基本組;
使用newgrp切換它的基本組
~]$ newgrp mygrp
$ id
uid=4003(archlinux) gid=5003(mygrp) groups=5003(mygrp),502(mytest),4003(archlinux)
	newgrp [-] [group]
~]$ touch test2
$ ll
total 0
-rw-rw-r-- 1 archlinux archlinux 0 Dec  7 19:56 test
-rw-r--r-- 1 archlinux mygrp     0 Dec  7 20:00 test2
~]$ exit 使用該命令退出 退出后基本組又稱為該archlinux
~]# su - docker
[docker@localhost ~]$ touch test
[docker@localhost ~]$ ll
total 0
-rw-rw-r-- 1 docker docker 0 Dec  7 20:06 test
~]$ newgrp mygrp
Password:
如果這個用戶本來就屬于該附加組,切換無需密碼,如果該用戶不屬于,切換需密碼

newgrp命令:臨時切換指定的組為基本組; 
			-: 會模擬用戶重新登錄以實現重新初始化其工作環境;

chage命令:更改用戶密碼過期信息       (了解)
		chage [選項] 登錄名

			-d
			-E
			-W
			-m
			-M

id命令:顯示用戶的真實和有效ID; 實際和有效的是兩回事;
		id [OPTION]... [USER]
			-u: 僅顯示有效的UID;
			-g: 僅顯示用戶的基本組ID; 
			-G:僅顯示用戶所屬的所有組的ID;包括基本組和附加組所有ID
			-n: 顯示名字而非ID; 			
su命令:switch user
	登錄式切換:會通過讀取目標用戶的配置文件來重新初始化
			su - USERNAME
			su -l USERNAME
	非登錄式切換:不會讀取目標用戶的配置文件進行初始化
			su USERNAME
	注意:管理員可無密碼切換至其它任何用戶;非管理員切換至任何用戶時,必須給出目標用戶的密碼;
		-c 'COMMAND':僅以指定用戶的身份運行此處指定的命令;只想做一件事
 ~]# su - docker -c 'whoami'
docker
[root@localhost ~]# whoami
root
此題是上面su不加-的示例
~]# su docker
[docker@localhost root]$ pwd   沒有讀取目標用戶的配置文件
/root

練習題:

(1)、創建組distro,其GID為2016;
~]# groupadd -g 2016 distro
 ~]# tail -1 /etc/group
distro:x:2016:

(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;
~]# useradd -u 1005  mandriva
~]# tail -1 /etc/passwd
mandriva:x:1005:1005::/home/mandriva:/bin/bash
~]# usermod -g distro mandriva
~]# id mandriva
uid=1005(mandriva) gid=2016(distro) groups=2016(distro)

(3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;
~]# useradd -u 1100 -d /home/linux mageia
~]# tail -1 /etc/passwd
 mageia:x:1100:1100::/home/linux:/bin/bash
 
(4)、給用戶mageia添加密碼,密碼為mageedu;
~]# echo "mageedu" | passwd  --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.

(5)、刪除mandriva,但保留其家目錄;
~]# userdel mageia
~]# ls -a /home/linux/
.  ..  .bash_logout  .bash_profile  .bashrc

(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;
~]# useradd -u 2002 -g peguin -G peguin slackware
~]# tail -1 /etc/group
peguin:x:2017:slackware
(7)、修改slackware的默認shell為/bin/tcsh;
~]# usermod -s /bin/tcsh
~]# tail -1 /etc/passwd
slackware:x:2002:2017::/home/slackware:/bin/tcsh

(8)、為用戶slackware新增附加組admins;
~]# usermod -G admins slackware
~]# tail -1 /etc/group
admins:x:2018:slackware

(9)、為slackware添加密碼,且要求密碼最短使用期限為3天,最長為180天,警告為3天;
~]# passwd -n 3 -x 180 -w 3 slackware
Adjusting aging data for user slackware.
passwd: Success
~]# tail -3 /etc/shadow
slackware:!!:17133:3:180:3:::

(10)、添加用戶openstack,其ID號為3003, 基本組為clouds,附加組為peguin和nova;
~]# groupadd nova
~]# groupadd clouds
~]# useradd -u 3003 -g clouds -G peguin,nova openstack
~]# id openstack
uid=3003(openstack) gid=2019(clouds) groups=2019(clouds),2017(peguin),2020(nova)
(11)、添加系統用戶mysql,要求其shell為/sbin/nologin;
~]# useradd -r -s /sbin/nologin mysql
~]# id mysql
uid=996(mysql) gid=994(mysql) groups=994(mysql)
~]# grep "mysql" /etc/passwd
mysql:x:996:994::/home/mysql:/sbin/nologin

(12)、使用echo命令,非交互式為openstack添加密碼。
~]# echo "112"| passwd --stdin openstack
~]# grep "openstack" /etc/shadow
openstack:$6$Pq0LRXWc$GGBw6KvIgD.OTyWniJX3VaLOJ4FssOF7buuUet.cOD5olnTQS1.w9ueRoezJhaptYcJU9isuNIH/NF1h3ECpI1:17133:0:99999:7:::

原創文章,作者:讓優秀稱為一種習慣,如若轉載,請注明出處:http://www.www58058.com/63947

(0)
讓優秀稱為一種習慣讓優秀稱為一種習慣
上一篇 2016-12-17
下一篇 2016-12-17

相關推薦

  • 使用CDN后,PHP如何獲取用戶的真是IP?

    在統計訪問日志參數的時候IP是一個重要的參數,所有索取客戶端的IP就至關重要。 在logformat配置中有兩個變量是獲取IP地址的: remoteaddr:客戶端IP xforwardedfor:客戶端的IP 從上面來看兩個都是客戶端IP,那這兩個變量有什么不同? 首先當你訪問某個網站,假設你中間不經過任何代理,那么webserver就會把remotead…

    Linux干貨 2015-12-21
  • 基本腳本編譯

                                  …

    2017-08-05
  • Linuxd的發展史

    Linux發展史 Linux誕生:   1991年的八月,一個芬蘭的名為Linus Torvalds的大學生為自己開始寫作一個類似minix,可運行在386上的操作系統尋找志同道合的合作伙伴。FREAX系統后改名Linux。  Linux是什么:   按照Linux開發者的說法,Linux是一個遵循POSIX(注一)標作系統,標…

    Linux干貨 2016-10-14
  • centos 7 修改sshd服務默認端口號

    由于最近sshd服務默認端口號22被匿名進行試探性的進行登入,為防止匿名用戶再次進行試探性的登入,將sshd服務的默認端口號進行修改。 環境:centos 7.3  xshell 思路:先將sshd的被指文件進行修改,把sshd服務的默認端口號修改為所需要的端口號,然后重啟sshd服務,發現重啟報錯。找其原因是應為selinux不允許自定義sshd…

    Linux干貨 2017-04-06
  • 學習宣言

    努力不只是為了更好的生活,更是為了證明自己! 只有逼自己一把,才能知道自己是可以做到的! 路漫漫其修遠兮,吾將上下而求索。

    Linux干貨 2016-12-26
  • 磁盤分區和文件系統管理

    磁盤分區 兩種分區方式:MBR,GPT  MBR: Master Boot Record,1982年,使用32位表示扇區 數,分區不超過2T  如何分區:按柱面      0磁道0扇區:512bytes      446bytes: boo…

    Linux干貨 2016-08-29
欧美性久久久久