linux基础篇二linux基础篇二:
权限:
文件类型:Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来
加以区分,常见的字符如下所示
9.创建用户user100,并将该用户添加到group200组中
10.修改user100用户名为user1000
11.锁定用户user1000,进行测试及结果
12.解锁用户user1000,进行测试及结果
useradd user1 -G bin,root -s /bin/bash -c "user1_info"
groupadd admins
useradd natasha -G admins
useradd harry -G admins
useradd sarah -s /sbin/nologin
echo centos | passwd --stdin natasha #其它两个密码省略
useradd user1 -u 10000 -G root -d /home/user100
userdel -r user1
groupadd user200; useradd user100; usermod -G group200 user100
usermod -l user1000 user100
usermod -L user1000
usermod -U user1000
#usermod -U -L的解析
#usemod -L
Lock a user's password. This puts a '!' in front of the encrypted password, effectively
disabling the password.
#usermod -U
Unlock a user's password. This removes the '!' in front of the encrypted password.
useradd alice
echo 'alice' | passwd --stdin 'alice'
cat /etc/passwd | tail -n1
cat /etc/shadow | tail -n1
usermod -L alice
cat /etc/shadow | tail -n1 #注意和上个结果比对
#在打开另一个终端测试用户是否能正常登录
usermod -U alice
cat /etc/shadow | tail -n1 #注意比对
#passwd -l 锁定账户,在密码字符串的前面加上!
#passwd -u 是去掉密码字符串前面的!
#usermod -L 默认只是锁定密码,在密码字符串前面加!
#usermod -U 默认只是解锁密码,去掉密码字符串前面的!
符号 描述
-: 普通文件(Regular file)
d: 目录(Directory files)
l: 符号连接文件(Symbolic link file)
b: 块文件(Block file)
c: 字符设备文件(Character device file)
p: 管道文件(Named pie file or just a pipe file)
Linux权限基于UGO模型进行控制;U代表User,G代表Group,O代表Other;每一个文件的权限基于UGO
进行设置
Linux的基本权限分为读、写、执行(r、w、x),可用数字4、2、1来表示
3. Linux特殊权限
特权权限是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有
执行权限的二进制程序有效)
SGID让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件,通常对目录设置
chmod #用于设置文件或目录的权限
chown #用于修改文件属性和权限
chgrp #用于修改文件属性和权限
练习:
4. Linux Umask
预设权限!
umask命令用来设置限制新建文件权限的掩码
umask #结果是八进制掩码,转换后则为022,oct(0022)
#suid
ll /etc/passwd
ll /usr/bin/passwd
ll /usr/bin/su #x权限会被s代替,无执行权限为S
cp /usr/bin/passwd .
ll passwd
chmod u+s passwd #设置suid,也可以使用数字的方式设置
ll passwd
chmod u-s passwd #取消suid
ll passwd
#sgid
chomd g+s file #设置sgid
chmod 2xxx file #数字形式设置
#sbit
ls -ld /tmp
chmod o+t file #设置sbit
#suid,sgid,sbit数字表示
SUID 4
SGID 2
SBIT 1
研发部开发人员David和Peter属于组A,行政部人员Jack和Mike属于组B;
1.建立目录“/project_a”,该目录里面的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用
户不能对该目录进行任何的访问操作;
2.建立目录“/project_b”,该目录里面的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不
能对该目录进行任何的访问操作;
3.建立目录“/project”,该目录里面的文件可由研发部、行政部人员读取、增加、删除、修改以及执行,其他部
门用户只可以对该目录进行只读的访问操作
#此题只给出两个组,其实要想实现此功能需要3个组。研发部一个组,行政部一个组,包含研发部和行政部需要一
个组。此题目的在于熟悉组、用户、权限相关命令
groupadd a;groupadd b;groupadd ab
echo '1' | passwd --stdin david #其它用户省略
mkdir /project_a;mkdir /project_b;mkdir /project
chgrp ab /project;chgrp a /project_a;chgrp b /project_b
usermod -G a,ab david;usermod -G a,ab peter;usermod -G b,ab mike;usermod -G b,ab jack
chmod 774 /project; chmod 770 /project_a; chmod 770 /project_b
umask 目录 文件
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660
常用umask值及对应文件和目录权限
测试:
参数 作用
--color 匹配到的字符串显示颜色
-i 忽略字符大小写
-o 仅显示匹配的字串
-v 反向选取, 即显示不匹配的行
-E 使用扩展正则表达式
-n 显示行号
5. Grep及基本正则表达式
正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法
对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志
文件分析其内容,都会用到正则表达式
Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk
正则表达式分为两种:
基本正则表达式(BRE,basic regular expression)
扩展正则表达式(ERE,extended regular expression)
grep常用基本参数及作用:
正则表达式常用:
文件最大权限为 rwx rwx rwx (777)
umask 为022 --- -w- -w-
目录权限为 rwx r-x r-x (755)
文件权限 rw- r-- r-- (644)
元数据 意义和范例
^word 搜寻word开头的行
搜寻以#开头的行,grep -n '^#' file
word$ 搜寻word结尾的行
搜寻以.结尾的行,grep -n '.$' file
. 匹配任意一个字符
匹配e和e之间有任意一个字符,grep -n 'e.e' file
\ 转义字符
* 前面的一个字符重复0到多次
匹配gle,gogle,google,gooogle等,grep -n 'go*gle' file
[list] 匹配一系列字符中的一个
[n1-n2] 匹配一个字符范围中的一个字符
匹配数字字符,grep -n '[0-9]' file
[^list] 匹配字符集以外的字符
匹配非o字符,grep -n '[^o]' file
\{n1,n2\} 前面的单个字符重复n1,n2次
匹配google,gooogle,grep -n ' go\{2,3\}gle ' file
\<word 单词的开头
匹配以g开头的单词,grep -n \<g file
word\> 单词的结尾
匹配以tion结尾的单词,grep -n tion\> file
‘ ‘ 强引用,引号内的内容不变
“ ” 弱引用,变量会替换
[[:alnum:]] 代表英文大小写字符及数字,即 0-9, A-Z, a-z
[[:alpha:]] 代表任何英文大小写字符,即 A-Z, a-z
[[:space:]] 任何会产生空白的字符,包括空白键, [Tab] 等等
[[:digit:]] 代表数字,即 0-9
[[:lower:]] 代表小写字符,即 a-z
元数据 意义和范例
[[:upper:]] 代表大写字符,即 A-Z
以上6项为常用的特殊符号
测试:
1.显示/proc/meminfo文件中以大写或小写S开头的行
grep -i "^s" /proc/meminfo
grep -E "^(s|S)" /proc/meminfo
2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户
grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1,7
3.显示/etc/passwd文件中其默认shell为/bin/bash的用户;进一步:仅显示上述结果中其ID号最大的用户
grep "/bin/bash$" /etc/passwd | cut -d: -f1,7
grep "/bin/bash$" /etc/passwd | cut -d: -f1,7 | sort -t: -k3 -n | head -n 1 | cut -d: -f1,7
4.找出/etc/passwd文件中的一位数或两位数
grep "\<[[:digit:]]\{1,2\}\>" /etc/passwd
#用特殊符号的写法易出错,步骤拆解,如下
#grep '[[:digit:]]' /etc/passwd #不要忘记[]
#grep '[[:digit:]]\{\}' /etc/passwd #特殊符号的转义
#grep '[[:digit:]]\{1,2\}' /etc/passwd
#grep '\<[[:digit:]]\{1,2\}>\' /etc/passwd #首尾限定
#grep "\<[0-9]\{1,2\}\>" /etc/passwd #这样也是可行的
5.显示/boot/grub/grub.conf中以至少一个空白字符开头的行
grep "^[[:space:]]\{1,\}" /boot/grub2/grub.cfg
6.找出netstat -tan命令执行结果中以'LISTEN'结尾的行
netstat -nat | grep "LISTEN[[:space:]]*$"
7.显示当前系统上root、user1用户的默认shell
grep -E "^(root|user1)" /etc/passwd | cut -d: -f1,7
8.找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号"()"行
grep "\<[[:alpha:]]\{1,\}\>()" /etc/rc.d/init.d/functions
9.找出ifconfig命令结果中的1-255之间的数字
ifconfig | grep -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>
权限:
文件类型:Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来
加以区分,常见的字符如下所示
9.创建用户user100,并将该用户添加到group200组中
10.修改user100用户名为user1000
11.锁定用户user1000,进行测试及结果
12.解锁用户user1000,进行测试及结果
useradd user1 -G bin,root -s /bin/bash -c "user1_info"
groupadd admins
useradd natasha -G admins
useradd harry -G admins
useradd sarah -s /sbin/nologin
echo centos | passwd --stdin natasha #其它两个密码省略
useradd user1 -u 10000 -G root -d /home/user100
userdel -r user1
groupadd user200; useradd user100; usermod -G group200 user100
usermod -l user1000 user100
usermod -L user1000
usermod -U user1000
#usermod -U -L的解析
#usemod -L
Lock a user's password. This puts a '!' in front of the encrypted password, effectively
disabling the password.
#usermod -U
Unlock a user's password. This removes the '!' in front of the encrypted password.
useradd alice
echo 'alice' | passwd --stdin 'alice'
cat /etc/passwd | tail -n1
cat /etc/shadow | tail -n1
usermod -L alice
cat /etc/shadow | tail -n1 #注意和上个结果比对
#在打开另一个终端测试用户是否能正常登录
usermod -U alice
cat /etc/shadow | tail -n1 #注意比对
#passwd -l 锁定账户,在密码字符串的前面加上!
#passwd -u 是去掉密码字符串前面的!
#usermod -L 默认只是锁定密码,在密码字符串前面加!
#usermod -U 默认只是解锁密码,去掉密码字符串前面的!
符号 描述
-: 普通文件(Regular file)
d: 目录(Directory files)
l: 符号连接文件(Symbolic link file)
b: 块文件(Block file)
c: 字符设备文件(Character device file)
p: 管道文件(Named pie file or just a pipe file)
Linux权限基于UGO模型进行控制;U代表User,G代表Group,O代表Other;每一个文件的权限基于UGO
进行设置
Linux的基本权限分为读、写、执行(r、w、x),可用数字4、2、1来表示
3. Linux特殊权限
特权权限是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限
SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有
执行权限的二进制程序有效)
SGID让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置)
SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件,通常对目录设置
chmod #用于设置文件或目录的权限
chown #用于修改文件属性和权限
chgrp #用于修改文件属性和权限
练习:
4. Linux Umask
预设权限!
umask命令用来设置限制新建文件权限的掩码
umask #结果是八进制掩码,转换后则为022,oct(0022)
#suid
ll /etc/passwd
ll /usr/bin/passwd
ll /usr/bin/su #x权限会被s代替,无执行权限为S
cp /usr/bin/passwd .
ll passwd
chmod u+s passwd #设置suid,也可以使用数字的方式设置
ll passwd
chmod u-s passwd #取消suid
ll passwd
#sgid
chomd g+s file #设置sgid
chmod 2xxx file #数字形式设置
#sbit
ls -ld /tmp
chmod o+t file #设置sbit
#suid,sgid,sbit数字表示
SUID 4
SGID 2
SBIT 1
研发部开发人员David和Peter属于组A,行政部人员Jack和Mike属于组B;
1.建立目录“/project_a”,该目录里面的文件只能由研发部开发人员读取、增加、删除、修改以及执行,其他用
户不能对该目录进行任何的访问操作;
2.建立目录“/project_b”,该目录里面的文件只能由行政部人员读取、增加、删除、修改以及执行,其他用户不
能对该目录进行任何的访问操作;
3.建立目录“/project”,该目录里面的文件可由研发部、行政部人员读取、增加、删除、修改以及执行,其他部
门用户只可以对该目录进行只读的访问操作
#此题只给出两个组,其实要想实现此功能需要3个组。研发部一个组,行政部一个组,包含研发部和行政部需要一
个组。此题目的在于熟悉组、用户、权限相关命令
groupadd a;groupadd b;groupadd ab
echo '1' | passwd --stdin david #其它用户省略
mkdir /project_a;mkdir /project_b;mkdir /project
chgrp ab /project;chgrp a /project_a;chgrp b /project_b
usermod -G a,ab david;usermod -G a,ab peter;usermod -G b,ab mike;usermod -G b,ab jack
chmod 774 /project; chmod 770 /project_a; chmod 770 /project_b
umask 目录 文件
022 755 644
027 750 640
002 775 664
006 771 660
007 770 660
常用umask值及对应文件和目录权限
测试:
参数 作用
--color 匹配到的字符串显示颜色
-i 忽略字符大小写
-o 仅显示匹配的字串
-v 反向选取, 即显示不匹配的行
-E 使用扩展正则表达式
-n 显示行号
5. Grep及基本正则表达式
正则表达式就是为了处理大量的文本|字符串而定义的一套规则和方法
对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志
文件分析其内容,都会用到正则表达式
Linux中的正则表达式,最常应用正则表达式的命令是grep(egrep),sed,awk
正则表达式分为两种:
基本正则表达式(BRE,basic regular expression)
扩展正则表达式(ERE,extended regular expression)
grep常用基本参数及作用:
正则表达式常用:
文件最大权限为 rwx rwx rwx (777)
umask 为022 --- -w- -w-
目录权限为 rwx r-x r-x (755)
文件权限 rw- r-- r-- (644)
元数据 意义和范例
^word 搜寻word开头的行
搜寻以#开头的行,grep -n '^#' file
word$ 搜寻word结尾的行
搜寻以.结尾的行,grep -n '.$' file
. 匹配任意一个字符
匹配e和e之间有任意一个字符,grep -n 'e.e' file
\ 转义字符
* 前面的一个字符重复0到多次
匹配gle,gogle,google,gooogle等,grep -n 'go*gle' file
[list] 匹配一系列字符中的一个
[n1-n2] 匹配一个字符范围中的一个字符
匹配数字字符,grep -n '[0-9]' file
[^list] 匹配字符集以外的字符
匹配非o字符,grep -n '[^o]' file
\{n1,n2\} 前面的单个字符重复n1,n2次
匹配google,gooogle,grep -n ' go\{2,3\}gle ' file
\<word 单词的开头
匹配以g开头的单词,grep -n \<g file
word\> 单词的结尾
匹配以tion结尾的单词,grep -n tion\> file
‘ ‘ 强引用,引号内的内容不变
“ ” 弱引用,变量会替换
[[:alnum:]] 代表英文大小写字符及数字,即 0-9, A-Z, a-z
[[:alpha:]] 代表任何英文大小写字符,即 A-Z, a-z
[[:space:]] 任何会产生空白的字符,包括空白键, [Tab] 等等
[[:digit:]] 代表数字,即 0-9
[[:lower:]] 代表小写字符,即 a-z
元数据 意义和范例
[[:upper:]] 代表大写字符,即 A-Z
以上6项为常用的特殊符号
测试:
1.显示/proc/meminfo文件中以大写或小写S开头的行
grep -i "^s" /proc/meminfo
grep -E "^(s|S)" /proc/meminfo
2.显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户
grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1,7
3.显示/etc/passwd文件中其默认shell为/bin/bash的用户;进一步:仅显示上述结果中其ID号最大的用户
grep "/bin/bash$" /etc/passwd | cut -d: -f1,7
grep "/bin/bash$" /etc/passwd | cut -d: -f1,7 | sort -t: -k3 -n | head -n 1 | cut -d: -f1,7
4.找出/etc/passwd文件中的一位数或两位数
grep "\<[[:digit:]]\{1,2\}\>" /etc/passwd
#用特殊符号的写法易出错,步骤拆解,如下
#grep '[[:digit:]]' /etc/passwd #不要忘记[]
#grep '[[:digit:]]\{\}' /etc/passwd #特殊符号的转义
#grep '[[:digit:]]\{1,2\}' /etc/passwd
#grep '\<[[:digit:]]\{1,2\}>\' /etc/passwd #首尾限定
#grep "\<[0-9]\{1,2\}\>" /etc/passwd #这样也是可行的
5.显示/boot/grub/grub.conf中以至少一个空白字符开头的行
grep "^[[:space:]]\{1,\}" /boot/grub2/grub.cfg
6.找出netstat -tan命令执行结果中以'LISTEN'结尾的行
netstat -nat | grep "LISTEN[[:space:]]*$"
7.显示当前系统上root、user1用户的默认shell
grep -E "^(root|user1)" /etc/passwd | cut -d: -f1,7
8.找出/etc/rc.d/init.d/functions文件中某单词后跟一组小括号"()"行
grep "\<[[:alpha:]]\{1,\}\>()" /etc/rc.d/init.d/functions
9.找出ifconfig命令结果中的1-255之间的数字
ifconfig | grep -E "\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>