Linux权限及IO重定向笔记
权限管理:
r:
w:
x:
三类用户:
u: 属主
g: 属组
o: 其他用户
chown: 改变文件属主(只有管理员可以使用此命令)
# chown USERNAME file,... 把file的属主改成这个用户
-R 修改目录及其内部文件或子目录的属主
--reference=/path/to/somefile file,... 将file的属主&属组一同设定成与path的属主&属组一致
chown USERNAME:GRPNAME file,... 同时改变owner, group
eg: chown root:root /tmp/abc
chown :GRPNAME file,... 只改变group
eg: chown :mygroup /tmp/abc
# chgrp: 改变文件属组(只有管理员可以使用此命令)
-R
--reference=/path/to/somefile file,...
#chmod: 修改文件的权限
修改三类用户的权限:
chmod MODE file, ...
-R
--reference=/path/somefile file,...
修改某类用户或某些类用户权限:
u,g,o,a
chmod 用户类别=MODE file,...
eg: chmod u=rwx /tmp/abc
eg: chmod go=r /tmp/abc
eg: chmod g=rx,o= /tmp/abc 不给权限,就是没有权限 o权限为---
修改某类用户的某位或某些位权限:
u,g,o,a
chmod 用户类别+|-MODE file,...
chmod u+x,g-x /tmp/abc 赋予owner的x权限,拿掉属组的x权限
chmod a+x /temp/abc 同时赋予三类用户的x权限
练习:
1. 新建一个没有家目录的用户openstack
useradd -M openvpn
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
手动添加用户hive,基本组为hive(5000), 附加组为mygroup
手动生成密码:
1. openssl passwd -1 -salt ‘12345678‘
umask: 遮罩码,
#umask 022
文件默认不能具有执行权限,如果算得的结果中有执行权限,则将将其权限加1
用户创建文件
文件:666-umask
目录:777-umask
站在用户逇较多来说,SHELL的类型
登陆式shell:
正常通过某终端登陆
su - USERNAME
su -l USERNAME
非登录式shell:
su USERNAME
图形终端下打开的命令窗口
自动执行的shell脚本
bash的配置文件:
全局配置
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
个人配置
~/.bash_profile
~/.bashrc
profile类的文件:
1. 设定环境变量
2. 运行命令或脚本
bashrc类的文件:
1. 设定本地变量
2. 定义命令别名
登陆式shell如何读取配置文件?
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非登陆式shell如何读取配置文件?
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
bash: 脚本解释器
程序: 指令和数据
控制器: 指令
运算器:
存储器:
地址总线: 内存寻址
数据总线: 传输数据
控制总线: 控制指令
寄存器: cpu暂时存储器
I/O: 硬盘
程序:
INPUT设备:
OUTPUT设备
系统设定
默认输入设备: 标准输出: STDOUT, 1
默认输出设备: 标准输入: STDIN, 0
标准错误输出: STDERR, 2
eg: passwd --stdin
标准输入: 键盘
标准输出和错误输出: 显示器
I/O 重定向:
Linux:
> 覆盖输出
>> 追加输出
set -C 禁止对已经存在文件使用覆盖重定向
强制覆盖输出,则使用 >|
set +C 关闭上述功能
2>: 重定向错误输出
2>>: 追加方式重定向错误输出
&>: 重定向标准输出或错误输出至同一个文件
< 输入重定向
<<: Here Document 此处生成文档
eg:
cat << END
....
....
....
END
cat >> /tmp/myfile.txt<<EOF 追加文件到myfile.txt,遇到EOF停止
管道: 前一个命令的输出,做为后一个命令的输入
命令1 | 命令2 | 命令3
eg:
echo "hello,world" .| tr ‘a-z‘ ‘A-Z‘
echo "redhat" | passwd --stdin hive
练习:
1. 统计/usr/bin 目录下的文件个数:
ls /usr/bin | wc -l
2. 取出当前系统上所有用户的shell, 要求, 每种shell只显示一次, 并且按顺序进行显示
cat /etc/passwd | cut -d ":" -f7 | sort -u
cut -d " " -f7 /etc/passwd | sort -u
3. 思考: 如何显示/var/log 目录下每个文件的内容类型?
file /var/log/*
or
cd /var/log
file /var/log/`ls /var/log`
4. 取出/etc/inittab文件得第6行
cat /etc/inittab | head -6 | tail -1
5. 取出/etc/passwd 文件中倒数第9个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中
cat /etc/passwd|head -9| tail -1 | cut -d ":" -f1,7 >> /tmp/users
6. 显示/etc/目录下所有以pa开头的文件, 并统计其个数
ls -d /etc/pa* | wc -l
7. 不使用文本编辑器,将alias cls=clear 一行内容添加至当前用户的.bashrc文件中
[richie@localhost ~]$ cat >>~/.bashrc<<EOF
> alias cls=‘clear‘
> EOF
or
echo "alias cls=clear" >> ~/.bashrc
本文出自 “Richier” 博客,请务必保留此出处http://richier.blog.51cto.com/1447532/1630157
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。