一、权限的基本概念
权限: 访问计算机资源或服务的访问能力。
Linux 中,每一个资源或者服务的权限,分别定义了三组用户的使用能力。
- 文件的属主(u)
- 文件的属组(g)
- 其他用户(o)
对于每一类用户来说,可以对某个 文件 有三种权限:
- r: 可读,可以使用类似 cat,more,less 等命令查看文件内容。
- w: 可写,可以编辑或者删除此文件。
- x: 可执行,可以在命令提示符下,当做命令提交给内核运行,一般对文件默认没有此权限,否则可能执行恶意代码。
对于 目录 来说,
- r: 可以对此目录执行 ls 以列出内部的所有文件
- w: 可以在此目录中创建文件。
- x: 可以使用 cd 切换进此目录,也可以使用 ls -l 查看内部文件的详细信息。
进程的安全上下文( secure context ) : 进程是用户发起的,是用户操作计算机的代理。进程也是有属组和属主的。谁发起的进程,进程就以谁的身份运行。比如, A 和 B 同时执行 ls 命令,这两个进程属 主不同,因此获得对某文件的权限也不同,如果文件的属主刚好和进程 A 的属主相同,那么 A 就可以访问该文件,也就是说有访问权限。 如下代码,drwxr-xr-x 3 root root 4096 Oct 16 20:57 m ,第一个字段 drwxr-xr-x 中 rwx 为属主的权限, r-x 为属组的权限, r-x 为其他用户的访问权限。第三个字段便是属主,第四个字段是属组。
root@hao:~#
ls
-l
total 8
drwxr-xr-x
3
root root
4096
Oct
16
20
:
57
m
drwxr-xr-x
2
root root
4096
Oct
16
22
:
00
test
二、权限管理
1、chown(chage owner)改变文件属主
只有管理员才可以改变文件属主
命令格式: chown username file...更改文件的属主
chown username:groupname file...更改文件的属主和属组
chown :groupname file 更改文件的属组
[hadoop@hao tmp]$
ll /
tmp
total
40
-rw-rw-r--.
1
hadoop hadoop
0
Nov
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
21
b.hadoop
...
[root@hao
~]#
chown
hao /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
40
-rw-rw-r--.
1
hao hadoop
0
11
?.
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
11
?.
4
12
:
21
b.hadoop
...
[root@hao ~]#
mkdir
/tmp/
testdir
[root@hao
~]#
ll /
tmp
total
44
-rw-rw-r--.
1
hao hadoop
0
Nov
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
21
b.hadoop
...
drwxr
-xr-x.
2
root root
4096
Nov
4
13
:
53
testdir
[root@hao
~]#
chown
hao /tmp/
testdir
[
root@hao
~]#
ll /
tmp
total
44
-rw-rw-r--.
1
hao hadoop
0
Nov
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
21
b.hadoop
...
drwxr
-xr-x.
2
hao root
4096
Nov
4
13
:
53
testdir
命令选项:
-R:修改目录及其内部文件的属主。不使用该选项时,只更改目录的属主,不更改目录内文件的属主。
--reference:更改文件的属主为指定文件的属主。chown --reference =/path file...
[root@hao ~]#
ll /
tmp
total
44
-rw-rw-r--.
1
hao hadoop
0
Nov
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
21
b.hadoop
...
[root@hao
~]#
chown
--reference=/tmp/b.hadoop /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
-rw-rw-r--.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
21
b.hadoop
...
2、chgrp(change group)修改属组
使用方法同上。
3、chmod 更改文件权限
a、修改三类用户的权限
命令格式: chmod MODE filename ...
命令选项:
-R:
--reference:
如下代码是更改test文件的三类用户权限为750即为rwxr-x---
chmod
750
test
b、修改某类用户或某些类用户权限
命令格式: chmod 用户类别=MODE filename
[root@hao ~]#
ll /
tmp
total
44
-rw-rw-r--.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
[root@hao
~]#
chmod
u=rw /tmp/
a.hadoop
[root@hao
~]#
chmod
g=rw /tmp/
a.hadoop
[root@hao
~]#
chmod
o=rw /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
-rw-rw-rw-.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
[root@hao ~]#
chmod
og=r,u=
w
/tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
--
w
-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
c、修改某类用户的某位或某些位权限
命令格式: chmod 用户类别+(-)MODE filename
[root@hao ~]#
chmod
a+r /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
-rw-r--r--.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
[root@hao
~]#
chmod
a-r /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
--
w
-------.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
[root@hao
~]#
chmod
u+r /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
-rw-------.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
[root@hao
~]#
chmod
u+r,g+x /tmp/
a.hadoop
[root@hao
~]#
ll /
tmp
total
44
-rw---x---.
1
hadoop mygroup
0
Nov
4
12
:
09
a.hadoop
...
三、创建文件的默认权限
创建一个文件,它的默认权限是:666-umask的前三位
创建一个目录,它的默认权限是:777-umask的前三位。 umask是遮罩码
[root@hao ~]#
cd /
tmp
[root@hao tmp]#
touch
test
[root@hao tmp]#
ll test
-rw-r--r--.
1
root root
0
Nov
4
16
:
39
test
[root@hao tmp]#
umask
0022
[root@hao tmp]#
mkdir
test1
[root@hao tmp]#
ls
-
dl test1
drwxr
-xr-x.
2
root root
4096
Nov
4
16
:
41
test1
umask 可以直接设置用户的遮罩码 如 umask 202 则为设置当前用户的遮罩码。但是文件默认不能有执行权限,因此如果算得的结果有执行权限则会自动加1!!
该用户退出后,umask会默认恢复为初始值。
四、bash配置文件
bash的配置文件分为两种
-
全局配置
- /etc/profile,/etc/profile.d/*.sh,/etc/bashrc
-
个人配置
- ~/.bash_profile,~/.bashrc
这些文件分为两类:
-
profile类文件:
- 设定环境变量
- 可以设定登录时所运行的命令或脚本
-
bashrc类文件
- 设定本地变量
- 定义命令别名
五、shell 类型(用户角度)
从用户角度来说,shell分为两种类型:
-
登陆式shell
- su - username
- su -l username
- 正常通过某终端登陆的shell
-
非登录式shell
- su username
- 图形终端下打开命令窗口
- 自动执行的shell脚本
登录式shell读取配置文件的顺序为:
1、/etc/profile 2、/etc/profile.d/*.sh 3、~/.bash_profile 4、~/.bashrc 5、/etc/bashrc
非登录式shell读取配置文件的顺序为:
1、~/.bashrc 2、/etc/bashrc 3、/etc/profile.d/*.sh
六、练习一:创建没有家目录的openstack用户
1、创建一个没有家目录的用户openstack
[root@hao ~]#
useradd -M openstack
2、复制/etc/skel 为/home/openstack
[root@hao ~]#
cp
-r /etc/skel /home/
openstack
[root@hao
~
]#
finger openstack
Login: openstack Name:
Directory:
/home/openstack Shell: /bin/
bash
Never logged
in
.
No mail.
No Plan.
[root@hao
~]#
ls
/
home
guang hadoop hao haohao openstack testuser testuser1
[root@hao
~]#
id
openstack
uid
=
1005
(openstack) gid=
1005
(openstack)
groups
=
1005
(openstack)
[root@hao
~]#
ll /
home
total
28
...
drwxr
-xr-x.
4
root root
4096
Nov
4
14
:
53
openstack
...
[root@hao ~]#
ls
-al /home/
openstack
total
28
drwxr
-xr-x.
4
root root
4096
Nov
4
14
:
53
.
drwxr
-xr-x.
9
root root
4096
Nov
4
14
:
53
..
-rw-r--r--.
1
root root
18
Nov
4
14
:
53
.bash_logout
-rw-r--r--.
1
root root
176
Nov
4
14
:
53
.bash_profile
-rw-r--r--.
1
root root
124
Nov
4
14
:
53
.bashrc
drwxr
-xr-x.
2
root root
4096
Nov
4
14
:
53
.gnome2
drwxr
-xr-x.
4
root root
4096
Nov
4
14
:
53
.mozilla
3、修改/home/openstack及其内部文件的属主属组为openstack
[root@hao ~]#
chown
-R openstack:openstack /home/
openstack
[root@hao
~]#
ls
-
ld
/home/openstack/
drwxr
-xr-x.
4
openstack openstack
4096
Nov
4
14
:
53
/home/openstack/
[root@hao ~]#
ls
-la /home/openstack/
total
28
drwxr
-xr-x.
4
openstack openstack
4096
Nov
4
14
:
53
.
drwxr
-xr-x.
9
root root
4096
Nov
4
14
:
53
..
-rw-r--r--.
1
openstack openstack
18
Nov
4
14
:
53
.bash_logout
-rw-r--r--.
1
openstack openstack
176
Nov
4
14
:
53
.bash_profile
-rw-r--r--.
1
openstack openstack
124
Nov
4
14
:
53
.bashrc
drwxr
-xr-x.
2
openstack openstack
4096
Nov
4
14
:
53
.gnome2
drwxr
-xr-x.
4
openstack openstack
4096
Nov
4
14
:
53
.mozilla
4、 修改/home/openstack及其内部文件 ,属组和其他用户没有任何访问权限
[root@hao ~]#
chmod
-R go= /home/openstack/
[root@hao ~]#
ls
-
ld
/home/
openstack
drwx
------.
4
openstack openstack
4096
Nov
4
14
:
53
/home/
openstack
[root@hao
~]#
ls
-la /home/openstack/
total
28
drwx
------.
4
openstack openstack
4096
Nov
4
14
:
53
.
drwxr
-xr-x.
9
root root
4096
Nov
4
14
:
53
..
-rw-------.
1
openstack openstack
18
Nov
4
14
:
53
.bash_logout
-rw-------.
1
openstack openstack
176
Nov
4
14
:
53
.bash_profile
-rw-------.
1
openstack openstack
124
Nov
4
14
:
53
.bashrc
drwx
------.
2
openstack openstack
4096
Nov
4
14
:
53
.gnome2
drwx
------.
4
openstack openstack
4096
Nov
4
14
:
53
.mozilla
七、练习二:手动添加用户
需求:手动添加用户hive,属主属组均为hive,UID与GID均为5000,附加组为mygroup(已存在)
1、创建组hive
[root@hao ~]#
nano /etc/
grou
在该文件末尾添加组hive,同时在附加组mygroup添加用户hive
mygroup:x:502:testuser1,hive
hive:x:
5000
2、在/etc/passwd中创建用户
hive:x:
5000
:
5000
:hive:/home/hive:/bin/bash
3、在/etc/shadow中创建密码,这里的16378为距离1970年1月1日经过的天数,可以算出来。
[hao@hao ~]$
date
Tue Nov
4
15
:
17
:
38
CST
2014
[hao@hao ~]$
date
+%
s
1415085473
[hao@hao ~
]$
bc
bc
1.06
.
95
Copyright
1991
-
1994
,
1997
,
1998
,
2000
,
2004
,
2006
Free Software Foundation, Inc.
This is
free
software with ABSOLUTELY NO WARRANTY.
For details type `warranty
'
.
1415085473
/
86400
16378
hive:!!:
16378
:
0
:
99999
:
7
:::
4、创建家目录并设定其属组属主为hive
[root@hao ~]#
cp
-r /etc/skel /home/
hive
[root@hao
~]#
ls
/
home
guang hadoop hao haohao hive openstack testuser testuser1
[root@hao ~]#
chown
-R hive:hive /home/
hive
[root@hao
~]#
ls
-al /home/
hive
total
28
drwxr
-xr-x.
4
hive hive
4096
Nov
4
15
:
25
.
drwxr
-xr-x.
10
root root
4096
Nov
4
15
:
25
..
-rw-r--r--.
1
hive hive
18
Nov
4
15
:
25
.bash_logout
-rw-r--r--.
1
hive hive
176
Nov
4
15
:
25
.bash_profile
-rw-r--r--.
1
hive hive
124
Nov
4
15
:
25
.bashrc
drwxr
-xr-x.
2
hive hive
4096
Nov
4
15
:
25
.gnome2
drwxr
-xr-x.
4
hive hive
4096
Nov
4
15
:
25
.mozilla
[root@hao
~]#
ls
-dl /home/
hive
drwxr
-xr-x.
4
hive hive
4096
Nov
4
15
:
25
/home/hive
5、 修改/home/hive及其内部文件权限,使属组和其他用户没有任何访问权限
[root@hao ~]#
chmod
-R go= /home/
hive
[root@hao
~]#
ls
-dl /home/
hive
drwx
------.
4
hive hive
4096
Nov
4
15
:
25
/home/
hive
[root@hao
~]#
ls
-al /home/
hive
total
28
drwx
------.
4
hive hive
4096
Nov
4
15
:
25
.
drwxr
-xr-x.
10
root root
4096
Nov
4
15
:
25
..
-rw-------.
1
hive hive
18
Nov
4
15
:
25
.bash_logout
-rw-------.
1
hive hive
176
Nov
4
15
:
25
.bash_profile
-rw-------.
1
hive hive
124
Nov
4
15
:
25
.bashrc
drwx
------.
2
hive hive
4096
Nov
4
15
:
25
.gnome2
drwx
------.
4
hive hive
4096
Nov
4
15
:
25
.mozilla
6、手动生成密码,并添加到/etc/shadow中
[root@hao ~]#
openssl
passwd
-
1
-salt
'
12345678
'
Password:
$
1
$
12345678
$2hpL/
5Hu1halILqBt7TFe.
[root@hao
~]# nano /etc/shadow

