Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases now! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Learning Linux Shell Scripting

You're reading from   Learning Linux Shell Scripting Leverage the power of shell scripts to solve real-world problems

Arrow left icon
Product type Paperback
Published in May 2018
Publisher Packt
ISBN-13 9781788993197
Length 332 pages
Edition 2nd Edition
Languages
Tools
Arrow right icon
Author (1):
Arrow left icon
Ganesh Sanjiv Naik Ganesh Sanjiv Naik
Author Profile Icon Ganesh Sanjiv Naik
Ganesh Sanjiv Naik
Arrow right icon
View More author details
Toc

Table of Contents (17) Chapters Close

Preface 1. Getting Started and Working with Shell Scripting FREE CHAPTER 2. Drilling Deep into Process Management, Job Control, and Automation 3. Using Text Processing and Filters in Your Scripts 4. Working with Commands 5. Exploring Expressions and Variables 6. Neat Tricks with Shell Scripting 7. Performing Arithmetic Operations in Shell Scripts 8. Automating Decision-Making in Scripts 9. Automating Repetitive Tasks 10. Working with Functions 11. Using Advanced Functionality in Scripts 12. System Startup and Customizing a Linux System 13. Pattern Matching and Regular Expressions with sed and awk 14. Taking Backup and Embedding Other Languages in Shell Scripts 15. Database Administration Using Shell Scripts 16. Other Books You May Enjoy

Working with permissions

The following are the types of permissions:

  • Read permission: The user can read or check the content of the file
  • Write permission: The user can edit or modify the file
  • Execute permission: The user can execute the file

Changing file permissions

The following are the commands for changing file permissions:

To check the file permission, enter the following command:

    $ ll file_name  

The file permission details are as seen in the following diagram:

In the preceding diagram, as we can see, permissions are grouped in owner-user, group, and other users' permissions. Permissions are of three types–read, write, and execute. As per the requirement, we may need to change the permissions of the various files.

The chmod command

We can change the file or directory permissions in the following two ways:

Technique one – the symbolic method

The following command will add the read/write and execute permissions to the file wherein u is for user, g is for group, and o is for others:

    $ chmod ugo+rwx file_name
  

Alternatively, you can use the following command:

    $ chmod +rwx file_name
  

Technique two – the numeric method

The following command will change the file permissions using the octal technique:

    $ chmod 777 file_name

The file permission 777 can be understood as 111 111 111, which corresponds
to the rwx.rwx.rwx permissions.

Setting umask

We will see how Linux decides the default permissions of the newly created file or folder:

    $ umask
    0002

The meaning of the preceding output is that, if we create a new directory, then, from the permissions of +rwx, the permission 0002 will be subtracted. This means that for a newly created directory, the permissions will be 775, or rwx rwx r-x. For a newly created file, the file permissions will be rw- rw- r--. By default, for any newly created text file, the execute bit will never be set. Therefore, the newly created text file and the directory will have different permissions, even though umask is the same.

Setuid

Another very interesting functionality is the setuid feature. If the setuid bit is set for a script, then the script will always run with the owner's privileges, irrespective of which user is running the script. If the administrator wants to run a script written by him by other users, then he can set this bit.

Consider either of the following situations:

    $ chmod u+s file_name
    $ chmod 4777 file 

The file permissions after any of the preceding two commands will be drwsrwxrwx.

Setgid

Similar to setuid, the setgid functionality gives the user the ability to run scripts with a group owner's privileges, even if it is executed by any other user:

    $ chmod g+s filename

Alternatively, you can use the following command:

    $ chmod 2777 filename

File permissions after any of the preceding two commands will be drwxrwsrwtx.

Sticky bit

The sticky bit is a very interesting functionality. Let's say, in the administration department, there are 10 users. If one folder has been set with sticky bit, then all other users can copy files to that folder. All users can read the files, but only the owner of the respective file can edit or delete the file. Other users can only read, but not edit or modify, the files if the sticky bit is set:

    $ chmod +t filename

Alternatively, you can use the following command:

    $ chmod 1777

File permissions after any of the preceding two commands will be drwxrwxrwt.

You have been reading a chapter from
Learning Linux Shell Scripting - Second Edition
Published in: May 2018
Publisher: Packt
ISBN-13: 9781788993197
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime