Linux权限及IO重定向笔记

时间:2022-03-23 17:43:54


权限管理:

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