第三周 用戶和組管理

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

[root@localhost ~]# who

root???? pts/0??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/1??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/2??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/3??????? 2017-12-16 22:46 (192.168.43.233)

[root@localhost ~]# who | cut -d” ” -f1

root

root

root

root

[root@localhost ~]# who | cut -d” ” -f1 | sort

root

root

root

root

[root@localhost ~]# who | cut -d” ” -f1 | sort | uniq

root

 

[root@localhost ~]# who | cut -d” ” -f1 | uniq

root

 

 

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

[root@localhost ~]# who

root???? pts/0??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/1??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/2??????? 2017-12-16 22:46 (192.168.43.233)

root???? pts/3??????? 2017-12-16 22:46 (192.168.43.233)

[root@localhost ~]# who | tail -1

root???? pts/3??????? 2017-12-16 22:46 (192.168.43.233)

[root@localhost ~]# who | tail -1 | cut -d” ” -f1 | id

uid=0(root) gid=0(root) groups=0(root)

 

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

[root@localhost ~]# cat /etc/passwd | cut -d: -f7

/bin/bash

……

[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c

1 /bin/bash

4 /sbin/nologin

1 /bin/sync

1 /sbin/shutdown

1 /sbin/halt

10 /sbin/nologin

[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | sort -nr

10 /sbin/nologin

4 /sbin/nologin

1 /sbin/shutdown

1 /sbin/halt

1 /bin/sync

1 /bin/bash

[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | sort -nr | head -1

10 /sbin/nologin

 

[root@localhost ~]# cat /etc/passwd | cut -d: -f7 | uniq -c | tail -1

10 /sbin/nologin

 

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

[root@localhost ~]# sort -t: -k3 -n /etc/passwd

[root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr ‘a-z’ ‘A-Z’

MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN

……

[root@localhost ~]# sort -t: -k3 -n /etc/passwd | tail -10 | tr ‘a-z’ ‘A-Z’ > /tmp/maxusers.txt

[root@localhost ~]# cat /tmp/maxusers.txt

MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN

OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN

GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN

FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN

SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN

DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN

POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN

NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN

SYSTEMD-NETWORK:X:192:192:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN

POLKITD:X:999:997:USER FOR POLKITD:/:/SBIN/NOLOGIN

 

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

[root@localhost ~]# ifconfig ens33 | egrep -o ‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.?){4}’

192.168.43.191

255.255.255.0

192.168.43.255

[root@localhost ~]# ifconfig ens33 | egrep -o ‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.?){4}’ | head -1

192.168.43.191

 

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

[root@localhost ~]# find /etc -name “*.conf” | tr ‘a-z’ ‘A-Z’ > /tmp/etc.conf

[root@localhost ~]# cat /tmp/etc.conf

/ETC/OPENLDAP/LDAP.CONF

……

 

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

[root@localhost ~]# ls /var | wc -l

 

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

[root@localhost ~]# sort -t: -k3 -n /etc/group | head

root:x:0:

bin:x:1:

daemon:x:2:

sys:x:3:

adm:x:4:

tty:x:5:

disk:x:6:

lp:x:7:

mem:x:8:

kmem:x:9:

[root@localhost ~]# sort -t: -k3 -n /etc/group | head | cut -d: -f1

root

bin

daemon

sys

adm

tty

disk

lp

mem

kmem

 

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

[root@localhost ~]# cat /etc/fstab /etc/issue

 

#

# /etc/fstab

# Created by anaconda on Thu Nov 30 17:46:50 2017

#

# 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=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /?????????????????????? ext4??? defaults??????? 1 1

UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot?????????????????? ext4??? defaults??????? 1 2

UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap??????????????????? swap??? defaults??????? 0 0

\S

Kernel \r on an \m

 

[root@localhost ~]# cat /etc/fstab /etc/issue > /tmp/etc.test

[root@localhost ~]# cat /tmp/etc.test

 

#

# /etc/fstab

# Created by anaconda on Thu Nov 30 17:46:50 2017

#

# 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=c7d8f391-9c0a-4a23-8b2f-f203b303d7c5 /?????????????????????? ext4??? defaults??????? 1 1

UUID=8c4f6d0e-5c4d-4971-b776-7728ffa0a791 /boot?????????????????? ext4??? defaults??????? 1 2

UUID=601d68f6-bf3c-4e01-9e03-c000bce30829 swap??????????????????? swap??? defaults??????? 0 0

\S

Kernel \r on an \m

 

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

用戶和組1

groupadd——? 添加組? ???

命令格式——groupadd [選項] group_name

-g GID:指定GID;默認是上一個組的GID+1;

-r: 創建系統組;

實例

建立一個新組,并設置組ID加入系統:

groupadd -g 366 linuxde

此時在/etc/passwd文件中產生一個組ID(GID)是366的項目

 

groupmod——? 修改組屬性? ???

命令格式——groupmod [選項] GROUP

-g GID:修改GID;

-n new_name:修改組名;

 

groupdel——? 刪除組? ???

命令格式——groupdel [選項] GROUP

groupadd damon //創建damon工作組

groupdel damon //刪除這個工作組

 

useradd——? 創建用戶? ???

命令格式——useradd [選項] 登錄名

-u, –uid UID:指定UID;

-g, –gid GROUP:指定基本組ID,此組得事先存在;

-G, –groups GROUP1[,GROUP2,…[,GROUPN]]]:指明用戶所屬的附加組,多個組之間用逗號分隔;

-c, –comment COMMENT:指明注釋信息;

-d, –home HOME_DIR:以指定的路徑為用戶的家目錄;通過復制/etc/skel此目錄并重命名實現;指定的家目錄路徑如果事先存在,則不會為用戶復制環境配置文件;

-s, –shell SHELL:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;

-r, –system:創建系統用戶;

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

[root@localhost ~]# cat /etc/login.defs

 

#QMAIL_DIR????? Maildir

MAIL_DIR??????? /var/spool/mail #創建用戶時,要在目錄/var/spool/mail中創建一個用戶mail文件

#MAIL_FILE????? .mail

# Password aging controls:

#?????? PASS_MAX_DAYS?? Maximum number of days a password may be used.

#?????? PASS_MIN_DAYS?? Minimum number of days allowed between password changes.

#?????? PASS_MIN_LEN??? Minimum acceptable password length.

#?????? PASS_WARN_AGE?? Number of days warning given before a password expires.

PASS_MAX_DAYS?? 99999 #一個密碼最長可以使用的天數

PASS_MIN_DAYS?? 0 #更換密碼的最小天數

PASS_MIN_LEN??? 5 #密碼的最小長度

PASS_WARN_AGE?? 7 #密碼失效前提前多少天開始警告

# Min/max values for automatic uid selection in useradd

UID_MIN????????????????? 1000 #最小UID為1000,也就是說添加用戶時,UID從1000開始分配

UID_MAX???????????????? 60000 #最大UID為60000

# System accounts

SYS_UID_MIN?????????????? 201 #系統用戶UID最小為201

SYS_UID_MAX?????????????? 999 #系統用戶UID最大為999

# Min/max values for automatic gid selection in groupadd

GID_MIN????????????????? 1000 #GID的范圍為1000-60000。同上面UID情況

GID_MAX???????????????? 60000

# System accounts

SYS_GID_MIN?????????????? 201 #系統GID的范圍是201-999

SYS_GID_MAX?????????????? 999

# useradd command line.

CREATE_HOME???? yes #是否創建家目錄,默認要求創建;可用-m參數控制

# The permission mask is initialized to this value. If not specified,

# the permission mask will be initialized to 022.

UMASK?????????? 077 #默認權限

# This enables userdel to remove user groups if no members exist.

USERGROUPS_ENAB yes #刪除用戶同時刪除用戶組

# Use SHA512 to encrypt password.

ENCRYPT_METHOD SHA512 #SHA512密碼加密

 

/etc/skel目錄一般是存放用戶啟動文件的目錄,這個目錄是由root權限控制,當我們添加用戶時,這個目錄下的文件自動復制到新

添加的用戶的家目錄下;/etc/skel 目錄下的文件都是隱藏文件,也就是類似.file格式的;我們可通過修改、添加、刪除/etc/skel目

錄下的文件,來為用戶提供一個統一、標準的、默認的用戶環境

/etc/skel 目錄下的文件,一般是我們用useradd 和adduser 命令添加用戶(user)時,系統自動復制到新添加用戶(user)的家

目錄下;如果我們通過修改 /etc/passwd 來添加用戶時,我們可以自己創建用戶的家目錄,然后把/etc/skel 下的文件復制到用戶

的家目錄下,然后要用chown 來改變新用戶家目錄的屬主

 

useradd -D:顯示創建用戶的默認配置;

useradd -D 選項: 修改默認選項的值;

修改的結果保存于/etc/default/useradd文件中;

通過useradd 添加用戶時的規則文件;

# useradd defaults file

GROUP=100

HOME=/home? 注:把用戶的家目錄建在/home中;

INACTIVE=-1? 注:是否啟用帳號過期停權,-1表示不啟用;

EXPIRE=?? 注:帳號終止日期,不設置表示不啟用;

SHELL=/bin/bash? 注:所用SHELL的類型;

SKEL=/etc/skel?? 注: 默認添加用戶的目錄默認文件存放位置;也就是說,當我們用adduser添加用戶時,用戶家目錄下的文件,都是從這個目錄中復制過去的;

示例

創建用戶gentpp,附加組為bin和root,默認shell為/bin/csh,注釋信息為”Gentoo Distribution”

[root@localhost ~]# useradd gentpp -G bin,root -s /bin/csh -c “Gentoo Distribution”

[root@localhost ~]# cat /etc/passwd | tail -n 1

gentpp:x:1000:1000:Gentoo Distribution:/home/gentpp:/bin/csh

[root@localhost ~]# id gentpp

uid=1000(gentpp) gid=1000(gentpp) groups=1000(gentpp),0(root),1(bin)

實例

新建用戶加入組:

useradd –g sales jack –G company,employees //-g:加入基本組、-G:加入附加組

建立一個新用戶賬戶,并設置ID:

useradd caojh -u 544

需要說明的是,設定ID值時盡量要大于500,以免沖突。因為Linux安裝后會建立一些特殊用戶,一般0到499之間的值留給bin、mail這樣的系統賬號

 

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:解鎖用戶的密碼;

示例

修改gentpp的默認shell和描述信息

[root@localhost ~]# usermod -s /bin/sh gentpp

[root@localhost ~]# cat /etc/passwd | tail -n 1

gentpp:x:1000:1000:Gentoo Distribution:/home/gentpp:/bin/sh

 

userdel——? 刪除用戶? ???

命令格式——userdel [選項] 登錄

-r:刪除用戶時一并刪除其家目錄

 

練習1:創建用戶gentoo,UID為4001,基本組為gentoo,附加組為distro(GID為5000)和peguin(GID為5001);

[root@localhost ~]# groupadd -g 5000 distro

[root@localhost ~]# groupadd -g 5001 penguin

[root@localhost ~]# useradd gentoo -u 4001 -G distro,penguin

[root@localhost ~]# tail -1 /etc/passwd

gentoo:x:4001:4001::/home/gentoo:/bin/bash

[root@localhost ~]# tail -3 /etc/group

distro:x:5000:gentoo

penguin:x:5001:gentoo

gentoo:x:4001:

 

練習2:創建用戶fedora,其注釋信息為”Fedora Core”,默認shell為/bin/tcsh;

[root@localhost ~]# useradd fedora -s /bin/tcsh -c “Fedora Core”

[root@localhost ~]# tail -1 /etc/passwd

fedora:x:4002:4002:Fedora Core:/home/fedora:/bin/tcsh

 

練習3:修改gentoo用戶的家目錄為/var/tmp/gentoo;要求其原有文件仍能被用戶訪問;

[root@localhost ~]# usermod -d /var/tmp/gentoo -m gentoo

 

練習4:為gentoo新增附加組netadmin;

[root@localhost ~]# groupadd netadmin

[root@localhost ~]# usermod -a -G netadmin gentoo

[root@localhost ~]# id gentoo

uid=4001(gentoo) gid=4001(gentoo) groups=4001(gentoo),5000(distro),5001(penguin),5002(netadmin)

 

 

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

示例

[root@localhost ~]# echo “123456” | passwd –stdin gentoo

Changing password for user gentoo.

passwd: all authentication tokens updated successfully.

[root@localhost ~]# echo “1357246” | passwd –stdin gentoo &> /dev/null

[root@localhost ~]# echo $?

0

 

gpasswd——? 組密碼? ???

命令格式——gpasswd [選項] group

組密碼文件:/etc/gshadow

-a USERNAME:向組中添加用戶

-d USERNAME:從組中移除用戶

 

newgrp——? 臨時切換指定的組為基本組? ???

命令格式——newgrp [-] [group]

-: 會模擬用戶重新登錄以實現重新初始化其工作環境

使用edit退出

 

chage——? 更改用戶密碼過期信息? ???

命令格式——chage [選項] 登錄名

-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。

-M:密碼保持有效的最大天數。

-w:用戶密碼到期前,提前收到警告信息的天數。

-E:帳號到期的日期。過了這天,此帳號將不可用。

-d:上一次更改的日期。

-i:停滯時期。如果一個密碼已過期這些天,那么此帳號將不可用。

-l:例出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。

 

id——? 顯示用戶的真和有效ID?

???

命令格式——id [OPTION]… [USER]

-u: 僅顯示有效的UID;

-g: 僅顯示用戶的基本組ID;

-G:僅顯示用戶所屬的所有組的ID;

-n: 顯示名字而非ID;

示例

[root@localhost ~]# id gentpp

uid=1000(gentpp) gid=1000(gentpp) groups=1000(gentpp),0(root),1(bin)

[root@localhost ~]# id -u gentpp

1000

[root@localhost ~]# id -g gentpp

1000

[root@localhost ~]# id -G gentpp

1000 0 1

[root@localhost ~]# id -nG gentpp

gentpp root bin

 

su——? 切換用戶? ??switch user

登錄式切換:會通過讀取目標用戶的配置文件來重新初始化

su – USERNAME

su -l USERNAME

非登錄式切換:不會讀取目標用戶的配置文件進行初始化

su USERNAME

 

注意:管理員可無密碼切換至其它任何用戶;

-c ‘COMMAND’:僅以指定用戶的身份運行此處指定的命令

su – a -c ‘whoami’

 

(1)、創建組distro,其GID為2016;

[root@localhost ~]# groupadd -g 2016 distro

[root@localhost ~]# tail -1 /etc/group

distro:x:2016:

 

(2)、創建用戶mandriva, 其ID號為1005;基本組為distro;

[root@localhost ~]# useradd mandriva -u 1005 -g distro

[root@localhost ~]# id mandriva

uid=1005(mandriva) gid=2016(distro) groups=2016(distro)

 

(3)、創建用戶mageia,其ID號為1100,家目錄為/home/linux;

[root@localhost ~]# useradd mageia -u 1100 -d /home/linux

[root@localhost ~]# tail -n 1 /etc/passwd

mageia:x:1100:1100::/home/linux:/bin/bash

 

(4)、給用戶mageia添加密碼,密碼為mageedu;

[root@localhost ~]# echo “mageedu” | passwd –stdin mageia

Changing password for user mageia.

passwd: all authentication tokens updated successfully.

[root@localhost ~]# tail -1 /etc/shadow

mageia:$6$p2GTrIVS$lsnXrakfyBgdIKKCtnZH5hhDr4MNOik/pZDRiOXtP5hG3g.qR0A2dKXDTUj8vvgdKi.7ARnDWMeD99V3CrjmA1:17516:0:99999:7:::

 

(5)、刪除mandriva,但保留其家目錄;

[root@localhost ~]# userdel mandriva

 

(6)、創建用戶slackware,其ID號為2002,基本組為distro,附加組peguin;

[root@localhost ~]# groupadd penguin

[root@localhost ~]# useradd slackware -u 2002 -g distro -G penguin

[root@localhost ~]# id slackware

uid=2002(slackware) gid=2016(distro) groups=2016(distro),5001(penguin)

 

(7)、修改slackware的默認shell為/bin/tcsh;

[root@localhost ~]# usermod slackware -s /bin/tcsh

[root@localhost ~]# tail -1 /etc/passwd

slackware:x:2002:2016::/home/slackware:/bin/tcsh

 

(8)、為用戶slackware新增附加組admins;

[root@localhost ~]# groupadd admins

[root@localhost ~]# usermod -a -G admins slackware

[root@localhost ~]# id slackware

uid=2002(slackware) gid=2016(distro) groups=2016(distro),5001(penguin),5003(admins)

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90189

(0)
N28_noonN28_noon
上一篇 2017-12-16 19:52
下一篇 2017-12-17

相關推薦

  • GOPS 2016全球運維大會 上海站

    GOPS 2016全球運維大會 ? 上海站已經圓滿落幕,最新GOPS大會推薦:GOPS2017全球運維大會 ? 深圳站 基本信息: GOPS2017全球運維大會 ? 深圳站 時間:2017-04-21 08:00:00 至 2017-04-22 18:00:00結束 地點:深圳    會議規模:5000人 會議詳情:http://www.…

    系統運維 2016-09-07
  • 做有高薪有逼格的運維工程師,不會Linux是沒有前途的!

    作為互聯網的幕后英雄,運維工程師長期隱匿在大眾認知范圍之外,關于運維的討論仍舊是一片無人涉足的荒漠。在某知名行業研究調查結果中,非互聯網從業者對于運維相關問題的回復有三個高頻詞匯是:不知道、沒聽過、網管。當調查人員告訴他們科幻電影中展示黑客高超技巧時的命令行界面正是大多數運維工程師每日工作環境時,他們發出極其一致的驚嘆。 相對于普羅大眾的一無所知,技術圈對運…

    2017-09-08
  • 第10天:程序包,腳本,sed

    http://note.youdao.com/yws/public/redirect/share?id=b9432a76ff1180b42e01f6eb7c9fc90e&type=false

    Linux干貨 2016-08-18
  • 07程序包管理器簡介

    源代碼命名方式,name-version.tar.gz|bz2|xz,    –>version:major.minor.release 要將一個源代碼程序安裝到Linux系統上,一般有兩個方法。 1、找到源代碼,手動編譯安裝。解壓,./configure  –> make –&g…

    Linux干貨 2016-11-03
  • sed簡介及常見用法

    sed是一個文本流處理器,配合正則表達式用可以實現很多文本處理操作。 和grep一樣,sed是一行一行的處理的。sed處理文本時,首先會將源文件復制一份到內存中,然后將文本一行一行拿到模式空間內進行操作,最后輸出到標準輸出,即屏幕上。 在模式空間中,每一行都會根據用戶給的條件進行匹配,匹配到了進行編輯后輸出,沒有匹配到,直接輸出到標準輸出。sed除了模式空間…

    2018-01-04
  • Shell腳本編程中作業

    一、作業: 1、1、編寫服務腳本/root/bin/testsrv.sh,完成如下要求 (1) 腳本可接受參數:start, stop, restart, status (2) 如果參數非此四者之一,提示使用格式后報錯退出 (3) 如是start:則創建/var/lock/subsys/SCRIPT_NAME, 并顯示“啟動成功” 考慮:如果事先已經啟動過一…

    Linux干貨 2016-08-24

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-01-07 16:19

    贊~實驗步驟的每一步都描述出來,對學習理解有很大幫助~中間的腦圖總結的知識點也非常到位,非常贊的一篇~加油

欧美性久久久久