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

l  1、用户管理命令

1.)创建用户命令

useradd  [OPTIONS] USERNAME

-u(UID):指定用户UID

-g(GID):指定基本组

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

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

-d(home_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.)usermod(user 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(组ID为3003),附加组为linux;

# groupadd -g 3003 distro

# groupadd linux

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

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

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

3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora;

# 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…

u(user):表示属主

g(group):表示属组

o(other):表示其他用户

a(all):表示所有

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

u(user):表示属主

g(group):表示属组

o(other):表示其他用户

a(all):表示所有

练习:

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(在此处生成文档)

4、2>: 重定向错误输出

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...]

-i(ignore case):忽略大小写

--color:标注颜色

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

-o(only-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或(or)cat

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、取出默认shell为bash,且其用户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])\>‘

时间: 2024-10-13 00:21:50

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

Linux用户及其权限管理命令

/etc/passwd: 用户名:密码:UID:GID:注释:家目录:默认shell /etc/group: 组名:密码:GID:以此组为其附加组的用户列表 /etc/shadow: 用户名:密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告时间:非活动时间:过期时间: 用户管理: useradd,userdel,usermod,passwd,chsh,chfn,finger,id,chage,pwck 用户基本信息管理: # useradd [options] USERNAME  

Linux中的用户和权限管理

Linux是多用户,多任务操作系统:多用户是指多个用户可以同时使用系统资源,而多任务指同时运行多个进程. 用户是能够获取系统资源的权限的集合,Linux通过用户实现资源分隔. 用户组是具有相同特征用户的逻辑集合,是用户的容器. 1.用户: (1)用户类别 管理员:root 普通用户: 系统用户:仅仅用于用于启动服务进程. 登录用户:用于使用者交互使用,是系统资源的使用者 (2)用户在操作系统中用UID来标识: UID是16bits的二进制数字,如此范围为:0-65535.Linux 系统对用户U

2017-11-17Linux基础知识(12)用户和组的管理命令

在上一章中我们讲述了通配符(bash globing)以及IO重定向及管道,以及介绍了用户管理的基本概念,主要讲述了其用户类别和组类别及管理用户和组的数据库文件,在用户类别当中分为管理员和普通用户这两个大类,而普通用户又分为系统用户和登录用户这个两类.之后在组类别当中介绍了其管理组和普通用户组还有一个组类别是基本组和附加组,最后一个组类别为似有组和公共组,那么接下来我们讲述Linux用户和组的管理命令. 一.安全上下文 我们都知道,所有的进程都是使用发起者的身份来运行,那么对于操作系统来讲,所谓

Linux用户、用户管理的常见命令用法以及用户的权限管理

    用户和用户组的基本概念: Linux的用户是通过账号和密码登录到Linux系统的,而Linux主机并不会直接识别账号和密码,它只认识ID.那么Linux系统用户的ID分为以下类别: 系统管理员:root,0-UID 普通用户:1-65535-UID 普通用户有分为:系统用户和登录用户 系统用户:1-999-UID 登录用户:1000-65535-UID Linux用户组(GID)的分类: 管理员组:root,0(GID) 普通用户组:1-65535(GID) 普通用户组又分为: 系统组:

【linux相识相知】用户及权限管理

linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理.本次博客就用户和权限管理作出详细的解释. 用户和组类型 在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的. 用户可以分为以下2中类别: 管理员:也就

权限管理2 以及bash的特性 快捷键,补全功能以及变量的类型,登录类型,脚本

权限管理: owner          group         other 属主              属组            其它 权限:read   write     execute r           w            x 文件: -r:可以使用文件查看类的命令来显示相关内容 -w:可以使用编辑器修改内容 -x:可以将其发起一个进程 目录: -r:可以使用ls命令查看目录内容的的文件信息 -w:可以创建 删除文件 -x:可以使用ls -l命令查看内容的文件信息,

centos6用户和权限管理

用户是什么?        用户是一个身份,是系统操作者的代称    为什么需要用户?        对Linux而言,没有用户也能正常运行,linux是多用户多任务的操作系统,这意味着会有很多人同时操作一个系统,这样就需要身份来识别操作者,进而对每一个或者某类用户进行权限划分    权限是什么?        对计算机而言,权限就是用户可执行操作的能力范围    为何需要权限?        系统安全是第一要素,划分权限能够有避免普通用户错误操作对系统的影响,能够使用管理员账号的人必须对系统有

Linux的用户与权限管理

1.linux操作系统用户及用户组 Linux操作系统是多任务(Multi-tasks)多用户(Multi-users)分时操作系统,linux操作系统的用户就是让我们登录到linux的权限:每当我们使用用户名登录操作系统时,linux都会对该用户进行认证.授权审计等操作.操作系统为了识别每个用户,会给每个用户定义一个ID,就是UID.用户组就相当于多个用户的容器:在linux系统中,用户组也有一个ID,GID. 1.1 linux操作系统用户 在linux中,用户分为两大类:管理员用户和普通用

Linux的用户和权限管理

欢迎大家来到我的博客,首先声明此文是我的***作:若文中有不当之处,还请各位前辈大神多多指点,小生在这里先谢过了.生活总有各种不如意,对我来说眼前的一切就是最好的安排:说实话我并不是很喜欢软件这个专业,我是一个文科男,软件世界里的沟沟坎坎对我来说走起来真的有些吃力,来到大学莫名其妙的进了这个专业,成了IT大海里一个小石头.没办法,既来之则安之:唯有迎头向前才能彰显我辈精神啊:大学毕业我这个小石头便阴差阳错的接触到了软件运维这个行业,带着满满的信心怀揣着美好的前景我加入的Linux培训的大军.这不