useradd新建用户和权限分配
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
useradd新建⽤户和权限分配
场景:在搭建Ftp服务器时候,需要新建ftp⽤户,其实新建的ftp⽤户和Linux中root新建的⽤户⼀样,只是需要了解新建⽤户时候的相关规则。
1 解决新建⽤户缺少配置⽂件
1.1 新建⽤户指定⽬录修改密码
1. useradd 添加⽤户或更新新创建⽤户的默认信息
语法:useradd 选项⽤户名
该命令的各选项含义如下:
-c comment 描述新⽤户帐号,通常为⽤户全名,comment 为字符串。
-d home_dir 设置⽤户主⽬录,默认值为⽤户的登录名,并放在/home⽬录下。
-D 创建新帐号后保存为新帐号设置的默认信息。
-e expire_date ⽤ MM/DD/YYYY 格式设置帐号过期⽇期。
-f inactivity 设置⼝令失效时间,该值为 0 使⼝令失效后帐号⽴即失效,为 -1 使该选项失效。
-g group 设置所要创建新⽤户所在的基本组,group为组名。
-k skel_dir 设置框架⽬录,该⽬录包含⽤户的初始配置⽂件,
创建⽤户时该⽬录下的⽂件都被复制到⽤户主⽬录下。
-m ⾃动创建⽤户主⽬录,并把框架⽬录(默认为/etc/skel)下的⽂件复制到⽤户主⽬录下。
-M 不创建⽤户主⽬录。
-r 允许保留的系统帐号使⽤⽤户ID创建⼀个新帐号。
-s shell 指定⽤户的登录shell。
-u user_id 设置⽤户ID
代码:
# useradd -d /home/test -m test;
然后给test设置密码。
# passwd test;
ps:注意上述test⽬录中已经存在⼀些⽤户默认的配置⽂件。
1.2 查看创建的⽤户列表
⼀般情况下是:
cat /etc/passwd 可以查看所有⽤户的列表
w 可以查看当前活跃的⽤户列表
cat /etc/group 查看⽤户组
但是这样看起来不是很简洁,⼀个简洁的命令是
cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":"'{ print $1"|"$3"|"$4 }'|more
1.3 删除⽤户及⽬录
按部就班的办法是先删除⽤户在删除⽬录:
删除⽤户的命令是:userdel ⽤户名
⽐如我刚建⽴的⽤户是:zhyh,则命令为:
userdel zhyh
执⾏以上命令成功后利⽤以下命令删除⽬录
rm -rf /home/zhyh/
⼀个简单的办法就是执⾏下⾯的命令
userdel -r zhyh
1.4 问题
今天新建了⼀个MQM的⽤户,
useradd -g mqm -d /var/mqm //容易缺少配置⽂件
passwd mqm
终端中显⽰ -bash-4.1$⽽不是 [mqm@locahost~]
百度了下。
据说是因为缺少配置⽂件,所以将缺少的配置⽂件复制到⽤户的家⽬录既可以。
将/etc/skel中的⽂件全部复制到/var/mqm/之后,问题就得到了解决。
操作如下
#查看⽤户的家⽬录
cat /etc/passwd
#-a表⽰复制隐藏⽂件
cp -a /etc/skel/. /var/mqm
linux中以 .开头的⽂件默认隐藏。
在命令中加⼊-a可以对隐藏⽂件进⾏操作。
#可以查看隐藏⽂件
ls -a /etc/skel
#可以复制隐藏⽂件
cp -a /etc/skel/. /
如果想将⼀个⽂件隐藏,只要在⽂件名之前加上“ . ”即可
#隐藏test⽂件
mv test .test
2 ⽤户Shell控制
linux adduser-s /sbin/nologin和/bin/false的区别
/bin/false 是最严格的禁⽌login选项,⼀切服务都不能⽤,
/sbin/nologin 只是不允许系统login,可以使⽤其他ftp等服务
如果想要⽤false在禁⽌login的同时允许ftp,则必须在/etc/shells⾥增加⼀⾏/bin/false。
知道了Linux⽤户管理最重要的两个⽂件就是/etc/passwd和/etc/shadow这两个⽂件。
其中/etc/passwd是⽤来存储登陆⽤户信息的,它的基本格式如下:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
由上⾯的格式可以看出,每⼀⾏代表⼀个⽤户的信息,⼀共包括7个字段的信息,每个字段的信息⽤冒号隔开。
这7个字段分别代表:
1. 账号名称:即登陆时的⽤户名
2. 密码:早期UNIX系统的密码是放在这个⽂件中的,但因为这个⽂件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了
3. UID:⽤户ID,每个账号名称对应⼀个UID,通常UID=0表⽰root管理员
4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是⽤来规范⽤户组信息的
5. ⽤户信息说明栏:⽤来解释这个账号是⼲什么的
6. 家⽬录:home⽬录,即⽤户登陆以后跳转到的⽬录,以root⽤户为例,/root是它的家⽬录,所以root⽤户登陆以后就跳转到/root⽬录这⾥
7. Shell:⽤户使⽤的shell,通常使⽤/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这⾥设置的,如果要想更改登陆后使⽤的shell,可以在这⾥修改。
另外⼀个很重要shell可以⽤来替代让账号⽆法登陆shell的命令,那就是/sbin/nologin,此时该⽤户只能使⽤ftp登录。
当我看到这⾥的时候,我就去登陆我们实验室的服务器,打开/etc/passwd这个⽂件,⾥⾯果然有很多的类似上⾯格式的⽤户账号信息。
由于我们实验室服务器开放了ftp服务,⽽我正好有⼀个ftp的账号,我看到我的账号信息是这样的
lxb:x:530:525::/opt/ftp:/sbin/nologin
通过上⾯的学习,我觉得它的意思⼤概是这样的,⽤户名是lxb,x表⽰密码经过加密放到/etc/shadow⽂件中了,UID是530,GID是525,访问的⽬录是/opt/ftp,我看了⼀下,这个⽬录下的内容正好是我登陆ftp后所看到的,⾄于最后⼀个/sbin/nologin,应该是登录时候使⽤的shell,但是它为什么是nologin呢,难道不让我登陆吗?
于是我⽤root权限登陆到⾥⾯,把后⾯的/sbin/nologin改成了/bin/bash,重新⽤ssh进⾏登陆,真的登陆进去了,⽽且登陆后的⽬录正好
是/opt/ftp。
修改⽤户的shell类型有两种⽅式:
1、编辑/etc/passwd ⽂件
vim /etc/passwd
找到要修改的⽤户,直接进⾏编辑即可。
2、使⽤命令修改
usermod -s /bin/bash cs408
usermod -s /sbin/nologin cs408 //限定⽤户cs408不能shell登录,只能ftp。