2018年8月2日第五节课笔记

 

 

2.23/2.24/2.25 find命令

2.26 文件名后缀

一、find命令

搜索工具 which :用于查找可执行文件的绝对路径;

[root@linux-151 ~]# which lsalias ls='ls --color=auto'

/usr/bin/ls

whereis:通过预先生成的一个文件列表库查找与给出的文件名相关的文件;

格式: whereis [选项] 文件名

-b:只查找二进制文件

-m:只查找帮助文件

-s:只查找源代码文件

[root@linux-151 ~]# whereis -b ls

ls: /usr/bin/ls

[root@linux-151 ~]# whereis ls

ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

locate:和whereis类似,也是通过查找预先生成的文件列表库来查找文件在哪里,后面直接跟文件名;需要安装mlocate软件包:

[root@linux-151 ~]# yum install -y mlocate

[root@linux-151 ~]# updatedb

[root@linux-151 ~]# locate yum.log

/var/log/yum.log

安装好后,第一次运行locate会报错,需要运行updatedb命令立即生成或者更新这个库文件;默认情况下这个库每周更新一次;locate不适合精准查找。

 

find命令

格式:find [路径] [参数]

-type 文件类型:f(文件)d(目录)l(软链接)s(sock)d(块设备)c(串口设备键盘鼠标等)

-name 文件名

-size 文件大小(10k;10M等)

-mmin +- 分钟数

-inum 跟inode,通过inode来查找一个文件的硬链接

-o 或者

-exec <执行指令>:假设find指令的回传值为True,就执行该指令。

-atime +n/-n 表示访问或执行时间大于或小于n天的文件。

-ctime +n/-n 表示更改inode属性(如更改所有者,权限或者链接)的时间大于或小于n天的文件。

-mtime +n/-n 表示创建或者修改文件时间大于或小于n天的文件,该参数用得最多

-1 小于1天;1天以内

+1 大于1天;1天以前

常用

不能等于1

例子:

  • 查找1天内创建或修改的后缀名为.conf的文件

[root@linux-151 ~]# find /etc/ -type f -mtime -1 -name "*.conf"

/etc/resolv.conf

  • 查找root目录下1天内创建或修改的文件

[root@linux-151 ~]# find /root/ -type f -mtime -1/root/.bash_history

/root/321.txt

  • 查找root目录下10分钟内创建的文件

[root@linux-151 ~]# find /root/ -type f -mmin -10

/root/11.txt

  • 查找root目录下10分钟创建或修改的文件,并且显示出具体修改时间;

[root@linux-151 ~]# find /root/ -type f -mmin -10 -exec ls -l {} \;

-rw-r--r-- 1 root root 0 3 30 22:03 /root/11.txt

tips:{}表示前面列出来的文件,\脱意符号,;换行符

  • 查找目录/root/下1天内修改的文件,并且备份一份。

[root@linux-151 ~]# find /root/ -type f -mtime -1 -exec cp {} {}.bak \;

[root@linux-151 ~]# ls -al /root/

总用量 84

dr-xr-x---. 4 root root 288 2月 27 22:13 .

dr-xr-xr-x. 17 root root 265 2月 19 15:07 ..

-rw-r--r-- 1 root root 0 2月 27 22:03 11.txt-rw-r--r-- 1 root root 0 2月 27 22:13 11.txt.bak

lrwxrwxrwx 1 root root 9 2月 27 01:12 12 -> /tmp/111/

drwxr-xr-x 2 root root 6 2月 27 22:03 123

-rw-------. 2 root root 0 2月 17 03:40 1.log-rw-r--r-- 1 root root 16816 2月 27 01:31 321.txt-rw-r--r-- 1 root root 16816 2月 27 22:13 321.txt.bak-rw-------. 1 root root 1422 2月 17 03:51 anaconda-ks.cfg-rw-------. 1 root root 6339 2月 27 01:40 .bash_history-rw------- 1 root root 6339 2月 27 22:13 .bash_history.bak-rw-r--r--. 1 root root 18 3月 29 2018 .bash_logout-rw-r--r--. 1 root root 176 3月 29 2018 .bash_profile-rw-r--r--. 1 root root 176 3月 29 2018 .bashrc-rw-r--r--. 1 root root 100 3月 29 2018 .cshrc-rw------- 1 root root 41 2月 25 00:48 .lesshst

drwx------. 2 root root 80 2月 19 17:04 .ssh

-rw-r--r--. 1 root root 129 3月 29 2018 .tcshrc

  • 查看root目录下小于6k的文件,并且列出它具体的大小

[root@linux-151 ~]# find /root/ -type f -size -6k -exec ls -lh {} \;

-rw-r--r--. 1 root root 18 3月 30 2018 /root/.bash_logout-rw-r--r--. 1 root root 176 3月 30 2018 /root/.bash_profile-rw-r--r--. 1 root root 176 3月 30 2018 /root/.bashrc-rw-r--r--. 1 root root 100 3月 30 2018 /root/.cshrc-rw-r--r--. 1 root root 129 3月 30 2018 /root/.tcshrc-rw-------. 1 root root 1.4K 2月 17 03:51 /root/anaconda-ks.cfg-rw-r--r--. 1 root root 806 2月 18 19:41 /root/.ssh/authorized_keys-rw-r--r-- 1 root root 176 2月 19 16:24 /root/.ssh/known_hosts-rw------- 1 root root 1.7K 2月 19 17:04 /root/.ssh/id_rsa-rw-r--r-- 1 root root 396 2月 19 17:04 /root/.ssh/id_rsa.pub-rw------- 1 root root 41 2月 25 00:48 /root/.lesshst-rw-------. 2 root root 0 2月 17 03:40 /root/1.log-rw-r--r-- 1 root root 0 2月 27 22:03 /root/11.txt-rw-r--r-- 1 root root 0 2月 27 22:13 /root/11.txt.bak

  • 通过inode来查找一个文件的硬链接;

[root@linux-151 ~]# ls -i 1.log8388681 1.log

[root@linux-151 ~]# find -inum 8388681

./1.log

[root@linux-151 ~]# find / -inum 8388681

/root/1.log

/tmp/yum.log

先ls -l  查看 文件位有2 说明2个相同INODE号,然后ls -i 文件 查看号最后find / -inum 8388681 找出来

二、 文件名后缀

stat命令可以列出文件的atime,mtime,ctime;

[root@linux-128 ~]# stat 11.txt

文件:"11.txt"

大小:0 块:0 IO 块:4096 普通空文件

设备:803h/2051d Inode:16799023 硬链接:1

权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)

最近访问:2018-03-30 22:13:47.084544630 +0800 //atime

最近更改:2018-03-30 22:03:41.825691647 +0800 //mtime

最近改动:2018-03-30 22:03:41.825691647 +0800 //ctime

创建时间:-

注:linux文件后缀名 在linux系统中,文件的后缀名没有具体的意义,加或者不加都无所谓。

Access: 2015-03-26 17:41:11.318175271 +0800    最近访问

Modify: 2015-03-26 17:40:05.876175331 +0800   更改文件内容时间 

Change: 2015-03-26 17:40:05.876175331 +0800   更改iode时间

atime,最近访问 即文件的最近的一次访问时间,+n意思为查找n天以前的文件,-n为查找n天以内的文件

mtime即文件数据最新的修改时间,指的就是文件内容的最新修改时间,注意和-ctime区分;

ctime; 文件状态最新改变的时间。文件有一些个基本的属性,权限,用户,组,大小,修改时间等,只要是这些信息变化了,那么ctime都会发生变化

find /etc/ -type f -o -mtime +1 -o -name "*.conf"

-1 小于1天;1天以内

+1 大于1天;1天以前

查找 /etc 指定文件类型  或者 文件修改时间 大于1天 或者名字是.*conf  结尾

find /root/ -type f -mmin -60   小知识 

一小时内修改的文件

find /tmp/ -type f -mmin -60 -exec ls -l {} \;

-rw-r--r--. 1 root root 6 7月  31 15:34 /tmp/1.txt

-rw-r--r--. 1 root root 13 7月  31 15:38 /tmp/2.txt

-rw-r--r--. 1 root root 16 7月  31 15:38 /tmp/3.txt

查找tmp目录下 文件 60分钟内的文件,而且要显示出来  {} /tmp/1.txt  /tmp/2.txt  /tmp/3.txt 都包括里\托意 的意思

find /tmp/ -type f -mmin -150 -exec mv {} {}.bak \;

找150分内修改的文件并且改名. 后缀

find /root/ -type f -size -10k -exec ls -lh {} \;     M兆

找root下 文件 小于 10K 并且 显示出来

find / -name "*.log" -type f +mtime 365 -exec rm -rf { } \;

找.log文件 365天以前的文件并且删

四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为:

find path -option [ -print ] [ -exec -ok command ] { } /;

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目

录。

print

find命令将匹配的文件输出到标准输出。

exec

find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式

'command' { } \;,注意{ }\;之间的空格。

ok

exec

的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell

令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

#print

将查找到的文件输出到标准输出

#exec

command {} \; —–将查到的文件执行command操作,{} 之间有

空格

option 选项:

name

filename #查找名为filename的文件

perm

#按执行权限来查找

user

username #按文件属主来查找

group

groupname #按组来查找

mtime

n

+n #按文件更改时间来查找文件,n

n天以内,+nn天以前

atime

n

+n #按文件访问时间来查GIN: 0px">

ctime

n

+n #按文件创建时间来查找文件,n

n天以内,+nn天以前

nogroup

#查无有效属组的文件,即文件的属组在/etc/groups中不存在

nouser

#查无有效属主的文件,即文件的属主在/etc/passwd中不存

newer

f1 !f2 找文件,n

n天以内,+nn天以前

ctime

n

+n #按文件创建时间来查找文件,n

n天以内,+nn天以前

nogroup

#查无有效属组的文件,即文件的属组在/etc/groups中不存在

nouser

#查无有效属主的文件,即文件的属主在/etc/passwd中不存

newer

f1 !f2 #查更改时间比f1新但比f2旧的文件

type

b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件

size

n[c] #查长度为n[n字节]的文件

depth

#使查找在进入子目录前先行查找完本目录

fstype

#查更改时间比f1新但比f2旧的文件

type

b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件

size

n[c] #查长度为n[n字节]的文件

depth

#使查找在进入子目录前先行查找完本目录

fstype

#查位于某一类型文件系统中的文件,这些文件系统类型通常可

/etc/fstab中找到

mount

#查文件时不跨越文件系统mount

follow

#如果遇到符号链接文件,就跟踪链接所指的文件

cpio

%; #查位于某一类型文件系统中的文件,这些文件系统类型通常可

/etc/fstab中找到

mount

#查文件时不跨越文件系统mount

follow

#如果遇到符号链接文件,就跟踪链接所指的文件

cpio

#对匹配的文件使用cpio命令,将他们备份到磁带设备中

prune

#忽略某个目录

(1)Find工具-name参数案列:

find /data/ -name "*.txt" #查找/data/目录以.txt结尾的文件;

find /data/ -name "[A-Z]*" #查找/data/目录以大写字母开头的文件;

find /data/ -name "test*" #查找/data/目录以test开头的文件;

(2)Find工具-type参数案列:

find /data/ -type d #查找/data/目录下的文件夹;

find /data/ ! -type d #查找/data/目录下的非文件夹;

find /data/ -type l #查找/data/目录下的链接文件。

find /data/ -type d|xargs chmod 755 -R #查目录类型并将权限设置为755;

find /data/ -type f|xargs chmod 644 -R #查文件类型并将权限设置为644;

(3)Find工具-size参数案列:

find /data/ -size +1M #查文件大小大于1Mb的文件;

find /data/ -size 10M #查文件大小为10M的文件;

find /data/ -size -1M #查文件大小小于1Mb的文件;

(4)Find工具-perm参数案列:

find /data/ -perm 755 #查找/data/目录权限为755的文件或者目录;

find /data/ -perm -007 #与-perm 777相同,表示所有权限;

find /data/ -perm +644 #文件权限在644以上;

(5)Find工具-mtime参数案列:

atime,access time 文件被读取或者执行的时间;

ctime,change time 文件状态改变时间;

mtime,modify time 文件内容被修改的时间;

find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;

find /data/ -mtime +30 -name "*.log" #查找30天以前的log文件;

find /data/ -mtime 30 -name "*.txt"#查找第30天的log文件;

find /data/ -mmin +30-name "*.log" #查找30分钟以前修改的log文件;

find /data/ -

-30 -name "*.txt" #查找30分钟以内被访问的log文件;

find /data/ -cmin 30 -name "*.txt"#查找第30分钟改变的log文件。

(6)Find工具参数综合案列:

#查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录;

find /data/ -name "*.log" –type f -size +10k -exec cp {} /tmp/ /;

#查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件;

find /data/ -name "*.log" –type f -size +10k -m perm 644 -exec rm –rf {} /;

#查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;

find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ /;

后续继续补充

二、 文件名后缀

*.php ­­­­­­这个大家都知道吧,是能用php语言解释器进行解释,能用浏览器打开的文件;

*.so ­­­­­­­这类是库文件;

*.doc *.obt ­­­­­­­­这是OpenOffice 能打开的文件;

.bz2 ­­­­­­bzip2的压缩文件

.gz ­­­­­­gzip的压缩文件

.tar ­­­­­­tar打包文件(是包文件不是压缩文件)

.tbz­­­­­­tar打包并用bzip压缩文件

.tgz­­­­­tar打包并用gzip压缩的文件

.au ­­­­­audio文件

.gif ­­­­­gif图象文件

.html/.htm­­­­­HTML文件

.jpg­­­­­JPEG图象文件

.pdf­­­­­­电子文档(PDF格式的)

.png­­­­­PNG图象文件

.ps­­­­­­postscinpt文件(打印格式文件)

.txt­­­­­­纯文本文件

.wav­­­­­audio文件

.xpm­­­­­图象文件

.conf­­­­­­­配置文件

.lock­­­­­­­LOCK文件(用来判断一个文件或设备是否被使用)

.rpm­­­­­­REDHATPackage.Manager文件(套件包或软件包)

.c ­­­­­­­C源程序代码文件

.cpp­­­­­­C++源程序代码文件

.h ­­­­­­­C或C++程序的头文件

.o­­­­­­程序目标文件

.pl­­­­­­perl脚本文件

.so­­­­­类库文件

 

  

 

三周第一次课

2.27linux和windows互传文件

3.1 用户配置文件和密码配置文件

3.2 用户组管理

3.3 用户管理

一、linux和windows互传文件

安装lrzsz包

命令 # yum install -y lrzsz

[root@linux-151 ~]# yum install -y lrzsz

已加载插件:fastestmirror

......

正在安装 : lrzsz-0.12.20-36.el7.x86_64 1/1

验证中 : lrzsz-0.12.20-36.el7.x86_64 1/1

已安装:

lrzsz.x86_64 0:0.12.20-36.el7

完毕!

Linux传文件给Windows

# sz 文件名

Windows传文件给Linux

# rz

注:传送的文件所在的位置为Linux的当前目录

二、 用户配置文件和密码配置文件

用户配置文件 /etc/passwd

[root@linux-151 ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

nobody:x:99:99:Nobody:/:/sbin/nologin

systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin

systemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

chrony:x:997:995::/var/lib/chrony:/sbin/nologinwuzhou:x:1000:1000::/home/wuzhou:/bin/bash

  • 这里是列表文本/etc/passwd由“:”分割成7个字段

  1. 第一段:用户名,root是超级用户

  2. 第二段:密码

  3. 第三段:用户的UID,root的uid是0,1-999是系统用户的uid或者预留的,普通用户从1000开始;

  4. 第四段:用户组gid;这个字段对应着/etc/group中的一条记录;

  5. 第五段:注释说明,没有实际意义;

  6. 第六段:用户的家目录;

  7. 第七段:用户的shell;/bin/bash:用户可以登录系统,/sbin/nologin 不可以登录系统。 注意:root和普通用户默认的是 /bin/bash;如果想让一个用户不能登陆系统 可以在 vi/etc/passwd 修改。将/bin/bash 修改成/sbin/nologin

密码配置文件:/etc/shadow

[root@linux-151 ~]# cat /etc/shadowroot:$6$zl63r8d5$knNxU6YQDPktVmvQoB82o59nukoj8Kv8.88SfCMPEdLcoaFqwL9VsO0U8Bzh5dfEwP3CRXDU9hbQDhHL44bll/:17458:0:99999:7:::bin:*:17110:0:99999:7:::daemon:*:17110:0:99999:7:::adm:*:17110:0:99999:7:::lp:*:17110:0:99999:7:::sync:*:17110:0:99999:7:::shutdown:*:17110:0:99999:7:::halt:*:17110:0:99999:7:::mail:*:17110:0:99999:7:::operator:*:17110:0:99999:7:::games:*:17110:0:99999:7:::ftp:*:17110:0:99999:7:::nobody:*:17110:0:99999:7:::systemd-bus-proxy:!!:17455::::::systemd-network:!!:17455::::::dbus:!!:17455::::::polkitd:!!:17455::::::tss:!!:17455::::::postfix:!!:17455::::::sshd:!!:17455::::::chrony:!!:17455::::::lem:x:1000:1000::/home/lem:/bin/bash

  • /etc/shadow 存放密码的文件用“:”别冒号分割成9段

  1. 用户名

  2. 是密码 这里是*表示账号被锁定 !!表示账号密码为空 密码为空时不能登陆系统的

  3. 是从1970年1月1日到上次修改密码的时间

  4. 是多少天后可以修改密码, 如果设置1表示上次修改时间过1天后才能修改密码

  5. 是多少天后密码会过期 99999就相当于永远不会过期

  6. 是密码到期前报警期限,

  7. 是密码过期后多少天如果不修改密码,这个账号就会废掉

  8. 是账号的生命周期, 从创建账号开始到过期时间

  9. 是保留项

三、用户组管理

用户组文件 /etc/group

groupadd增加用户组

  • 增加用户组命令格式:groupadd [-g gid] groupname

例子:

[root@linux-151 ~]# groupadd grp1

[root@linux-151 ~]# tail -2 /etc/group

slocate:x:21:

grp1:x:1001:

  • -g选项:设置gid;gid默认从1000开始 自定义组ID创建组

[root@linux-151 ~]# groupadd -g 1003 grp2

[root@linux-151 ~]# tail -3 /etc/groupslocate:x:21:grp1:x:1001:grp2:x:1003:

删除组命令:groupdel

[root@linux-151 ~]# groupdel grp1

[root@linux-151 ~]# tail -3 /etc/grouplem:x:1000:

slocate:x:21: //刚才创建的用户grp1已经被删除

grp2:x:1003:

  • group有一种情况不能删除组:一个组里有很多用户,只要里面有一个用户,这个组就不能删除。

[root@linux-151 ~]# tail -3 /etc/passwdchrony:x:997:995::/var/lib/chrony:/sbin/nologinlem:x:1000:1000::/home/wuzhou:/bin/bashuser1:x:1001:1001::/home/user1:/bin/bash

[root@linux-151 ~]# groupdel user1

groupdel:不能移除用户“user1”的主组 //user1组里有个用户user1用户,所以删除不了; 如果想要删除用户组,必须先删除组里的所以用户,再删除用户组。

for((i=0;i<=10;i++)) do groupdel $i;done 批量删除

四、 用户管理

useradd 增加用户

  • -u 定义UID;普通用户uid从1000开始

  • -g 定义Gid

  • -d 定义家目录

  • -s 定义shell ; /bin/bash登陆,/sbin/nologin不允许登陆

  • -M 不建家目录

  • Useradd不加任何选项,直接跟用户名,这个会创建一个跟用户名同名的组(所创建的用户的uid会延续之前的uid向后顺延,gid会与uid同步,如果与uid同步的gid已被占用,则会往下顺延,例如创建的用户的uid为1007,但gid1007已被占用,则)。

[root@linux-151 ~]# useradd user2

[root@linux-151 ~]# tail -1 /etc/passwduser2:x:1002:1002::/home/user2:/bin/bash

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

user2:x:1002:

[root@linux-151 ~]# useradd -u 1004 -g 1005 -M -s /sbin/nolongin user3

useradd:“1005”组不存在

[root@linux-151 ~]# useradd -u 1004 -g 1003 -M -s /sbin/nolongin user3

[root@linux-151 ~]# tail -2 /etc/passwduser2:x:1002:1002::/home/user2:/bin/bashuser3:x:1004:1003::/home/user3:/sbin/nolongin

  • 注意:-g后面跟一个不存在的gid会报错;加上-M后,不会创建家目录,但是这里会显示出来家目录,但是在home下面是没有这个家目录文件的

[root@linux-151 ~]# cat /home/user3

cat: /home/user3: 没有那个文件或目录

[root@linux-151 ~]# ls /home

user1 user2 wuzhou

userdel 删除用户,但不会删除家目录

  • userdel -r 删除用户连带家目录一起删除。 例子:

[root@linux-151 ~]# userdel user2

[root@linux-151 ~]# ls /home

user1 user2 lem //user2的家目录还存在

[root@linux-151 ~]# userdel -r user1

[root@linux-151 ~]# ls /home

user2 lem //user1家目录已经删除

usermod命令 用户密码管理 mkpasswd命令

三周第二次课

3.4 usermod命令

3.5 用户密码管理

3.6 mkpasswd命令

一、 usermod命令

usermod 修用户的属性

  • -u 修改用户UID

  • -g 修改用户Gid

  • -d 修改用户家目录

  • -s 修改用户shell

  • -G 增加用户扩展组;一个用户可以属于多个组,但是gid只有一个,把用户gid的叫做组,其他组叫做扩展组。

  • -L 锁定一个用户登录

  • -U 解锁用户登录

例子:

[root@linux-151 ~]# usermod -u 1008 -g grp2 -d /home/lem -s /sbin/nologin user6

[root@linux-151 ~]# ls /home

user2 user5 user6 lem

[root@linux-151 ~]# ls /home/lem/

[root@linux-151 ~]# tail -1 /etc/passwduser6:x:1008:1003::/home/lem:/sbin/nologin

usermod -G 扩展组;-G后面可以跟多个组

[root@linux-151 ~]# usermod -G user6 user6[root@linux-151 ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1008(user6)

[root@linux-151 ~]# usermod -G user5 user6[root@linux-151 ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1006(user5)

[root@linux-151 ~]# usermod -G user5,user6 user6[root@linux-151 ~]# id user6uid=1008(user6) gid=1003(grp2) 组=1003(grp2),1006(user5),1008(user6)

usermod -g 后面只能跟一个组名

[root@linux-151 ~]# usermod -g user5,user6 user6

usermod:“user5,user6”组不存在

usermod -L 锁定用户

[root@linux-151 ~]# passwd user6

更改用户 user6 的密码 。

新的 密码:

无效的密码: 密码少于 8 个字符

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@linux-151 ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::

user3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:!!:17470:0:99999:7:::

user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::

//锁定user6

[root@linux-151 ~]# usermod -L user6

[root@linux-151 ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::

user3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:!!:17470:0:99999:7:::

user6:!$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::

注意:-L user6,查看密码文件的时候,user6密码前面多了一个感叹号,表示用户user6被锁定了;

usermod -U 解锁用户

[root@linux-151 ~]# usermod -U user6

[root@linux-151 ~]# tail -5 /etc/shadowlem:!!:17459:0:99999:7:::

user3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:!!:17470:0:99999:7:::

user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7::: //感叹号消失

注意:删除一个组,如果组里面有用户,是不能被删除的,但是这个组属于扩展组是可以删除的。

二、 用户密码管理

命令passwd:设置用户密码;后面不加用户名,默认修改当前用户的密码

[root@linux-128 ~]# passwd

更改用户 root 的密码 。

新的 密码:

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@linux-128 ~]# passwd user5

更改用户 user5 的密码 。

新的 密码:

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

注意:只有root用户才能修改其他用户的密码,普通用户只能修改自己的密码;

  • passwd有个选项也能锁定用户登录

  1. passwd –l 锁定用户

  2. passwd –u 解锁用户

[root@linux-128 ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::

user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::

[root@linux-128 ~]# head -4 /etc/shadowroot:$6$P0JCL/5p$GnTS9gjHEdrLAUam9rbUNScO9N8USlzbZylZrHt3CGSyv/yCOw2cxcc0B6ojFNB1yYYJD30cSJD4ZIKPVkiCX.:17470:0:99999:7:::

bin:*:17110:0:99999:7:::

daemon:*:17110:0:99999:7:::

adm:*:17110:0:99999:7:::

注意:*表示用户密码是锁定的,不能用,不能登录系统;!!表示密码是空的也不能登录;

passwd -l 密码锁定

[root@linux-128 ~]# passwd -l user5

锁定用户 user5 的密码 。

passwd: 操作成功

[root@linux-128 ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:!!$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::

user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:0:99999:7:::

user5的密码锁定后,密码前面多了2个叹号;

passwd -u 密码解锁

[root@linux-128 ~]# passwd -u user5

解锁用户 user5 的密码。

passwd: 操作成功

[root@linux-128 ~]# tail -4 /etc/shadowuser3:!!:17469:0:99999:7:::

user4:!!:17469:0:99999:7:::

user5:$6$KFjov3.A$I2kpQHNDMbvYNQzBv8dUeco/E2D0zUqWKrP.CalCF/kpVpuAwZ3C/.DUZHSSYiT6Hk1D7gLYg/HmSEv8krVxc.:17470:0:99999:7:::

user6:$6$tJJAc8/V$IRy04ujT7yV.9vI0c9cR9WgYLZx.LlVKp.Hu5WBeAG5Z0XuO8lvZ1FgL3yiEA.YrnfpD1.vljuzXZL7ljbMze1:17470:

passwd --stdin

passwd --stdin XXX(用户名) 更改密码(密码为明文)

echo "xxxxxxx" |passwd --stdin XXX(用户名)

echo  "12345678"|passwd --stdin aming

输出“xxxxxxx”为XXX的明文密码

echo "xxxxxxx" |passwd –stdin username 

[root@linux-151 ~]# passwd --stdin user6

更改用户 user6 的密码 。

123123

passwd:所有的身份验证令牌已经成功更新。

[root@linux-151 ~]# echo "123456" |passwd --stdin user6

更改用户 user6 的密码 。

passwd:所有的身份验证令牌已经成功更新。

这个多用于脚本修改密码

[root@linux-151 ~]# echo -e "123456\nqweqwe"123456

qweqwe

echo -e可以使用换行符\n,这样相当于人工打了一次回车,也可以可以修改密码的。

[root@linux-151 ~]# echo -e "wz11223344%1\nwz11223344%1"|passwd user6

更改用户 user6 的密码 。

新的 密码:重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

echo -e "123456\n123456" |passwd aming

echo -e "wenwen4023\nwenwen4023" | passwd aming

echo  "12345678"|passwd --stdin aming

usermod -L passwd -l   都是锁定 但是没区别  一个锁定用户,一个锁定密码吗  一个锁定两个叹号  一个一个叹号

三、mkpasswd命令

mkpasswd用户生成密码;需要安装一个expect包

[root@linux-151 ~]# yum install -y expect

mkpasswd默认会生成一个9位数密码

[root@linux-151 ~]# mkpasswd91?uRIyuo

 mkpasswd -l 12 指定密码长度为12

  1. -s 1 指定特殊字符个数1

  2. -d 4 指定有4个数字

  3. -c 3 指定有3个小写

  4. -C 5 指定有5个大写

[root@linux-151 ~]# mkpasswd -l 12 -d 4 -s 0

xigSTsf0965d

 

 

su命令 sudo命令 限制root远程登录

 

一、su命令

  • 切换用户 命令su的格式:su – username;普通用户的su命令不加username时,就是切换到root用户

[lem@linux-151 ~]$ su -

密码:

上一次登录:三 4月 4 22:38:52 CST 2018pts/0 上

[lem@linux-151 ~]$ su - user7

密码:

[user7@linux-151 ~]$ pwd

/home/user7

  • su切换用户,加不加“-”都可以,但还是有区别的;不加“-”切换用户后,环境变量还是上一个用户的;

[root@linux-151 ~]# su lem

[lem@linux-151 root]$ pwd

/root

[lem@linux-151 root]$ echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

[lem@linux-151 root]$ exit

  • -号加上后会初始化当前用户的各种环境变量

[root@linux-151 ~]# su - lem

上一次登录:三 4月 4 22:42:05 CST 2018pts/0 上

[lem@linux-151 ~]$ pwd

/home/lem

[lem@linux-151 ~]$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/lem/.local/bin:/home/lem/bin

su - -c “命令” username

  • 指定某个用户去执行某个命令;

[root@linux-151 ~]# su - -c "touch /tmp/lem.111" lem

[root@linux-151 ~]# ls -l /tmp/lem.111

-rw-rw-r-- 1 lem lem 0 4月 4 22:50 /tmp/lem.111

root@linux-151 ~]# su - lem

上一次登录:三 4月 4 22:50:40 CST 2018pts/0 上

[lem@linux-151 ~]$ su - -c "touch /tmp/user7.111" user7

密码:

[lem@linux-151 ~]$ ls -l /tmp/user7.111

-rw-rw-r-- 1 user7 user7 0 4月 4 22:52 /tmp/user7.111

\\切换到用户user5时,提示错误,发现是家目录不对

[root@linux-151 ~]# su - user5su: 警告:无法更改到 /home/lem 目录: 权限不够

[lem@linux-151 ~]$ tail -5 /etc/passwd

user3:x:1004:1003::/home/user3:/sbin/nolonginuser4:x:1005:1003::/home/user4:/sbin/nolonginuser5:x:1007:1003::/home/wuzhou:/sbin/nologin

\\然后我们修改用户的家目录

[root@linux-151 ~]# usermod -d /home/user5 user5

\\再次切换用户,有提示这个帐户目前不可用,原因是家目录里面是空的

[root@linux-151 ~]# su - user5

上一次登录:三 4月 4 22:40:06 CST 2018pts/0 上

This account is currently not available.

[root@linux-151 ~]# ls /home/user5

  • Tips:/etc/skel/ 这个目录时家目录文件的模板,如果家目录没有这些文件,直接拷贝过去。

[root@linux-151 ~]# cp /etc/skel/.bash* /home/user5/

二、sudo命令

  • sudo可以使一个普通用户临时去执行root的一个命令或者脚本,通常情况下都是给普通用户授权root用户的身份;不使用su的原因是,su切换的root用户下,需要root的密码,告知密码很不安全;默认情况下只有root用户才能使用sudo命令,普通用户要想使用sudo命令,必须要root预先设定;

  • 使用visudo命令编辑配置文件/etc/sudoers,如果没有这个命令,需要用yum install -y sudo 找到下面内容

## Allow root to run any commands anywhere //允许root用户去运行所有的命令,在任何地方root ALL=(ALL) ALL命令

user7 ALL=(ALL) NOPASSWD: /usr/bin/ls,/usr/bin/cat //我们可以在下面添加一些用户

ALL=(ALL) 左边ALL 表示所有的登陆方式,远程,ip/ip段 (ALL)表示以所有的用户登陆;NOPASSWD: 不需要输入密码

visudo

第一 用户   第二 主机名 IP (指用户) 第三 所有的命令/usr/bin/ls  ALL所有

不知道用户命令是那个路径 可以 which 来查看

[root@linux-151 ~]# su - user7

上一次登录:三 4月 4 23:36:44 CST 2018pts/0 上

[user7@linux-151 ~]$ sudo ls /root/11.txt 12 1.log 321.txt.bak 工号.txt

11.txt.bak 123 321.txt anaconda-ks.cfg

例子:只允许普通用户账户登录,而普通用户登录后,不需要输入密码就能使用su切换到root账户下

在visudo后面添加下面命令:

User_Alias USER_SU = lem,user7 //做用户别名

Cmnd_Alias SU = /usr/bin/su //做命令别名

USER_SU ALL=(ALL) NOPASSWD: SU

[lem@linux-151 ~]$ sudo su - user7

上一次登录:三 4月 4 23:51:53 CST 2018pts/0 上

[user7@linux-151 ~]$ sudo su -

上一次登录:三 4月 4 23:55:41 CST 2018pts/0 上

[root@linux-151 ~]# whoami

root

三、 限制root远程登录

  /etc/ssh/sshd_config为sshd服务配置文件,默认允许root账户通过ssh远程登录linux。如果想要不允许root用户远程登录linux,具体操作方法:修改配置文件/etc/ssh/sshd_config,在文件中找到#PermitRootLogin yes 修改成PermitRootLogin no,保存后,重启sshd服务:

[root@linux-151 ~]# vi /etc/ssh/sshd_config[root@linux-151 ~]# systemctl restart sshd.service

重新打开一个窗口,提示错误了,root不能远程登录 

 

这个时候我们可以登录普通用户,然后使用sudo命令切换到root用户下

[lem@linux-151 ~]$ sudo su - root

上一次登录:四 4月 5 00:10:38 CST 2018从 192.168.0.151pts/2 上

扩展

sudo与su比较 http://www.apelearn.com/bbs/thread-7467-1-1.html

sudo配置文件样例  www.opensource.apple.com/source/sudo/sudo-16/sudo/sample.sudoers

sudo不错的教程 http://www.jianshu.com/p/51338e41abb7

sudo -i 也可以登录到root吗? http://www.apelearn.com/bbs/thread-6899-1-1.html

猜你喜欢

转载自blog.csdn.net/weixin_42213920/article/details/81410215