随着参与项目和工作经验的增加,越来越懂了之前学校里面老师的一句话:学好Linux系统,掌握常用的命令和脚本的编写是一件非常重要的技能。的确,当自己不再满足于只是做一个纯粹的编码人员的时候,就会越来越多的和服务器打交道,这也是成为架构师必定要踏上的一条道路。写这篇博文记录下自己在学习和应用中经常使用的一些命令,正所谓“学而时习之”,
一、用户篇
我们都知道Linux系统一大特点就是方便的多用户权限管理,不同的登录用户对不同的文件和执行程序有不同的权限,对于服务器维护者而言,设置并维护好系统的用户和组是非常重要的,下面是一些经常用到的用户相关的命令。
1. 增加用户:useradd [options] username
新增用户就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录shell等资源,该命令执行后会在/etc/passwd、/etc/shadow、/etc/group文件中添加一条记录,并在/var/spool/mail文件夹内新建一个以用户名命名的目录,用以存放用户的邮件,执行userdel删除用户并再次创建时提示“Creating mailbox file: File exists”就是因为没有把/var/spool/mail下面的用户目录删除掉的原因。
常用选项为:
useradd -m --create-home username eg: useradd -m admin 会在/home/下新建一个admin目录作为用户的登录目录
useradd -c --comment 注释性描述 username eg: useradd -c "admin user" admin 创建一个admin用户,注释为"admin user"
useradd -d --home 用户主目录 username eg: useradd -d /usr/admin admin 创建一个用户admin,登录目录为/usr/admin
useradd -g --gid 组名或组id username eg: useradd -g admin admin 创建一个用户admin,并把它加入到admin组中,该组必须已经存在
useradd -G --groups group1,group2,...groupn username eg:useradd -G test,develop 创建一个用户admin,附属组为test,develop
useradd -s shell文件 username eg:添加用户的同时指明用户的登录shell
2.删除用户:userdel [options] username
常用选项为:
userdel username 删除用户在系统主的记录,主要是/etc/passwd,/etc/shadow,/etc/group中的内容,但是用户主目录和邮件目录仍然存在
userdel -r username 用户主目录和用户邮件目录都会被删除
userdel -f username 强制删除用户,即使当前用户为登录用户,同时也会删除用户主目录和邮件目录,即使他们被其他用户引用
3.修改用户:usermod [options] username
常用选项为:-c -g -G -m -d -s -u -o等,同useradd表示的意义一样,可以为用户指定新的资源
4.密码管理 passwd [options] username
passwd -l 锁定口令,即禁用账号,仅管理员账号可用
passwd -u 口令解锁,仅管理员账号可用
passwd -d 删除账号登录口令。
如果默认用户名,则修改当前用户的口令。
6.用户组操作
groupadd -g gid groupname 添加组id为gid的用户组 eg: groupadd -g 2000 develop
groupdel groupname 删除用户组,若组内还有用户,则必须先删除组内用户
5.普通用户赋予sudo权限
一般来说使用root用户登录是很不安全的(权限太大),因此常需要新建一些普通用户登录系统进行操作,有些命令是必须具备sudo权限才可以使用的,这时就需要为当前的普通用户授权sudo权限。方法如下:
首先使用su root切换到root用户下,然后修改/etc/sudoers文件,由于系统默认sudoers文件为readonly,因此有两种方法,一种是使用chmod u+w sudoers命令修改文件为可写,编辑之后再执行chmod u-w sudoers去掉可写权限,另一种是直接使用visudo命令来编辑。
找到 root ALL=(ALL) ALL一行,在下面插入
username ALL=(ALL) ALL, 表示username 有sudo权限,需要口令验证
%groupname ALL=(ALL) ALL,表示groupname用户组下的用户都具有sudo权限,需要口令验证
%groupname ALL=(ALL) NOPASSWD:ALL, 表示groupname组下单用户都具有sudo权限,且不需要口令验证
然后保存并退出,再次登录普通用户就OK了。
用户篇先写到这,后面持续再更。