Sample code for 30+ languages & platforms
PureBasic

SFTP Get/Set File Permission

See more SFTP Examples

Demonstrates how to set the permissions of a file on the SFTP server.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkSFtp.pb"

Procedure ChilkatExample()

    success.i = 0

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    sftp.i = CkSFtp::ckCreate()
    If sftp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Connect to the SSH/SFTP server.  
    hostname.s = "sftp.example.com"
    port.i = 22
    success = CkSFtp::ckConnect(sftp,hostname,port)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Authenticate with the SSH server.  Chilkat SFTP supports
    ; both password-based authenication as well as public-key
    ; authentication.  This example uses password authenication.
    success = CkSFtp::ckAuthenticatePw(sftp,"myLogin","myPassword")
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; After authenticating, the SFTP subsystem must be initialized:
    success = CkSFtp::ckInitializeSftp(sftp)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Get the file permissions for the "hamlet.xml" file on the server.
    ; The hamlet.xml file is located in the qa_data directory found under the HOME directory of the SSH user account.
    ; We are passing the remote file path (we are not passing a file handle returned by a previous call to OpenFile).
    isHandle.i = 0
    followLinks.i = 1
    permVal.i = CkSFtp::ckGetFilePermissions(sftp,"qa_data/hamlet.xml",followLinks,isHandle)
    If permVal < 0
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    ; Note: Filesystem permissions on Linux/Unix/MacOSX are typically written in octal (POSIX file permissions).  For example 0644 is octal.
    ; To convert to decimal: octal 644 = 6*8^2 + 4*8 + 4 = 420 (decimal)
    ; 
    ; The server may return a permissions value (in octal) such as 100644.
    ; The "100" indicates the file type, such as regular file or directory. 

    ; Show the decimal value of the permissions
    Debug "decimal permissions value: " + Str(permVal)

    ; To set the file permissions, pass the integer value.
    ; Let's change the permissions to 0664, which is 6*8^2 + 6*8 + 4 = 436 (decimal)
    success = CkSFtp::ckSetPermissions(sftp,"qa_data/hamlet.xml",isHandle,436)
    If success <> 1
        Debug CkSFtp::ckLastErrorText(sftp)
        CkSFtp::ckDispose(sftp)
        ProcedureReturn
    EndIf

    Debug "Success."


    CkSFtp::ckDispose(sftp)


    ProcedureReturn
EndProcedure