首页 > 代码库 > 004-用户、组、权限管理命令及bash配置文件、管道、重定向、grep

004-用户、组、权限管理命令及bash配置文件、管道、重定向、grep

l  1、用户管理命令

1.)创建用户命令

           useradd  [OPTIONS] USERNAME

                    -uUID):指定用户UID

                    -gGID):指定基本组

                    -G group,...):指定附加组

                    -c"COMMENT":指定注释信息

                    -dhome_dir):指定家目录/path/to/directory

                    -s:指定SHELL路径(/etc/shells指定了当前系统可用的安全shell

                    -m –k:强行为用户创建家目录

                    -M:不创建用户家目录 /etc/login.defs

                    -r:添加为系统用户

/etc/shells:指定了当前系统可用的安全shell

2.)删除用户命令userdel

userdel [option] USERNAME

-r: 同时删除用户的家目录

3.id:查看用户的帐号属性信息

-u -n:显示用户的用户名

-g -n:显示用户所属基本组的组名

-G -n:显示用户所属所有组的组名

  例:#id –g –n user1显示用户所属基本组的组名

4.finger 显示用户帐号信息

finger USERNAME

              ##finger需要单独安装

5.usermoduser modfiy):修改用户帐号属性

-u:修改用户UID

                -g:修改用户基本组GID必须事先存在的组

                -a -G:不使用-a选项,会覆盖此前的附加组;

                -c:注释信息

                -d -m:既指定新的家目录位置又移动此前的文件至新的家目录中

                -s:修改用户shell

                -l:更改登陆用户名

                -L:锁定帐号

                -U:解锁帐号

chsh: 修改用户的默认shell        例:#chsh user01

chfn:修改注释信息      例:#chfn user01

6.)密码管理:passwd [USERNAME]

                --stdin:从标准输入读取密码(主要用于脚本)

                -l:锁定用户

                -u:解锁用户

                -d: 删除用户密码

pwck:检查用户帐号完整性

2、组管理命令

1.groupadd:创建组

-g:指定GID

                -r:添加为系统组

2.groupmod:修改组信息

                -g:修改GID

                -n:修改组名

3.groupdel:删除组

4.gpasswd:为组设定密码

5.newgrp GRPNAME<-->登陆到一个新组 | exit退出

6.chage:改变配置

          -dlastday最近一次的修改时间

                -Eexpiredate过期时间

                -Iinactive):非活动时间

                -mmindays最短使用期限

                -Mmaxdays最长使用期限

                -Wwarndays警告时间

练习:

1、创建一个用户mandriva,其ID号为2002,基本组为distro(组ID3003),附加组为linux

# groupadd -g 3003 distro

# groupadd linux

# useradd -u 2002 -g distro -G linux mandriva

2、创建一个用户fedora,其全名为Fedora Community,默认shelltcsh

# useradd -c "Fedora Community" -s /bin/tcshfedora

3、修改mandrivaID号为4004,基本组为linux,附加组为distrofedora

# usermod -u 4004 -g linux -G distro,fedora mandriva

4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天;

# passwd -n 2 -x 50 fedora

5、将mandriva的默认shell改为/bin/bash;

usermod -s /bin/bash mandirva

6、添加系统用户hbase,且不允许其登录系统;

# useradd -r -s /sbin/nologin hbase

l  3linux管理权限命令

1.chown: 改变文件属主(只有管理员可以使用此命令)

# chown USERNAME file,...

                -R: 修改目录及其内部文件的属主

                --reference=/path/to/somefilefile,... 引用参考将后边文件属主/组和前边引用一样

2.chownUSERNAME.GRPNAME file,... /chown USERNAME:GRPNAME file,...

(两个意义一样)既更改属主,也改更属组

-R: 修改目录及其内部文件的属主及属组

3.# chgrp GRPNAMEfile,... 改变文件属组(只有管理员可以使用此命令)

                -R修改目录及其内部文件的属组

                --reference=/path/to/somefilefile,... 引用参考将后边文件属主/组和前边引用一样

4.)chmod: 修改文件的权限

1、修改三类用户的权限

chmod MODE file,...

                     -R递归

                     --reference=/path/to/somefilefile,...

2、修改某类用户或某些类用户权限:chmod 用户类别=MODE FILE…

uuser:表示属主

ggroup:表示属组

oother:表示其他用户

aall:表示所有

3、修改某类用户的某位或某些位权限:chmod 用户类别+|-MODE file,...

uuser:表示属主

ggroup:表示属组

oother:表示其他用户

aall:表示所有

练习:

1、新建一个没有家目录的用户openstack

# useradd -M openstack

2、复制/etc/skel/home/openstack

# cp -r /etc/skel /home/openstack

3、改变/home/openstack及其内部文件的属主属组均为openstack

# chown -R openstack:openstack /home/openstack

4/home/openstack及其内部的文件,属组和其它用户没有任何访问权限

# chmod -R go= /home/openstack

su - openstack

5.)umask:遮罩码

666-umask 文件

777-umask 目录

# umask 022管理员默认umask

# umask 002普通用户默认umask

文件默认不能具有执行权限,如果算得的结果中有执行权限,则将其权限加1

l  4、用户登陆

1.SHELL:站在用户登录的角度来说,SHELL的类型:

1、登录式shell: 正常通常某终端登录

                        su -USERNAME

                    su -lUSERNAME

2、非登录式shell:

                    su USERNAME

                    图形终端下打开命令窗口

                    自动执行的shell脚本

5bash的配置文件:

1.)全局配置

/etc/profile

/etc/profile.d/*.sh

/etc/bashrc

2.)个人配置

                ~/.bash_profile,

~/.bashrc

3.profile类的文件:

                设定环境变量

                运行命令或脚本

4.bashrc类的文件:

                设定本地变量

                定义命令别名

5.shell读取配置文件

           1.)登录式shell如何读取配置文件?

/etc/profile --> /etc/profile.d/*.sh--> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

2.)非登录式shell如何读取配置文件?

~/.bashrc --> /etc/basrc -->/etc/profile.d/*.sh

3.)登录式shell,配置文件及次序:

/etc/profile --> /etc/profile.d/*.sh--> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc

4.)非登录式shell

~/.bashrc --> /etc/bashrc -->/etc/profile.d/*.sh

l  6、管道和重定向:> < >> <<

1.I/O重定向

1>:输出重定向、覆盖输出

   强制覆盖输出,则使用 >|

               set–/+C:开启或关闭覆盖输出功能

禁止对已经存在文件使用覆盖重定向

2<:输入重定向

3>>:追加输出

<<Here Documen(在此处生成文档)

           42>: 重定向错误输出

2>>: 追加方式

           5&>: 重定向标准输出或错误输出至同一个文件

          注:/dev/null:数据黑洞-------(软件设备、bit bucket

2.|:管道

前一个命令的输出,作为后一个命令的输入

命令1 | 命令2 | 命令3 | ...

例:#echo “PASSWORD”| password –stdin USERNAME

3.tee:从标准输入读取数据,并且发送至标准输出和文件

              (将文件保存至文件中一份且输出至屏幕)

例:#echo“hello,world” | tee /tmp/hello.out

练习:

1、统计/usr/bin/目录下的文件个数;

# ls /usr/bin | wc -l

2、取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示;

# cut -d: -f7 /etc/passwd | sort -u

3、思考:如何显示/var/log目录下每个文件的内容类型?

#file /var/log/*  

4、取出/etc/inittab文件的第6行;

# head -6 /etc/inittab | tail -1

5、取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;

# tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee/tmp/users

6、显示/etc目录下所有以pa开头的文件,并统计其个数;

# ls -d /etc/pa* | wc -l

7、不使用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中;

# echo "alias cls=clear" >> ~/.bashrc

l  7grepglobal research):根据模式搜索文本,并将符合模式的文本行显示出来。

1.grep命令:使用基本正则表达式定义的模式来过滤文本的命令;

模式(Pattern):文本字符和正则表达式的元字符组合而成匹配条件

grep [options] PATTERN [FILE...]

-iignore case):忽略大小写

                --color:标注颜色

                -vinvert-match):显示没有被模式匹配到的行

                -oonly-matching):只显示被模式匹配到的字符串

-Eextended-regexp使用扩展正则表达式

                -A #after-context显示匹配行及后边#

                -B #before-context:显示匹配行及前边#

                -C #context:显示匹配行及前边和后边#

2.)正则表达式(REGularEXPression/ REGEXP

         *fgrep:不支持正则表达式

    *基本正则表达式(Basic REGEXP

1、元字符:

. 匹配任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

            2、匹配次数(贪婪模式):

*: 匹配其前面的字符任意次

.*: 任意长度的任意字符

\?: 匹配其前面的字符1次或0

\{m,n\}:匹配其前面的字符至少m次,至多n

            3、位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

$: 锚定行尾,此字符前面的任意内容必须出现在行尾

^$: 空白行

\<\b: 锚定词首,其后面的任意字符必须作为单词首部出现

\>\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

4、分组:

\(\)

后向引用

      \1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

                      \2: 引用第二个左括号以及与之对应的右括号所包括的所有内容

                      \3: 引用第三个左括号以及与之对应的右括号所包括的所有内容

    *扩展正则表达式(Extended REGEXP):grep -E = egrep

1、元字符

. 匹配任意单个字符

[]: 匹配指定范围内的任意单个字符

[^]:匹配指定范围外的任意单个字符

2、匹配次数

*: 匹配其前面的字符任意次

?: 匹配其前面的字符1次或0

+: 匹配其前面的字符至少1

{m,n}:匹配其前面的字符至少m次,至多n

3、分组:()

\1, \2, \3, ...

或者:|          例:C|cat=C或(orcat

4、位置锚定:

^: 锚定行首,此字符后面的任意内容必须出现在行首

$: 锚定行尾,此字符前面的任意内容必须出现在行尾

^$: 空白行

\<\b: 锚定词首,其后面的任意字符必须作为单词首部出现

\>\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

练习:

1、显示/proc/meminfo文件中以不区分大小的s开头的行;

grep -i ‘^s‘ /proc/meminfo

grep ‘^[sS]‘ /proc/meminfo

2、显示/etc/passwd中以nologin结尾的行;

grep ‘nologin$‘ /etc/passwd

3、取出默认shell/sbin/nologin的用户列表

grep "nologin$‘ /etc/passwd | cut -d: -f1

4、取出默认shellbash,且其用户ID号最小的用户的用户名

grep ‘bash$‘ /etc/passwd | sort -n -t: -k3 | head -1 |cut -d: -f1

5、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;

grep "^#[[:space:]]\{1,\}[^[:space:]]"/etc/inittab

6、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;

grep ‘:[0-9]:‘ /etc/inittab

7、显示/boot/grub/grub.conf文件中以一个或多个空白字符开头的行;

grep ‘^[[:space:]]\{1,\}‘ /boot/grub/grub.conf

8、显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行;

grep ‘^\([0-9]\).*\1$‘ /etc/inittab

9、找出某文件中的,1位数,或2位数;

grep ‘[0-9]\{1,2\}‘ /proc/cpuinfo

grep --color ‘\<[0-9]\{1,2\}\>‘ /proc/cpuinfo

10、找出ifconfig命令结果中的1-255之间的整数;

11、查找当前系统上名字为student(必须出现在行首)的用户的帐号的相关信息文件为/etc/passwd

grep ‘^student\>‘ /etc/passwd | cut -d: -f3

id -u student

student1

student2

12、分析/etc/inittab文件中如下文本中前两行的特征(每一行中出现在数字必须相同),请写出可以精确找到类似两行的模式:

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep ‘^l\([0-9]\):\1.*\1$‘ /etc/inittab

13、显示所有以数字结尾且文件名中不包含空白的文件;

ls *[^[:space:]]*[0-9]   ?????????

14、找出/boot/grub/grub.conf文件中1-255之间的数字;

\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>

ifconfig | egrep‘\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘

ifconfig |egrep --color‘(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>‘ 

 


本文出自 “Linux-Study” 博客,请务必保留此出处http://luoxj100.blog.51cto.com/6853880/1910527

004-用户、组、权限管理命令及bash配置文件、管道、重定向、grep